Freigeben über


StorPortNotification-Funktion (storport.h)

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

StorPortNotification akzeptiert 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, der einer der folgenden Werte sein kann.

Benachrichtigungstyp BESCHREIBUNG
BufferOverrunDetected Dieser Benachrichtigungstyp hat keine Argumente und gibt dem Miniporttreiber die Möglichkeit, das System zu überprüfen, wenn er eine Beschädigung erkennt.
BusChangeDetected Gibt an, dass ein Zielgerät möglicherweise 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 storport die Zeit an, 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 für Srb erforderlichen Dienstzeit in 100 Nanosekundeneinheiten.

Srb [in]

Der Anforderungsblock, für den die Dienstzeit festgelegt werden soll.

LinkDown Gibt an, dass der Link ausgefallen ist und wahrscheinlich für einige Zeit ausgefallen ist. StorPort hält den Adapter als Reaktion auf diese Benachrichtigung an.
Linkup Gibt an, dass der Link wiederhergestellt wurde. StorPort startet den Adapter neu, damit er den Betrieb als Reaktion auf diese Benachrichtigung fortsetzen kann. Miniport-Treiber sollten diese Benachrichtigung nur senden, wenn der Link ausgefallen ist.
QueryTickCount Dieser Benachrichtigungstyp gibt einen LARGE_INTEGER zurück, der den Wert von KeQueryTickCount enthä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 wurde. 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 aufgerufen wird, auf die HwStorTimer verweist. Dies ist ein positiver Wert, der in Mikrosekunden angegeben wird. Der Wert 0 bricht den Timer ab. Die Systemtimerauflösung beträgt ca. 10 Millisekunden.

ResetDetected (Zurücksetzen erkannt) Gibt an, dass der HBA eine Zurücksetzung für den Bus erkannt hat. Nachdem diese Benachrichtigung gesendet wurde, ist der Miniporttreiber weiterhin für das Abschließen aller aktiven Anforderungen verantwortlich. Der Porttreiber verwaltet alle erforderlichen Busrücksetzungsverzögerungen.
WMIEvent Gibt an, dass der Miniporttreiber ein Ereignis erkannt hat, für das ein oder mehrere WMI-Datenconsumer registriert sind. Beachten Sie, dass der WmiEvent-Parameter auf maximal 128 Bytes beschränkt ist. Wenn WmiEvent größer als 128 Bytes ist, wird es 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. Andernfalls legen Sie auf eine gültige Pfad-ID fest.

TargetId [in, optional]

Gibt den Zielcontroller oder das Zielgerät im Bus an. Dieser Parameter wird nicht verwendet, wenn das Ereignis für einen Adapter gilt.

Lun [in, optional]

Gibt die Nummer der logischen Einheit des Geräts an. Dieser Parameter wird nicht verwendet, wenn das Ereignis für einen Adapter gilt.

WMIReregister Gibt an, dass der Miniporttreiber die Datenelemente oder die Anzahl der Instanzen eines bestimmten Datenblocks geändert hat, der zuvor durch Aufrufen von IoWMIRegistrationControl registriert 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. Andernfalls legen Sie auf eine gültige Pfad-ID fest.

TargetId [in, optional]

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

Lun [in, optional]

Gibt die Nummer der logischen Einheit 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 zuordnet und initialisiert. Miniport-Treiber speichern in dieser Erweiterung in der Regel HBA-spezifische Informationen, z. B. den Status des HBA und die zugeordneten Zugriffsbereiche für den HBA. Dieser Bereich steht dem Miniporttreiber unmittelbar nach dem Aufrufen von StorPortInitialize durch den Miniporttreiber zur Verfügung. Der Porttreiber gibt diesen Arbeitsspeicher frei, wenn er das Gerät entfernt.

...

Zusätzliche Parameter.

Rückgabewert

Keine.

Hinweise

StorPortNotification ist eine polymorphe Funktion, die viele verschiedene Arten von Anforderungen verarbeitet, sodass es schwierig ist, Anmerkungen in einer Weise zu kommentieren, die alle möglichen Verwendungsmöglichkeiten abdeckt. Da StorPortNotification VOID zurückgibt, sollte die Scan-Engine davon ausgehen, dass lockHandle wie angefordert abgerufen wurde.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header storport.h (Storport.h einschließen)
Bibliothek Storport.lib
DDI-Complianceregeln StorPortNotification2(storport), StorPortStatusPending, StorPortTimer(storport)

Weitere Informationen

StorPortInitialize