Driver Initialization and Registration

To initialize the port driver, the IOS sends a SYS_DYNAMIC_DEVICE_INIT message to the driver's control procedure. When the driver receives the message, the driver must register with the IOS by passing the address of its DRP structure to the IOS_Register service. The port driver must set at least these DRP members:

DRP_LGN The load group number for the port driver should be one of these values: DRP_MISC_PD, DRP_ESDI_PD, DRP_ESDIEMUL_PD, DRP_ABIOS_PD, or DRP_ABIOS_PREMPT_PD.
DRP_aer A port driver must provide an asynchronous event routine. The routine must handle these asynchronous event functions: AEP_INITIALIZE, AEP_CONFIG_DCB, AEP_DEVICE_INQUIRY, AEP_IOP_TIMEOUT, and AEP_BOOT_COMPLETE.
DRP_ilb A port driver must provide an ILB structure to receive the addresses of the IOS service routines.

Most port drivers also set the DRP_eyecatch_str, DRP_ascii_name, DRP_revision, DRP_feature_code, and DRP_if_requirements members.

After the IOS_Register service returns, the port driver must check the DRP_reg_result member for the values DRP_REMAIN_RESIDENT or DRP_MINIMIZE to determine whether the registration was successful. If success, the port driver clears the carry flag before returning to indicate that it successfully processed the SYS_DYNAMIC_DEVICE_INIT message. If DRP_reg_result is any other value, an error occurred and the port driver must set the carry flag before returning.

See Also

DRP, IOS_Register