Freigeben über


StorPortNotification-Funktion (storport.h)

Der Miniporttreiber verwendet die StorPortNotification Routine, um den Storport-Treiber über bestimmte Ereignisse und Bedingungen zu benachrichtigen.

StorPortNotification verwendet abhängig vom angegebenen Benachrichtigungstyp eine variable Anzahl von Parametern.

Syntax

STORPORT_API VOID StorPortNotification(
  SCSI_NOTIFICATION_TYPE NotificationType,
  PVOID                  HwDeviceExtension,
  ...                    
);

Parameter

NotificationType

Gibt den Benachrichtigungstyp an, bei dem es sich um einen der folgenden Werte handeln kann.

Benachrichtigungstyp Beschreibung
BufferOverrunDetected Dieser Benachrichtigungstyp hat keine Argumente und gibt dem Miniporttreiber die Möglichkeit, das System zu überprüfen, wenn es eine Beschädigung erkennt.
BusChangeDetected Gibt an, dass ein Zielgerät möglicherweise zu einem dynamischen Bus hinzugefügt oder daraus entfernt wurde. Um diesen Benachrichtigungstyp zu verwenden, schließen Sie einen optionalen PathId-Parameter ein, um den SCSI-Port oder -Bus anzugeben, an dem die Änderung erkannt wurde.
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_opt_ UCHAR                  PathId
);
IoTargetRequestServiceTime Gibt an, dass Storport die Zeitspanne angibt, die zum Verarbeiten einer angegebenen Anforderung erforderlich war.
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ ULONGLONG              Duration,
  _In_ PSCSI_REQUEST_BLOCK    Srb
);

Dauer [in]

Die Dauer der Dienstzeit, die für Srb in 100 Nanosekundeneinheiten erforderlich ist.

Srb [in]

Der Anforderungsblock zum Festlegen der Dienstzeit.

LinkDown Gibt an, dass der Link abläuft und wahrscheinlich einige Zeit nach unten ist. StorPort hält den Adapter als Reaktion auf diese Benachrichtigung an.
Verbindung Gibt an, dass die Verknüpfung wiederhergestellt wurde. StorPort startet den Adapter neu, damit er den Vorgang als Reaktion auf diese Benachrichtigung fortsetzen kann. Miniport-Treiber sollten diese Benachrichtigung nur senden, wenn der Link deaktiviert ist.
QueryTickCount Dieser Benachrichtigungstyp gibt einen LARGE_INTEGER zurück, der den Wert aus KeQueryTickCountenthält. Der in TickCount zurückgegebene Wert ist die Anzahl der Intervalltimerunterbrechungen, die seit dem Start des Systems aufgetreten sind.
VOID StorPortNotification(
  _In_    SCSI_NOTIFICATION_TYPE NotificationType,
  _In_    PVOID                  HwDeviceExtension,
  _Inout_ PLARGE_INTEGER         TickCount
);
RequestComplete Gibt an, dass der angegebene SRB abgeschlossen ist. Nachdem diese Benachrichtigung gesendet wurde, besitzt der Porttreiber die Anforderung. Der Srb-Parameter stellt einen Zeiger auf den abgeschlossenen SCSI-Anforderungsblock dar. Der Miniporttreiber darf nicht versuchen, auf die Anforderung in Srb zuzugreifen, und er darf Srb nicht an eine andere Routine übergeben.
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ PSCSI_REQUEST_BLOCK    Srb
);
RequestTimerCall Gibt an, dass der Miniporttreiber den Porttreiber benötigt, um die HwStorTimer Routine des Miniporttreibers in der angeforderten Anzahl von Mikrosekunden aufzurufen.
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ PHW_TIMER              HwStorTimer,
  _In_ ULONG                  MiniportTimerValue
);

HwStorTimer [in]

Ein Zeiger auf eine Zeitgeberroutine, die nach dem in MiniportTimerValue angegebenen Zeitintervall aufgerufen wird.

MiniportTimerValue [in]

