It is permissible to implement this function by returning 0 to indicate that the bits were not saved and, therefore, must be saved by the calling routine.
GreGetScreenChangeArea calls EnterDriver and performs entry checks. Using the MergeSeamlessSCAWithGlobalSCAs routine, GreGetScreenChangeArea then checks to see if there are any rectangles in the Seamless SCA (called scaSeamless). If there are, they are merged with all of the currently active SCAs. MergeSeamlessSCAWithGlobalSCAs will call AccumulateScreenBound for every rectangle in scaSeamless. At the end, the cRects field of scaSeamless is set to zero. See Seamless Windows Support in Distributed Console Access Facility (DCAF) Architecture for more information on Seamless Windows support.
Next, the linked list is tracked until the SCA to be queried is found or the end of the linked list is reached. If the SCA to be queried is found, GreCombineRectRegion is called for all the rectangles in the SCA and adds the rectangles to the region passed by the user. If the call is always successful, the cRects field of the SCA is set to zero, resetting the SCA. If the end of the list is reached without finding the SCA, a PMERR_NO_ERROR is logged and the call returns FALSE.
If there were no errors, GreGetScreenChangeArea calls ExitDriver and returns TRUE.