HW_DPC_ROUTINE Rückruffunktion (storport.h)
Die HwStorDpcRoutine-Routine ist eine Routine, die mithilfe des DPC-Mechanismus (DeFerred Procedure Call) für die Ausführung bei DISPATCH IRQL zurückgestellt wird.
Syntax
HW_DPC_ROUTINE HwDpcRoutine;
void HwDpcRoutine(
PSTOR_DPC Dpc,
PVOID HwDeviceExtension,
PVOID SystemArgument1,
PVOID SystemArgument2
)
{...}
Parameter
Dpc
Ein Zeiger auf einen Storport-DPC-Kontext.
HwDeviceExtension
Ein Zeiger auf die Geräteerweiterung pro Adapter.
SystemArgument1
Ein Zeiger auf vom Aufrufer bereitgestellte Informationen.
SystemArgument2
Ein Zeiger auf vom Aufrufer bereitgestellte Informationen.
Rückgabewert
Keine
Bemerkungen
Wenn ein Miniporttreiber StorPortInitializeDpc aufruft , um einen DPC zu initialisieren, muss der HwDpcRoutine-Parameter der StorPortInitializeDpc-Routine mit einem Zeiger auf die HwStorDpcRoutine-Routine geladen werden.
Jede bestimmte instance einer DPC-Routine wird garantiert mit anderen Instanzen der DPC-Routine synchronisiert. Eine DPC-Routine kann sich selbst mit der HwStorStartIo-Routine oder mit der HwStorInterrupt-Routine synchronisieren, indem sie die entsprechende Spinsperre mit einem Aufruf von StorPortAcquireSpinLock erwirbt. Weitere Informationen zur Verwaltung von Drehsperren in DPC-Routinen finden Sie unter StorPortIssueDpc.
Der Name HwStorDpcRoutine ist nur ein Platzhalter. Der eigentliche Prototyp dieser Routine wird in storport.h wie folgt definiert:
typedef
BOOLEAN
HW_DPC_ROUTINE (
_In_ PSTOR_DPC Dpc,
_In_ PVOID HwDeviceExtension,
_In_opt_ PVOID SystemArgument1,
_In_opt_ PVOID SystemArgument2
);
Der Porttreiber ruft die HwStorDpcRoutine-Routine bei DISPATCH IRQL auf.
Beispiele
Um eine HwStorDpcRoutine-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 HwStorDpcRoutine-Rückrufroutine namens MyHwDpcRoutine zu definieren, verwenden Sie den HW_DPC_ROUTINE-Typ , wie in diesem Codebeispiel gezeigt:
HW_DPC_ROUTINE MyHwDpcRoutine;
Implementieren Sie dann Ihre Rückrufroutine wie folgt:
_Use_decl_annotations_
BOOLEAN
MyHwDpcRoutine (
_In_ PSTOR_DPC Dpc,
_In_ PVOID HwDeviceExtension,
_In_opt_ PVOID SystemArgument1,
_In_opt_ PVOID SystemArgument2
);
{
...
}
Der HW_DPC_ROUTINE 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_DPC_ROUTINE 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 | DISPATCH_LEVEL (siehe Abschnitt "Hinweise"). |
Weitere Informationen
Wenn ein Miniporttreiber aufruft, um einen DPC zu initialisieren, muss er den HwDpcRoutine-Parameter der StorPortInitializeDpc-Routine mit einem Zeiger auf die HwStorDpcRoutine-Routine laden.
Jede bestimmte instance einer DPC-Routine wird garantiert mit anderen Instanzen der DPC-Routine synchronisiert. Eine DPC-Routine kann sich mit der Routine oder mit der Routine synchronisieren, indem die entsprechende Spinsperre mit einem Aufruf von abgerufen wird. Weitere Informationen zur Verwaltung von Drehsperren in DPC-Routinen finden Sie unter .