From EDM2
Jump to: navigation, search

Requests ownership of (locks) the physical display buffer.


VioScrLock(WaitFlag, Status, VioHandle)


WaitFlag (ULONG) - input
Wait until screen I/O can take place.
Indicates whether the process should block until the screen I/O can take place.
0 - Return if screen I/O not available.
1 - Wait until screen I/O is available.
Status (PUCHAR) - output
Address of the lock status.
The lock status may be one of the following values:
0 - Lock successful.
1 - Lock unsuccessful (in the case of no wait).
Status is returned only when AX = 0. Status = 1 can be returned only when WaitFlag = 0.
VioHandle (HVIO) - input
VIO presentation-space handle.
Reserved. Must be 0.

Return Code

rc (APIRET) - returns
VioScrLock returns one of the following values:
  • 0 NO_ERROR


VioScrLock permits a process to determine if I/O to the physical screen buffer can take place. This prevents the process from writing to the physical buffer when the process is in the background. Processes must cooperate with the system in coordinating screen accesses.

Screen switching is disabled while the screen lock is in place. If a screen switch is suspended by a screen lock, and if the application holding the lock does not issue VioScrUnLock within a system-defined time limit, the screen switch occurs, and the process holding the lock is frozen in the background. A process should yield the screen lock as soon as possible, to avoid being frozen when running in the background. The timeout on the lock does not begin until a screen switch is requested.

When the screen lock is in effect and another thread in the same or different process (in the same session) issues VioScrLock, the second thread receives an error code. VioScrUnLock must be issued by the same thread that issued VioScrLock.