HW_RESET_BUS Rückruffunktion (storport.h)
Die HwStorResetBus-Routine wird vom Porttreiber aufgerufen, um Fehlerbedingungen zu löschen.
Syntax
HW_RESET_BUS HwResetBus;
BOOLEAN HwResetBus(
PVOID DeviceExtension,
ULONG PathId
)
{...}
Parameter
DeviceExtension
Ein Zeiger auf den Miniporttreiber pro HBA-Speicherbereich.
PathId
Gibt den zurückzusetzenden SCSI-Bus an.
Rückgabewert
Wenn der Bus erfolgreich zurückgesetzt wurde, gibt HwStorResetBusTRUE zurück.
Hinweise
Der Name HwStorResetBus ist nur ein Platzhalter. Der eigentliche Prototyp dieser Routine ist in Storport.h wie folgt definiert:
typedef
BOOLEAN
HW_RESET_BUS (
_In_ PVOID DeviceExtension,
_In ULONG PathId
);
Der Porttreiber hält alle Geräte-E/A-Warteschlangen für den Adapter an und ruft dann die HwStorResetBus-Routine bei IRQL DISPATCH_LEVEL auf, nachdem die StartIo-Spinsperre abgerufen wurde. Ein Miniporttreiber ist für das Abschließen von SRBs verantwortlich, die HwStorStartIo während dieser Routine für PathId empfangen hat, und legt seine status bei Bedarf auf SRB_STATUS_BUS_RESET fest.
Wenn der Miniport mehrere Kanalunterstützung über PERF_CONFIGURATION_DATA angefordert hat, werden zusätzlich zur StartIo-Spin-Sperre alle Kanaltoken übernommen und nach der Rückgabe von HwStorResetBus freigegeben. Dadurch wird sichergestellt, dass während der Busrücksetzungsphase keine E/A an HwStorStartIo weitergeleitet werden.
Beispiele
Um eine HwStorResetBus-Rückruffunktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der Rückruffunktion identifiziert, die Sie definieren. 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 Voraussetzung für das Schreiben von Treibern für das Windows-Betriebssystem.
Um beispielsweise eine HwStorResetBus-Rückrufroutine namens MyHwResetBus zu definieren, verwenden Sie den typ HW_RESET_BUS , wie in diesem Codebeispiel gezeigt:
HW_RESET_BUS MyHwResetBus;
Implementieren Sie dann Ihre Rückrufroutine wie folgt:
_Use_decl_annotations_
BOOLEAN
MyHwResetBus (
_In_ PVOID DeviceExtension,
_In_ ULONG PahtId
);
{
...
}
Der HW_RESET_BUS Funktionstyp ist in der Storport.h-Headerdatei definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, müssen Sie der Funktionsdefinition die anmerkung Use_decl_annotations hinzufügen. Die Use_decl_annotations-Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den HW_RESET_BUS 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 (Storport.h einschließen) |
IRQL | DISPATCH_LEVEL (Siehe Abschnitt "Hinweise"). |