==== KbdSynch ====
**Bindings**: [[synch#C bindings|C]], [[synch#MASM bindings|MASM]]
This call synchronizes access from a keyboard subsystem to the keyboard device driver. 
KbdSynch (IOWait) 
//IOWait// (**USHORT**) - input 
Wait for the bond. Values are: 
^Value ^Definition ^
|0 |Indicates the requestor does not wait for access to the device driver. |
|1 |Indicates the requestor waits for access to the device driver. |
//rc// (**USHORT**) - return 
Return code descriptions are: 
|0 |NO_ERROR |
|121 |ERROR_SEM_TIMEOUT |
**Remarks**
//KbdSynch// blocks all other threads within a session until return from the subsystem to the router. To ensure proper synchronization, //KbdSynch// should be issued by a keyboard subsystem if it intends to issue a //DosDevIOCtl// or access dynamically shared data. //KbdSynch// does not protect globally shared data from threads in other sessions. 
=== C bindings ===
#define INCL_KBD
USHORT  rc = KbdSynch(IOWait);
USHORT           IOWait;        /* Indicate if wait */
USHORT           rc;            /* return code */
=== MASM bindings ===
EXTRN  KbdSynch:FAR
INCL_KBD            EQU 1
PUSH   WORD    IOWait        ;Indicate if wait
CALL   KbdSynch
Returns WORD