次の方法で共有


IWDFDevice2::AssignSxWakeSettings メソッド (wudfddi.h)

[警告: UMDF 2 は UMDF の最新バージョンであり、UMDF 1 よりも優先されます。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 には新機能が追加されておらず、Windows 10 の新しいバージョンでは UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは、UMDF 2 を使用する必要があります。 詳細については、「UMDFの概要」を参照してください。

AssignSxWakeSettings メソッドは、デバイスとシステムの両方が低電力状態にある間にスリープ解除信号をトリガーするデバイスの機能に関するドライバー提供の情報を提供します。

構文

HRESULT AssignSxWakeSettings(
  [in] DEVICE_POWER_STATE                    DxState,
  [in] WDF_POWER_POLICY_SX_WAKE_USER_CONTROL UserControlOfWakeSettings,
  [in] WDF_TRI_STATE                         Enabled
);

パラメーター

[in] DxState

DEVICE_POWER_STATE型の列挙子。システムの電源状態がスリープ解除可能な低電力状態に低下したときにデバイスが入力 、低 デバイスの電源状態を識別します。 DxState の値を PowerDeviceD0 することはできません。 DEVICE_POWER_STATE値は wdm.h で定義されます。

[in] UserControlOfWakeSettings

ユーザーがデバイスのウェイク設定を変更できるかどうかを示す WDF_POWER_POLICY_SX_WAKE_USER_CONTROL型指定された列挙子。

[in] Enabled

システムが低電力状態のときに、デバイスがシステムをスリープ解除できるかどうかを示す WDF_TRI_STATE型の列挙子 (つまり、システムを S0 に復元する)。 このメンバーには、次のいずれかの値を指定できます。

WdfTrue - システムのウェイクアップが有効になっています。

WdfFalse - システムのウェイクアップが無効になっています。

WdfUseDefault - システムのウェイクアップは既定で最初に有効になっています。ただし、UserControlOfWakeSettings メンバーが WakeAllowUserControl に設定されている場合、ユーザーの設定またはドライバーの INF ファイル は初期値をオーバーライドします。

システムのウェイクアップが有効になっていて、システムが低電力状態になりようとしている場合、フレームワークは、デバイスが低電力状態になる前に、ドライバーの IPowerPolicyCallbackWakeFromSx::OnArmWakeFromSx コールバック関数を呼び出します。

戻り値

AssignSxWakeSettings は、操作が成功した場合にS_OKを返します。 それ以外の場合、メソッドは次のいずれかの値を返す可能性があります。

リターン コード 形容
E_INVALIDARG
呼び出し元が入力パラメーターに無効な値を指定しました。
HRESULT_FROM_NT(STATUS_INVALID_DEVICE_REQUEST)
呼び出し元のドライバーは、デバイスの 電源ポリシー所有者ではありません。
HRESULT_FROM_NT(STATUS_POWER_STATE_INVALID)
DxState パラメーターは、無効なデバイスの電源状態を指定します。または、バス ドライバーは、デバイスがスリープ解除信号をトリガーできないことを示します。
 

このメソッドは、Winerror.h に含まれる他の値の 1 つを返す場合があります。

備考

ドライバーが AssignSxWakeSettings 初めて呼び出す場合、次のアクションが発生します。

  • フレームワークには、パラメーター値が格納されます。
  • UserControlOfWakeSettings パラメーターが WakeAllowUserControl に設定され、Enabled パラメーターが WdfUseDefault に設定されている場合、フレームワークはレジストリを読み取って、ユーザーがシステムのウェイクアップを有効にしているかどうかを確認します。
AssignSxWakeSettingsの後続の呼び出し中に、フレームワークは UserControlOfWakeSettings パラメーターの値を格納しません。 言い換えると、フレームワークは、ドライバーが初めて AssignSxWakeSettings 呼び出す際に次の手順を実行しますが、後の呼び出しでは実行されません。
  • UserControlOfWakeSettings パラメーターの値を格納します。
  • Enabled パラメーターの値が WdfUseDefault 場合は、レジストリでユーザー設定を検索します。
次の規則は、DxState パラメーターに指定する値に適用されます。
  • 値を PowerDeviceD0 することはできません。
  • DevicePowerMaximum 指定した場合、フレームワークは、DeviceWake その WDF_DEVICE_POWER_CAPABILITIES 構造体のメンバーで提供されるデバイスのバスのカーネル モード ドライバーの値を使用します。
  • DeviceWake カーネル モード バス ドライバーの WDF_DEVICE_POWER_CAPABILITIES 構造体のメンバーで、デバイスの電源状態よりも低いデバイスの電源状態を指定することはできません。 (つまり、バス ドライバーの DeviceWake 値が PowerDeviceD2 場合、関数ドライバーの DxState 値を PowerDeviceD3 することはできません)。
デバイスのウェイク機能を制御するレジストリ エントリの詳細については、「UMDFでのデバイスのアイドル状態とスリープ解除動作のユーザー制御」を参照してください。

デバイスのウェイク機能のサポートの詳細については、「UMDF ベースのドライバー でシステム Wake-Up をサポートするを参照してください。

次のコード例では、IWDFDevice2 インターフェイスを取得し、AssignSxWakeSettingsを呼び出します。

    IWDFDevice2 *pIWDFDevice2 = NULL;
    HRESULT hr;

    //
    // Get a pointer to the IWDFDevice2 interface.
    //
    hr = pIWDFDevice->QueryInterface(__uuidof(IWDFDevice2),
                                     (void**) &pIWDFDevice2);
    if (SUCCEEDED(hr)) 
    {
        hr = pIWDFDevice2->AssignSxWakeSettings(PowerDeviceMaximum,
                                                WakeAllowUserControl,
                                                WdfUseDefault);
    }
...
    SAFE_RELEASE(pIWDFDevice2);

必要条件

要件 価値
サポート終了 UMDF 2.0 以降では使用できません。
ターゲット プラットフォーム デスクトップ
UMDF の最小バージョン する 1.9
ヘッダー wudfddi.h (Wudfddi.h を含む)
DLL WUDFx.dll

関連項目

IWDFDevice2

IWDFDevice2::AssignS0IdleSettings