StorPortNotification function
The miniport driver uses the StorPortNotification routine to notify the Storport driver of certain events and conditions.
The StorPortNotification routine takes a variable number of parameters depending on the notification type specified.
Syntax
STORPORT_API VOID StorPortNotification(
SCSI_NOTIFICATION_TYPE NotificationType,
PVOID HwDeviceExtension,
...
);
Parameters
NotificationType
Specifies the notification type, which can be one of the following values.
Notification type | Description | ||
---|---|---|---|
BufferOverrunDetected | This notification type has no arguments and gives the miniport driver an opportunity to bugcheck the system if it detects a corruption. | ||
BusChangeDetected |
Indicates that a target device might have been added or removed from a dynamic bus. To use this notification type, include an optional PathId parameter to indicate the SCSI port or bus where the change was detected.
|
||
IoTargetRequestServiceTime |
Indicates to Storport the amount of time that was required to process a specified request.
|
||
LinkDown | Indicates that the link is down and will probably be down for some time. StorPort will pause the adapter in response to this notification. | ||
LinkUp | Indicates that the link has been restored. StorPort restarts the adapter so that it can resume operation in response to this notification. Miniport drivers should not send this notification unless the link is down. | ||
QueryTickCount |
This notification type returns a LARGE_INTEGER that holds the value from KeQueryTickCount. The value returned in TickCount is the count of the interval timer interrupts that have occurred since the system was booted
|
||
RequestComplete |
Indicates that the given SRB has finished. After this notification is sent, the port driver owns the request. The Srb parameter represents a pointer to the completed SCSI request block.
|
||
RequestTimerCall |
Indicates that the miniport driver requires the port driver to call the miniport driver's HwStorTimer routine in the requested number of microseconds.
|
||
ResetDetected | Indicates that the HBA has detected a reset on the bus. After this notification is sent, the miniport driver is still responsible for completing any active requests. The port driver will manage all required bus-reset delays. | ||
WMIEvent |
Indicates that the miniport driver has detected an event for which one or more WMI data consumers are registered.
|
||
WMIReregister |
Indicates that the miniport driver has changed the data items or the number of instances of a given data block that was previously registered by calling IoWMIRegistrationControl.
|
HwDeviceExtension
A pointer to the hardware device extension. This is a per HBA storage area that the port driver allocates and initializes on behalf of the miniport driver. Miniport drivers usually store HBA-specific information in this extension, such as the state of the HBA and the mapped access ranges for the HBA. This area is available to the miniport driver immediately after the miniport driver calls StorPortInitialize. The port driver frees this memory when it removes the device.
arg3
Return Value
None.
Remarks
StorPortNotification is a polymorphic function that handles many different types of requests, making it difficult to annotate in a manner that would cover all possible uses. Because StorPortNotification returns VOID, the scanning engine should assume the LockHandle was acquired as asked.
Requirements
Target Platform | Universal |
Header | storport.h (include Storport.h) |
Library | Storport.lib |
DDI compliance rules | StorPortNotification2, StorPortStatusPending, StorPortTimer |
See Also
StorPortNotification for BufferOverrunDetected
StorPortNotification for BusChangeDetected
StorPortNotification for LinkDown
StorPortNotification for LinkUp
StorPortNotification for QueryTickCount
StorPortNotification for RequestComplete
StorPortNotification for RequestTimerCall
StorPortNotification for ResetDetected
Feedback
We'd love to hear your thoughts. Choose the type you'd like to provide:
Our feedback system is built on GitHub Issues. Read more on our blog.
Loading feedback...