DevHelp ABIOSCommonEntry
Appearance
Description
This service starts an ABIOS common entry point according to the Advanced BIOS Transfer Convention.
Syntax
USHORT APIENTRY DevHelp_ABIOSCommonEntry (NPBYTE ReqBlk, USHORT Entry_Type)
Parameters
- ReqBlk (NPBYTE)
- - input - Offset in data segment to ABIOS request block
- Entry_Type (USHORT)
- - input - Specifies entry point
ABIOS_EP_START start ABIOS_EP_INTERRUPT interrupt ABIOS_EP_TIMEOUT timeout
Return Code
Success indicator: 0
Possible error:
ERROR_LID_DOES_NOT_EXIST (0x02) ERROR_ABIOS_NOT_PRESENT (0x03) ERROR_NOT_YOUR_LID (0x04) ERROR_INVALID_ENTRY_POINT (0x05)
Remarks
ABIOSCommonEntry sets up the stack for the call to one of the Advanced BIOS common entry points. It then invokes the indicated ABIOS common entry point. On return from the ABIOS function, ABIOSCommonEntry cleans up the stack before returning to the physical device driver.
The DS register must point to the physical device driver's data segment. If the DS register was used in a previous call to PhysToVirt, it must be reset to the data segment of the physical device driver.
Example Code
C
Calling Sequence in C
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ #include "abios.h" #include "dhcalls.h" USHORT APIENTRY DevHelp_ABIOSCommonEntry (NPBYTE ReqBlk, USHORT Entry_Type) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Assembler
Calling Sequence in Assembler
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ MOV SI,RB_Offset ; Offset in data segment to ABIOS request block MOV DH,Entry_Point ; Specifies entry point ; 0 = start ; 1 = interrupt ; 2 = timeout MOV DL,DevHlp_ABIOSCommonEntry CALL [Device_Help] ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Results in Assembler ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 'C' Clear if successful. The ABIOS common entry point is invoked. 'C' Set if error. AX = Error code. Possible errors: ERROR_LID_DOES_NOT_EXIST (0x02) ERROR_ABIOS_NOT_PRESENT (0x03) ERROR_NOT_YOUR_LID (0x04) ERROR_INVALID_ENTRY_POINT (0x05)