HW_INITIALIZE Rückruffunktion (storport.h)

Die HwStorInitialize-Routine initialisiert den Miniporttreiber nach einem Systemneustart oder Einem Stromausfall. Es wird von StorPort aufgerufen, nachdem HwStorFindAdapter erfolgreich zurückgegeben wurde. HwStorInitialize initialisiert den HBA und findet alle Geräte, die für den Miniporttreiber von Interesse sind.

Syntax

HW_INITIALIZE HwInitialize;

BOOLEAN HwInitialize(
  PVOID DeviceExtension
)
{...}

Parameter

DeviceExtension

Ein Zeiger auf den Miniporttreiber pro HBA-Speicherbereich.

Rückgabewert

Wenn die Initialisierung erfolgreich ist, gibt HwStorInitializeTRUE zurück.

Hinweise

Der Name HwStorInitialize ist nur ein Platzhalter. Der eigentliche Prototyp dieser Routine wird in Storport.h wie folgt definiert:

typedef
BOOLEAN
HW_INITIALIZE (
  _In_ PVOID  DeviceExtension
  );

Da HwStorInitialize bei DIRQL aufgerufen wird, sollte ein großteil des Initialisierungsprozesses von HwStorPassiveInitializeRoutine ausgeführt werden. Wenn ja, müssen Sie die passive Initialisierungsroutine über StorPortEnablePassiveInitialization aktivieren.

Wenn durch die Hardwareinitialisierung Interrupts generiert werden, wird die HwStorInterrupt-Routine aufgerufen. In diesem Fall sollte die HwStorInitialize-Routine alle Daten einrichten, die HwStorInterrupt erwartet (einschließlich einer HwStorDpcRoutine, sofern eine verwendet wird), bevor sie mit der Initialisierung der Hardware beginnt.

Die folgenden Zuständigkeiten werden von HwStorInitialize und HwStorPassiveInitializeRoutine gemeinsam genutzt:

  • Initialisieren Sie Hardware für die HBA-Register und Puffer.

  • Initialisieren und ordnen Sie alle DeviceExtension-Felder zu.

  • Richten Sie alle Ereignisse und DPCs ein, die vom Miniporttreiber verwendet werden, und initialisieren Sie sie.

Beispiele

Um eine HwStorInitialize-Rückruffunktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der von Ihnen definierten Rückruffunktion identifiziert. Windows bietet eine Reihe von Rückruffunktionstypen für Treiber. Das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen hilft der Codeanalyse für Treiber, der statischen Treiberüberprüfung (Static Driver Verifier , SDV) und anderen Überprüfungstools, Fehler zu finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine HwStorInitialize-Rückrufroutine namens MyHwInitialize zu definieren, verwenden Sie den typ HW_INITIALIZE , wie in diesem Codebeispiel gezeigt:

HW_INITIALIZE MyHwInitialize;

Implementieren Sie dann Ihre Rückrufroutine wie folgt:

_Use_decl_annotations_
BOOLEAN 
  MyHwInitialize( _In_ PVOID DeviceExtension )
  {
      ...
  }

Der HW_INITIALIZE Funktionstyp ist in der Headerdatei Storport.h definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, fügen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzu. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den HW_INITIALIZE Funktionstyp in der Headerdatei angewendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für Storport-Treiber. Informationen zu Use_decl_annotations finden Sie unter Verhalten von Funktionen mit Anmerkungen.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header storport.h (einschließlich Storport.h)
IRQL DIRQL (siehe Abschnitt "Hinweise".)

Weitere Informationen

HwStorDpcRoutine

HwStorFindAdapter

HwStorInterrupt

HwStorPassiveInitializeRoutine

StorPortEnablePassiveInitialization