Gibt das Intervall an, nach dem die Timerroutine von HwStorTimer aufgerufen wird. Dies ist ein positiver Wert, der in Mikrosekunden angegeben ist. Der Timer wird durch einen Wert von 0 abgebrochen. Die Systemzeitgeberauflösung beträgt ca. 10 Millisekunden.

ResetDetected Gibt an, dass die HBA eine Zurücksetzung auf dem Bus erkannt hat. Nachdem diese Benachrichtigung gesendet wurde, ist der Miniporttreiber weiterhin für die Durchführung aktiver Anforderungen verantwortlich. Der Porttreiber verwaltet alle erforderlichen Buszurücksetzungsverzögerungen.
WMIEvent Gibt an, dass der Miniporttreiber ein Ereignis erkannt hat, für das mindestens ein WMI-Datenverbraucher registriert ist. Beachten Sie, dass der WmiEvent Parameter auf maximal 128 Bytes beschränkt ist. Wenn WmiEvent- größer als 128 Byte ist, wird sie ignoriert.
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
);

WMIEvent [in]

Ein Zeiger auf Ereignisstrukturen, die Informationen zu einem WMI-Ereignis enthalten, das vom Miniporttreiber erkannt wird.

PathId [in]

Gibt den SCSI-Port oder -Bus für die Anforderung an. Legen Sie diesen Parameter auf 0xff für ein Adaptergerät fest. Legen Sie andernfalls eine gültige Pfad-ID fest.

TargetId [in, optional]

Gibt den Zielcontroller oder das Gerät auf dem Bus an. Dieser Parameter wird nicht verwendet, wenn das Ereignis für einen Adapter verwendet wird.

Lun [in, optional]

Gibt die logische Einheitennummer des Geräts an. Dieser Parameter wird nicht verwendet, wenn das Ereignis für einen Adapter verwendet wird.

WMIReregister Gibt an, dass der Miniporttreiber die Datenelemente oder die Anzahl der Instanzen eines bestimmten Datenblocks geändert hat, der zuvor durch Aufrufen von IoWMIRegistrationControlregistriert wurde.
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_     UCHAR                  PathId,
  _In_opt_ UCHAR                  TargetId,
  _In_opt_ UCHAR                  Lun
);

PathId [in]

Gibt den SCSI-Port oder -Bus für die Anforderung an. Legen Sie diesen Parameter auf 0xff für ein Adaptergerät fest. Legen Sie andernfalls eine gültige Pfad-ID fest.

TargetId [in, optional]

Gibt den Zielcontroller oder das Gerät auf dem Bus an. Dieser Parameter wird nicht verwendet, wenn die Registrierung für einen Adapter erfolgt.

Lun [in, optional]

Gibt die logische Einheitennummer des Geräts an. Dieser Parameter wird nicht verwendet, wenn die Registrierung für einen Adapter erfolgt.

HwDeviceExtension

Ein Zeiger auf die Hardwaregeräteerweiterung. Dies ist ein HBA-Speicherbereich, den der Porttreiber im Namen des Miniporttreibers zuweist und initialisiert. Miniporttreiber speichern in der Regel HBA-spezifische Informationen in dieser Erweiterung, z. B. den Zustand der HBA und die zugeordneten Zugriffsbereiche für die HBA. Dieser Bereich steht dem Miniporttreiber unmittelbar nach dem Aufruf StorPortInitializezur Verfügung. Der Porttreiber gibt diesen Speicher frei, wenn es das Gerät entfernt.

...

Zusätzliche Parameter.

Rückgabewert

Nichts.

Bemerkungen

StorPortNotification ist eine polymorphe Funktion, die viele verschiedene Arten von Anforderungen verarbeitet, was es schwierig macht, in einer Weise zu kommentieren, die alle möglichen Verwendungen abdecken würde. Da StorPortNotification VOID zurückgibt, sollte das Scanmodul davon ausgehen, dass LockHandle wie gefragt erworben wurde.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- storport.h (include Storport.h)
Library Storport.lib
DDI-Complianceregeln StorPortNotification2(storport), StorPortStatusPending, StorPortTimer(storport)

Siehe auch

StorPortInitialize-