次の方法で共有


PoSetDeviceBusyEx 関数 (wdm.h)

PoSetDeviceBusyEx ルーチンは、指定されたアイドル 状態のカウンターに関連付けられているデバイスがビジー状態であることを電源マネージャーに通知します。

構文

void PoSetDeviceBusyEx(
  [in, out] PULONG IdlePointer
);

パラメーター

[in, out] IdlePointer

アイドル 状態のカウンターへのポインター。 これは、 以前に PoRegisterDeviceForIdleDetection ルーチンによって返されたポインター値です。 PoRegisterDeviceForIdleDetectionNULL ポインターを返す可能性があるため、呼び出し元は PoSetDeviceBusyEx を呼び出す前に、ポインターが NULL 以外であることを確認する必要があります。

戻り値

なし

解説

このルーチンは、 PoSetDeviceBusy マクロの直接の置き換えです。 Windows Vista Service Pack 1 (SP1) 以降のバージョンの Windows 用の新しいドライバー コードを作成する場合は、PoSetDeviceBusy ではなく、PoSetDeviceBusyEx を呼び出します。

ドライバーは 、PoSetDeviceBusyEx および PoRegisterDeviceForIdleDetection ルーチンを呼び出して、デバイスのシステム アイドル検出を有効にします。 アイドル状態の検出用に登録されているデバイスが、ドライバーが指定したタイムアウト期間にわたってアイドル状態のままである場合、電源マネージャーは IRP_MN_SET_POWER 要求を送信して、デバイスを要求されたスリープ状態にします。

PoSetDeviceBusyEx は、電源マネージャーがアイドル状態のカウントダウンを再起動できるように、デバイスがビジーであることを報告します。 デバイスがスリープ状態の場合、 PoSetDeviceBusyEx はデバイスの状態を変更しません。 つまり、システムがデバイスを起動する IRP_MN_SET_POWER 要求を送信することはありません。

PoSetDeviceBusyEx は、アイドル 状態のカウンターのタイムアウト期間と比較して比較的短い I/O 操作で使用するように設計されています。 この期間を超える可能性のある操作が長い場合は、代わりに PoStartDeviceBusy ルーチンと PoEndDeviceBusy ルーチンを使用してください。

簡単な I/O 操作に対して複数の要求を行うドライバーは、そのドライバーが行うすべての I/O 要求に対して PoSetDeviceBusyEx を呼び出す必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista SP1 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL 任意のレベル

こちらもご覧ください

IRP_MN_SET_POWER

PoEndDeviceBusy

PoRegisterDeviceForIdleDetection

PoSetDeviceBusy

PoStartDeviceBusy