DosSMRegisterDD: Difference between revisions
No edit summary |
mNo edit summary |
||
Line 1: | Line 1: | ||
Allows a device driver to register itself with the Session Manager. | Allows a device driver to register itself with the Session Manager. | ||
==Syntax== | ==Syntax== | ||
DosSMRegisterDD (RegisterData) | |||
DosSMRegisterDD | |||
==Parameters== | ==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. | |||
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: | ||
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: | |||
'''Bit Description''' | '''Bit Description''' | ||
15-4 Reserved and must be set to zero. | 15-4 Reserved and must be set to zero. | ||
3 Session termination notification. Action = 8 | 3 Session termination notification. Action = 8 | ||
2 Post-Session restore notification. Action = 4 | 2 Post-Session restore notification. Action = 4 | ||
1 Post-Session save notification. Action = 2 | 1 Post-Session save notification. Action = 2 | ||
0 Pre-Session save notification. Action = 1 | 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. | 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. | ||
Line 31: | Line 20: | ||
==Return Code== | ==Return Code== | ||
rc (USHORT) - return | rc (USHORT) - return | ||
Return code descriptions are: | Return code descriptions are: | ||
* 418 ERROR_SMG_INVALID_CALL | |||
* 418 | * 461 ERROR_SMG_INVALID_DATA_LENGTH | ||
* 461 | * 515 ERROR_SMG_TOO_MANY_DDS | ||
* 515 | * 516 ERROR_SMG_INVALID_NOTIFICATION | ||
* 516 | |||
==Remarks== | ==Remarks== | ||
The Session | 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: | The notification IOCTL passed to the device driver has the following format: | ||
Size Definition | Size Definition | ||
Line 52: | Line 38: | ||
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 driver passes a bit map that informs the session manager when the device driver needs to be called. The possible phases are: | ||
* Before a session save | * Before a session save | ||
* After a session save (before a restore) | * After a session save (before a restore) | ||
* After a session restore | * After a session restore | ||
* After a session termination. | * After a session termination. | ||
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. | |||
==Bindings== | |||
===C=== | |||
== | |||
===C | |||
<PRE> | <PRE> | ||
#define INCL_DOSFILEMGR | #define INCL_DOSFILEMGR | ||
Line 67: | Line 51: | ||
USHORT rc = DosSMRegisterDD(RegisterData); | USHORT rc = DosSMRegisterDD(RegisterData); | ||
PREGISTERDATA RegisterData; | PREGISTERDATA RegisterData; /* Data packet */ | ||
USHORT | USHORT rc; /* return code */ | ||
</PRE> | </PRE> | ||
===MASM | ===MASM=== | ||
<PRE> | <PRE> | ||
EXTRN DosSMRegisterDD:FAR | EXTRN DosSMRegisterDD:FAR | ||
Line 82: | Line 66: | ||
Returns WORD | Returns WORD | ||
</PRE> | </PRE> | ||
[[Category:Dos]] | [[Category:Dos]] |
Revision as of 19:15, 1 March 2018
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:
Bit Description 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:
- Before a session save
- After a session save (before a restore)
- After a session restore
- After a session termination.
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.
Bindings
C
#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