To initialize the VSD, 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 VSD must set at least these DRP members:
DRP_LGN | The load group number for the VSD should be one of these values: DRP_VSD_1, DRP_VSD_2, DRP_VSD_3, DRP_VSD_4, DRP_VSD_5, DRP_VSD_6, DRP_VSD_7, DRP_VSD_8, or DRP_VSD_9. |
DRP_aer | A VSD must provide an asynchronous event routine. The routine must handle these asynchronous event functions: AEP_CONFIG_DCB and AEP_BOOT_COMPLETE. |
DRP_ilb | A VSD must provide an ILB structure to receive the addresses of the IOS service routines. |
Most VSDs 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 VSD 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 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 driver must set the carry flag before returning.
DRP, IOS_Register