An asynchronous event is a request or a notification from the IOS to a driver that does not correspond to the normal processing of an I/O request. Asynchronous events can occur at any time: while registering the driver and while waiting for or processing I/O requests. The most common events are the events associated with driver registration, such as AEP_INITIALIZE, but other events can occur frequently. The following lists the possible asynchronous events:
AEP_1_SEC (8) | Notifies driver that one second has elapsed. |
AEP_2_SECS (9) | Notifies driver that two seconds have elapsed. |
AEP_4_SECS (10) | Notifies driver that four seconds have elapsed. |
AEP_ASSOCIATE_DCB (12) | Associates a logical DCB with a physical DCB. |
AEP_BOOT_COMPLETE (2) | Notifies driver to switch to run time operation. |
AEP_CONFIG_DCB (3) | Configures physical device. |
AEP_CREATE_VRP (18) | Notifies driver that a VRP has been created. |
AEP_DBG_DOT_CMD (11) | Notifies driver of parameters for .I debug command. |
AEP_DCB_LOCK (16) | Notifies driver that a logical dcb is about to be locked. |
AEP_DESTROY_VRP (19) | Notifies driver that a VRP has been deleted. |
AEP_DEVICE_INQUIRY (6) | Gets device identification data. |
AEP_HALF_SEC (7) | Notifies driver that 1/2 second has elapsed. |
AEP_INITIALIZE (0) | Initializes driver and interface. |
AEP_IOP_TIMEOUT (5) | Notifies driver that timeout member in an IOP has been decremented to zero. |
AEP_MOUNT_NOTIFY (17) | Notifies driver that a volume has been mounted. |
AEP_PEND_UNCONFIG_DCB (21) | Notifies driver that a DCB is about to be removed. |
AEP_REAL_MODE_HANDOFF (13) | Notifies driver that IFSMGR is about to hook in. |
AEP_REFRESH_DRIVE (20) | Directs driver to refresh drive data. |
AEP_SYSTEM_CRIT_SHUTDOWN (1) | Indicates a system critical shutdown. |
AEP_SYSTEM_SHUTDOWN (14) | Indicates a system shutdown. |
AEP_UNCONFIG_DCB (4) | Removes configuration of physical device. |
AEP_UNINITIALIZE (15) | Uninitializes driver and interface. |
The IOS notifies a driver of an asynchronous event by pushing the address of a structure, called an asynchronous event packet (AEP), on the stack and calling the driver's asynchronous event routine. The content and format of the structure varies from event to event, but all structures start with a standard header as defined by the AEP structure. This structure includes the AEP_func member that identifies the asynchronous event and the AEP_result member that the driver uses to indicate whether it processed the event or encountered an error. The IOS checks the value of AEP_result after the driver returns.
AEP