DosSMRegisterDD

Allows a device driver to register itself with the Session Manager.

Syntax
DosSMRegisterDD (RegisterData)

Parameters

 * RegisterData (PREGISTERDATA) - input : Address of the structure containing the RegisterData necessary for this call.
 * Length (USHORT) : Length of the data structure in bytes including Length itself. Length is 8 for OS/2 version 1.2.
 * Notification (USHORT) : Bit map that informs the session manager when to issue the notification IOCTL to the device driver. The bits of this word are defined as follows:
 * 15-4 Reserved and must be set to zero.
 * 3 Session termination notification. Action = 8
 * 2 Post-Session restore notification. Action = 4
 * 1 Post-Session save notification. Action = 2
 * 0 Pre-Session save notification. Action = 1
 * Action is the unsigned integer in the Action field of the notification IOCTL. This tells the device driver what is happening. Notice that the integers correspond to bits 0 to 3 being set.
 * DDName (ULONG):Address of the device name, as an ASCIIZ string (ie. SCREEN$, KBD$, etc.).

Return Code

 * rc (USHORT) - return:Return code descriptions are:
 * 418 ERROR_SMG_INVALID_CALL
 * 461 ERROR_SMG_INVALID_DATA_LENGTH
 * 515 ERROR_SMG_TOO_MANY_DDS
 * 516 ERROR_SMG_INVALID_NOTIFICATION

Remarks
The Session Manager calls the registered device driver during a session switch, based on the specific form of notifications required.

The notification IOCTL passed to the device driver has the following format: Size   Definition WORD   DevIOCtl packet length, including the length itself WORD   Screen switch notification type WORD   Incoming session number WORD   Outgoing session number. The device driver passes a bit map that informs the session manager when the device driver needs to be called. The possible phases are: The device drivers must issue this API only during their initialization phase. After the session manager has been initialized, it rejects all further calls to this API, returning ERROR_SMG_INVALID_CALL.
 * Before a session save
 * After a session save (before a restore)
 * After a session restore
 * After a session termination.

C

 * 1) define INCL_DOSFILEMGR

USHORT rc = DosSMRegisterDD(RegisterData);

PREGISTERDATA RegisterData; /* Data packet */ USHORT       rc;            /* return code */ 

MASM
 EXTRN DosSMRegisterDD:FAR INCL_DOSFILEMGR    EQU 1

PUSH@ OTHER RegisterData        ;Data packet CALL  DosSMRegisterDD

Returns WORD 