Generic Registration

The IOS carries out generic registration for type-specific drivers, vendor-specific drivers, volume tracking drivers, and class drivers. The IOS first sends a packet for an AEP_INITIALIZE function to the driver's asynchronous event routine. The packet consists of an AEP_bi_init structure in which the AEP_func and AEP_i_lgn members are set but all other members are undefined. The packet notifies the driver that registration has started. No action by the driver is required. The IOS ignores the result value returned by the driver.

Next, the IOS sends one or more AEP_CONFIG_DCB functions. The packet for this function consists of an AEP_dcb_config structure in which the AEP_func, AEP_i_lgn, AEP_d_c_dcb, and AEP_ddb members are set. The IOS sends the function once for each DCB structure in the internal DCB chain. The AEP_ddb member is set to the address of the DDB created by the driver at initialization.

The driver checks the DCB type to determine whether to process requests associated with this DCB. If the DCB has the correct type, the driver inserts itself in the calldown list of the DCB by using the ISP_INSERT_CALLDOWN function (sent to the IOS service routine whose address is given by the ILB_service_rtn member). The ISP_INSERT_CALLDOWN function places the address of the driver's calldown routine in the list.

To complete generic registration, the IOS sends the AEP_BOOT_COMPLETE function to all drivers.

See also AEP, DCB