共用方式為


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 時,它必須使用 HwStorDpcRoutine 例程的指標載入 StorPortInitializeDpc 例程的 HwDpcRoutine 參數。

DPC 例程的任何特定實例保證會與 DPC 例程的其他實例同步處理。 DPC 例程可以透過呼叫 StorPortAcquireSpinLock 來取得適當的微調鎖定,來與 HwStorStartIo 例程或 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的詳細資訊,請參閱 標註函式行為

規格需求

需求
目標平台 Universal
標頭 storport.h (包含 Storport.h)
IRQL DISPATCH_LEVEL (请参阅一节。)

另請參閱

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

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

HwStorInterrupt

HwStorStartIo

StorPortAcquireSpinLock

StorPortInitializeDpc

StorPortIssueDpc