共用方式為


HW_DPC_ROUTINE回呼函式 (storport.h)

HwStorDpcRoutine 例程是一種例程,透過延遲過程調用 (DPC) 機制,延遲在 DISPATCH IRQL 執行。

語法

HW_DPC_ROUTINE HwDpcRoutine;

void HwDpcRoutine(
  PSTOR_DPC Dpc,
  PVOID HwDeviceExtension,
  PVOID SystemArgument1,
  PVOID SystemArgument2
)
{...}

參數

Dpc

Storport DPC 內容的指標。

HwDeviceExtension

每個配接器裝置延伸模組的指標。

SystemArgument1

呼叫端所提供資訊的指標。

SystemArgument2

呼叫端所提供資訊的指標。

傳回值

沒有

言論

當迷你埠驅動程式呼叫 StorPortInitializeDpc 以初始化 DPC 時,它必須載入 StorPortInitializeDpc 例程的 HwDpcRoutine 參數,並具有 HwStorDpcRoutine 例程的指標。

DPC 例程的任何特定實例保證會與 DPC 例程的其他實例同步處理。 DPC 例程可以與 HwStorStartIo 例程同步處理,或是透過呼叫 storPortAcquireSpinLock取得適當的微調鎖定,以取得適當的微調鎖定,以與HwStorInterrupt 例程同步處理。 如需 DPC 例程內微調鎖定管理的詳細資訊,請參閱 storPortIssueDpc

HwStorDpcRoutine 的名稱只是佔位符。 此例程的實際原型定義於 storport.h ,如下所示:

typedef
BOOLEAN
HW_DPC_ROUTINE (
  _In_  PSTOR_DPC Dpc,
  _In_  PVOID HwDeviceExtension,
  _In_opt_  PVOID SystemArgument1,
  _In_opt_  PVOID SystemArgument2
  );

埠驅動程式會在 DISPATCH IRQL 呼叫 HwStorDpcRoutine 例程。

例子

若要定義 HwStorDpcRoutine 回呼函式,您必須先提供函式宣告,以識別您要定義的回呼函式類型。 Windows 提供一組驅動程式的回呼函式類型。 使用回呼函式類型宣告函式有助於 驅動程式的程式代碼分析靜態驅動程式驗證器 (SDV)和其他驗證工具尋找錯誤,而且是撰寫 Windows作系統驅動程式的需求。

例如,若要定義名為 MyHwDpcRoutineHwStorDpcRoutine 回呼例程,請使用 HW_DPC_ROUTINE 類型,如下列程式代碼範例所示:

HW_DPC_ROUTINE MyHwDpcRoutine;

然後,實作回呼例程,如下所示:

_Use_decl_annotations_
BOOLEAN
MyHwDpcRoutine (
  _In_  PSTOR_DPC Dpc,
  _In_  PVOID HwDeviceExtension,
  _In_opt_  PVOID SystemArgument1,
  _In_opt_  PVOID SystemArgument2
  );
  {
      ...
  }

HW_DPC_ROUTINE 函式類型定義於 Storport.h 頭檔中。 若要在執行程式代碼分析工具時更準確地識別錯誤,請務必將 Use_decl_annotations 批註新增至函式定義。 Use_decl_annotations 批注可確保會使用套用至頭檔中 HW_DPC_ROUTINE 函式類型的批注。 如需函式宣告需求的詳細資訊,請參閱 使用 Storport 驅動程式的函式角色類型來宣告函式。 如需 Use_decl_annotations的相關信息,請參閱 批注函式行為

要求

要求 價值
目標平臺 普遍
標頭 storport.h (包括 Storport.h)
IRQL DISPATCH_LEVEL (請參閱一節。

另請參閱

當迷你埠驅動程式呼叫 以初始化 DPC 時,它必須載入 StorPortInitializeDpc 例程的 HwDpcRoutine 參數,並使用 HwStorDpcRoutine 例程的指標。

DPC 例程的任何特定實例保證會與 DPC 例程的其他實例同步處理。 DPC 例程可以藉由透過呼叫 取得適當的微調鎖定,來與例程同步處理本身與例程。 如需 DPC 例程內微調鎖定管理的詳細資訊,請參閱 。

HwStorInterrupt

HwStorStartIo

StorPortAcquireSpinLock

StorPortInitializeDpc

StorPortIssueDpc