Table of Contents

This is part of Family API which allow to create dual-os version of program runs under OS/2 and DOS

Note: This is legacy API call. It is recommended to use 32-bit equivalent

2021/09/17 04:47 · prokushev · 0 Comments
2021/08/20 03:18 · prokushev · 0 Comments

VioScrLock

This call requests ownership of (locks) the physical display buffer.

Syntax

VioScrLock (WaitFlag, Status, VioHandle)

Parameters

Value Definition
0 Return if screen I/O not available
1 Wait until screen I/O is available
Value Definition
0 Lock successful
1 Lock unsuccessful (in the case of no wait)

Status is returned only when AX = 0.

Status = 1 may be returned only when WaitFlag = 0.

Return Code

rc (USHORT) - return

Return code descriptions are:

Remarks

This function call 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 a thread within the same process that issued VioScrLock.

Family API Considerations

Some options operate differently in the DOS mode than in the OS/2 mode. Therefore, the following restriction applies to VioScrLock when coding in the DOS mode:

The status always indicates the lock is successful (Return code = 0).

Bindings

C Binding

#define INCL_VIO
 
USHORT  rc = VioScrLock(WaitFlag, Status, VioHandle);
 
USHORT           WaitFlag;      /* Block or not */
PUCHAR           Status;        /* Lock status (returned) */
HVIO             VioHandle;     /* Video handle */
 
USHORT           rc;            /* return code */

MASM Binding

EXTRN  VioScrLock:FAR
INCL_VIO            EQU 1
 
PUSH   WORD    WaitFlag      ;Block or not
PUSH@  BYTE    Status        ;Lock status (returned)
PUSH   WORD    VioHandle     ;Video handle
CALL   VioScrLock
 
Returns WORD

Note

Text based on http://www.edm2.com/index.php/VioScrLock_(FAPI)