DevHelp AttachDD: Difference between revisions
Created page with "This service returns the address of the inter-device-driver communication (IDC) entry point to a specified device. ==Syntax== ===C=== <PRE> USHORT APIENTRY DevHelp_AttachDD ..." |
|||
Line 51: | Line 51: | ||
==Remarks== | ==Remarks== | ||
The ddname field contains the ASCII name of the target device driver. If the target device driver is a character device driver, the ddname must match the name in the target device driver's device header. | |||
The dd@ field must be 12 bytes in length. It has the following layout: | The dd@ field must be 12 bytes in length. It has the following layout: |
Revision as of 22:12, 23 August 2017
This service returns the address of the inter-device-driver communication (IDC) entry point to a specified device.
Syntax
C
USHORT APIENTRY DevHelp_AttachDD (NPSZ DDName, NPBYTE DDTable)
Assembler
MOV BX,OFFSET DS:ddname ; Name of other device driver MOV DI,OFFSET DS:dd@ ; Data area to hold address MOV DL,DevHlp_AttachDD CALL [Device_Help]
Parameters
C
- DDName(NPSZ) - input
- Name of the device driver
- DDTable(NPBYTE) Output
- Data area to hold address
Assembler
MOV BX,OFFSET DS:ddname ; Name of other device driver MOV DI,OFFSET DS:dd@ ; Data area to hold address MOV DL,DevHlp_AttachDD CALL [Device_Help]
Return Code
C
Success Indicator: 0 - The data area is filled in.
Possible errors: This function does not return specific error code. The carry flag if set indicates either Device Driver Not Found or No IDC Entry Point.
Assembler
'C' Clear if no error. The data area is filled in. 'C' Set if error. AX = Error code. Possible errors: This function does not return specific error code. The carry flag if set indicates either Device Driver Not Found or No IDC Entry Point.
Remarks
The ddname field contains the ASCII name of the target device driver. If the target device driver is a character device driver, the ddname must match the name in the target device driver's device header.
The dd@ field must be 12 bytes in length. It has the following layout:
Description Length Reserved WORD Reserved WORD Reserved WORD Protect Mode Offset of IDC Entry Point WORD Protect Mode CS Selector of IDC Entry Point WORD Protect Mode DS of IDC Device Driver WORD
The IDC entry point contains a ring 0 selector. Loadable physical device drivers (physical device drivers loaded with DEVICE= statement) initialize at ring 3, and cannot call an IDC entry point from their INIT routine. Base device drivers initialize at ring 0 and can call an IDC entry point from their INIT routine. Any physical device driver can call an IDC entry point when called with the 1Fh strategy command.
Before the physical device driver calls the IDC entry point, the device driver must verify that the entry point it received is nonzero for the CPU mode that calls the IDC entry point. When calling the IDC entry point of the target device driver, the caller must set the DS register for the target device driver. Other registers used in the calling convention must be defined by the target device driver.
The IDC entry point of the target device driver must follow the Far Call/Return model.
Note: See Physical Device Driver Load Module Layout for more information.
Example Code
C
#include "dhcalls.h" USHORT APIENTRY DevHelp_AttachDD (NPSZ DDName, NPBYTE DDTable)