HW_DPC_ROUTINE Rückruffunktion (storport.h)
Die HwStorDpcRoutine Routine ist eine Routine, die für die Ausführung bei DISPATCH IRQL durch den DPC-Mechanismus (Deferred Procedure Call) verzögert 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
Nichts
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 Instanz einer DPC-Routine wird garantiert mit anderen Instanzen der DPC-Routine synchronisiert. Eine DPC-Routine kann sich mit der HwStorStartIo Routine oder mit der HwStorInterrupt Routine synchronisieren, indem sie die entsprechende Drehsperre mit einem Aufruf von StorPortAcquireSpinLockabrufen. Weitere Informationen zur Verwaltung von Drehsperren innerhalb von 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 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 HwStorDpcRoutine Rückrufroutine zu definieren, die MyHwDpcRoutineheißt, 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 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_DPC_ROUTINE 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".) |
Siehe auch
Wenn ein Miniporttreiber zum Initialisieren eines DPC aufruft, muss der HwDpcRoutine Parameter der StorPortInitializeDpc Routine mit einem Zeiger auf die HwStorDpcRoutine Routine geladen werden.
Jede bestimmte Instanz 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 sie die entsprechende Drehsperre mit einem Aufruf abruft. Weitere Informationen zur Verwaltung von Drehsperren in DPC-Routinen finden Sie unter .