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 に含まれる他の値のいずれかを返す場合があります。

注釈

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

  • フレームワークには、パラメーター値が格納されます。
  • UserControlOfWakeSettings パラメーターが WakeAllowUserControl に設定され、Enabled パラメーターが WdfUseDefault に設定されている場合、フレームワークはレジストリを読み取って、ユーザーがシステムのウェイクアップを有効にしているかどうかを確認します。
AssignSxWakeSettings の後続の呼び出し中に、フレームワークは UserControlOfWakeSettings パラメーターの値を格納しません。 言い換えると、フレームワークは、ドライバーが AssignSxWakeSettings を初めて呼び出す際に次の手順を実行しますが、後の呼び出しでは実行しません。
  • UserControlOfWakeSettings パラメーターの値を格納します。
  • Enabled パラメーターの値が WdfUseDefault の場合は、レジストリでユーザー設定を検索します。
DxState パラメーターに指定する値には、次の規則が適用されます。
  • 値を PowerDeviceD0 にすることはできません。
  • DevicePowerMaximum を指定した場合、フレームワークは、そのWDF_DEVICE_POWER_CAPABILITIES構造体の DeviceWake メンバーで提供されるデバイスのバスのカーネル モード ドライバーの値を使用します。
  • カーネル モード バス ドライバーのWDF_DEVICE_POWER_CAPABILITIES構造体の DeviceWake メンバーで、デバイス の電源状態よりも低いデバイスの電源状態 指定することはできません。 (つまり、バス ドライバーの 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
Header wudfddi.h (Wudfddi.h を含む)
[DLL] WUDFx.dll

こちらもご覧ください

IWDFDevice2

IWDFDevice2::AssignS0IdleSettings