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 ルーチンは、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 オペレーティング システムのドライバーを記述するための要件になります。
たとえば、MyHwDpcRoutine という名前の HwStorDpcRoutine コールバック ルーチン定義するには、次のコード例に示すように 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 を初期化するために呼び出すときは、HwStorDpcRoutine ルーチンへのポインターを使用して、StorPortInitializeDpc ルーチンの HwDpcRoutine パラメーターを読み込む必要があります。
DPC ルーチンの特定のインスタンスは、DPC ルーチンの他のインスタンスと同期することが保証されます。 DPC ルーチンは、呼び出しで適切なスピン ロックを取得することによって、ルーチンまたはルーチンと自身を同期できます。 DPC ルーチン内のスピン ロックの管理の詳細については、次を参照してください。
HwStorStartIoをする
StorPortAcquireSpinLockの
StorPortInitializeDpcの
StorPortIssueDpcの