At initialization, the driver calls the RegisterDeviceClass DevHlp to register its direct call command handler entry point with the kernel.
Processing
──────────────────────────────────────────────────────────────────────────
LDS SI, ADD_Name ; DS:SI = Ptr device driver to ASCIIZ name
; maximum of 16 chars
MOV AX,SEGMENT ADD_Function ; AX:BX = Ptr to driver's DirectCall
LEA BX,ADD_Function ; Command Handler
MOV DI,Device_Flags ; Must be 0 for adapter device drivers
MOV CX,Device_Class ; Must be 1 for adapter device drivers
MOV DL,DevHlp_RegisterADD
CALL [Device_Help]
──────────────────────────────────────────────────────────────────────────
Results
──────────────────────────────────────────────────────────────────────────
'C' Cleared if successful
AX = ADDHandle
'C' Set if error
AX = ERROR_NOT_ENOUGH_MEMORY
if CX out of range
if table is full
──────────────────────────────────────────────────────────────────────────