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 wird, gibt HwStorResetBusTRUEzurück.
Bemerkungen
Der Name HwStorResetBus ist nur ein Platzhalter. Der eigentliche Prototyp dieser Routine wird 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-Drehsperre erworben wurde. Ein Miniporttreiber ist für das Abschließen von SRBs verantwortlich, die von HwStorStartIo für PathId während dieser Routine empfangen wurden, und legt ihren Status bei Bedarf auf SRB_STATUS_BUS_RESET fest.
Zusätzlich zur StartIo-Spin-Sperre, die nach HwStorResetBus zurückgegeben wird, werden alle Kanaltoken durch PERF_CONFIGURATION_DATA abgerufen und nach der Rückgabe des Rückrufs freigegeben, wenn der Miniport mehrere Kanalunterstützung über PERF_CONFIGURATION_DATA angefordert hat. Dadurch wird sichergestellt, dass keine E/A-Geräte während der Zurücksetzungsbusphase an HwStorStartIo verteilt werden.
Beispiele
Um eine HwStorResetBus- 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 HwStorResetBus Rückrufroutine zu definieren, die MyHwResetBusheißt, verwenden Sie den HW_RESET_BUS Typ 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 wird in der Headerdatei Storport.h 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_RESET_BUS 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- | DISPATCH_LEVEL (Siehe Abschnitt "Hinweise".) |