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.
C++
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_opt_ UCHAR                  PathId
);
IoTargetRequestServiceTime Indicates to Storport the amount of time that was required to process a specified request.
C++
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ ULONGLONG              Duration,
  _In_ PSCSI_REQUEST_BLOCK    Srb
);
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
C++
VOID StorPortNotification(
  _In_    SCSI_NOTIFICATION_TYPE NotificationType,
  _In_    PVOID                  HwDeviceExtension,
  _Inout_ PLARGE_INTEGER         TickCount
);
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.
C++
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ PSCSI_REQUEST_BLOCK    Srb
);
RequestTimerCall Indicates that the miniport driver requires the port driver to call the miniport driver's HwStorTimer routine in the requested number of microseconds.
C++
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ PHW_TIMER              HwStorTimer,
  _In_ ULONG                  MiniportTimerValue
);
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.
C++
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_     PWNODE_EVENT_ITEM      WMIEvent,
  _In_     UCHAR                  PathId,
  _In_opt_ UCHAR                  TargetId,
  _In_opt_ UCHAR                  Lun
);
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.
C++
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_     UCHAR                  PathId,
  _In_opt_ UCHAR                  TargetId,
  _In_opt_ UCHAR                  Lun
);

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.

Arg1

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

StorPortInitialize

StorPortNotification for BufferOverrunDetected

StorPortNotification for BusChangeDetected

StorPortNotification for LinkDown

StorPortNotification for LinkUp

StorPortNotification for QueryTickCount

StorPortNotification for RequestComplete

StorPortNotification for RequestTimerCall

StorPortNotification for ResetDetected

StorPortNotification for WMIEvent

StorPortNotification for WMIReregister