HW_INITIALIZE Rückruffunktion (storport.h)
Die HwStorInitialize Routine initialisiert den Miniporttreiber nach einem Systemneustart oder Einem Stromausfall. Sie wird von StorPort aufgerufen, nachdem HwStorFindAdapter erfolgreich zurückgegeben wurde. HwStorInitialize initialisiert die 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.
Bemerkungen
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 nach Möglichkeit von HwStorPassiveInitializeRoutineausgeführt werden. Wenn ja, müssen Sie die passive Initialisierungsroutine über StorPortEnablePassiveInitializationaktivieren.
Wenn Unterbrechungen durch die Hardwareinitialisierung generiert werden, wird die HwStorInterrupt- Routine aufgerufen. In diesem Fall sollte die HwStorInitialize- Routine alle Daten einrichten, die HwStorInterrup t erwartet (einschließlich einer HwStorDpcRoutine), bevor die Hardware initialisiert wird.
Die folgenden Verantwortlichkeiten werden zwischen HwStorInitialize und HwStorPassiveInitializeRoutinegeteilt:
Initialisieren Sie Hardware für die HBA-Register und Puffer.
Initialisieren und Zuordnen aller DeviceExtension Felder.
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 zuerst eine Funktionsdeklaration bereitstellen, die den Typ der rückruffunktion identifiziert, die Sie definieren. Windows stellt eine Reihe von Rückruffunktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.
Um beispielsweise eine HwStorInitialize Rückrufroutine zu definieren, die MyHwInitializeheißt, verwenden Sie den HW_INITIALIZE Typ 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 Storport.h-Headerdatei definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen, die auf den Funktionstyp HW_INITIALIZE in der Headerdatei angewendet werden, verwendet 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_annotationsfinden Sie unter Annotating Function Behavior.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Header- | storport.h (include Storport.h) |
IRQL- | DIRQL (Siehe Abschnitt "Hinweise".) |