Freigeben über


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 .

HwStorInterrupt

HwStorStartIo-

StorPortAcquireSpinLock-

StorPortInitializeDpc-

StorPortIssueDpc