EVT_WDF_DEVICE_ARM_WAKE_FROM_SX_WITH_REASON コールバック関数 (wdfdevice.h)
[KMDF と UMDF に適用]
ドライバーの EvtDeviceArmWakeFromSxWithReason イベント コールバック関数アーム (つまり、有効) は、低電力デバイス状態の間にスリープ解除信号をトリガーできるようにデバイスです。 スリープ解除信号により、デバイスは動作状態 (D0) に入り、システムが動作状態 (S0) に入ります。
構文
EVT_WDF_DEVICE_ARM_WAKE_FROM_SX_WITH_REASON EvtWdfDeviceArmWakeFromSxWithReason;
NTSTATUS EvtWdfDeviceArmWakeFromSxWithReason(
[in] WDFDEVICE Device,
[in] BOOLEAN DeviceWakeEnabled,
[in] BOOLEAN ChildrenArmedForWake
)
{...}
パラメーター
[in] Device
フレームワーク デバイス オブジェクトへのハンドル。
[in] DeviceWakeEnabled
TRUE の場合、システムをスリープ解除するデバイスの機能が有効になっていることを示すブール値。
[in] ChildrenArmedForWake
TRUE の場合、システムをスリープ解除する 1 つ以上の子デバイスの機能が有効になっていることを示すブール値。
戻り値
EvtDeviceArmWakeFromSxWithReason コールバック関数でエラーが発生しない場合は、NT_SUCCESS(status) が TRUE であるSTATUS_SUCCESSまたは別の状態値を返す必要があります。 それ以外の場合は、NT_SUCCESS(status) が FALSE の状態値を返す必要があります。
NT_SUCCESS(status) が FALSE の場合、フレームワークはドライバーの EvtDeviceDisarmWakeFromSx コールバック関数を呼び出します。 (フレームワークは、PnP マネージャーにデバイスの障害を報告しません。)
注釈
バージョン 1.7 以降のバージョンの KMDF では、 EvtDeviceArmWakeFromSx コールバック関数に加えて 、EvtDeviceArmWakeFromSx コールバック関数がサポートされています。
EvtDeviceArmWakeFromSxWithReason コールバック関数を登録するには、ドライバーで WdfDeviceInitSetPowerPolicyEventCallbacks を呼び出す必要があります。 ドライバーは、 EvtDeviceArmWakeFromSx コールバック関数または EvtDeviceArmWakeFromSxWithReason コールバック関数を登録できますが、両方は登録できません。
EvtDeviceArmWakeFromSxWithReason コールバック関数には、フレームワークが呼び出した理由をドライバーが判断できるようにする 2 つのパラメーターが用意されています。
- WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS構造体のEnabled メンバーが、デバイスがシステムをスリープ解除できることを示している場合、フレームワークは DeviceWakeEnabled パラメーターを TRUE に設定します。
- 1 つ以上のデバイスの子デバイスがシステムをスリープ解除でき、WDF_DEVICE_POWER_POLICY_WAKE_SETTINGSの ArmForWakeIfChildrenAreArmedForWake メンバーが TRUE に設定されている場合、フレームワークは ChildrenArmedForWake パラメーターを TRUE に設定します。
- ドライバーのデバイスは、システムをスリープ解除するために有効になっています。
- 1 つ以上のデバイスの子デバイスでシステムのスリープ解除が有効になっています。
- デバイスとその 1 つ以上の子デバイスの両方で、システムのスリープ解除が有効になっています。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.7 |
最小 UMDF バージョン | 2.0 |
Header | wdfdevice.h (Wdf.h を含む) |
IRQL | PASSIVE_LEVEL |