WdfInterruptReportActive 関数 (wdfinterrupt.h)
[KMDF にのみ適用]
WdfInterruptReportActive は、割り込みがアクティブであり、ドライバーが関連付けられている行で割り込み要求を処理する準備ができていることをシステムに通知します。
構文
void WdfInterruptReportActive(
[in] WDFINTERRUPT Interrupt
);
パラメーター
[in] Interrupt
フレームワーク割り込みオブジェクトへのハンドル。
戻り値
なし
解説
機能状態の電源管理を実装するドライバーのみが WdfInterruptReportActive を呼び出します。
ドライバーは、割り込みを作成した直後に WdfInterruptReportActive を呼び出す必要はありません。 ドライバーは、以前 に WdfInterruptReportInactive を呼び出した後にのみ 、WdfInterruptReportActive を呼び出す必要があります。
通常、ドライバーは、その ComponentActiveConditionCallback ルーチンから WdfInterruptReportActive を呼び出すか、State が 0 の場合は ComponentIdleStateCallback から呼び出します (完全に F0 状態であることを示します)。
ドライバーがWindows 8より前のオペレーティング システムでこのメソッドを呼び出すと、フレームワークの検証ツールによってエラーが報告されます。
詳細については、「 機能電源状態のサポート」を参照してください。
例
次の例は、ドライバーが KMDF ドライバーの ComponentIdleStateCallback ルーチンから WdfInterruptReportActive を呼び出す方法を示しています。 ドライバーは 、WdfDeviceWdmAssignPowerFrameworkSettings を呼び出すことによって、1 つのコンポーネントを登録します。
VOID
MyComponentIdleStateCallback(
_In_ PVOID Context,
_In_ ULONG Component,
_In_ ULONG State
)
{
PFDO_DEVICE_DATA deviceData;
PINTERRUPT_CONTEXT interruptContext;
deviceData = FdoGetData((WDFDEVICE)Context);
interruptContext = InterruptGetData(deviceData->Interrupt);
switch (State) {
case 0:
if (interruptContext->ReportedInactive) {
//
// the interrupt was reported inactive earlier. We need to report active now.
//
WdfInterruptReportActive(deviceData->Interrupt);
interruptContext->ReportedInactive = FALSE;
//
// Enable interrupt generation at hardware.
//
WdfInterruptAcquireLock(deviceData->Interrupt);
EnableInterruptInHardware();
WdfInterruptReleaseLock(deviceData->Interrupt);
}
break;
…
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 |
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.11 |
Header | wdfinterrupt.h (Wdf.h を含む) |
Library | Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。 |
IRQL | <=DISPATCH_LEVEL |
DDI コンプライアンス規則 | DriverCreate(kmdf) |