次の方法で共有


WdfDeviceWdmAssignPowerFrameworkSettings 関数 (wdfdevice.h)

[KMDF と UMDF に適用]

WdfDeviceWdmAssignPowerFrameworkSettings メソッドは、単一コンポーネント デバイスの電源管理フレームワーク (PoFx) 設定を登録します。

構文

NTSTATUS WdfDeviceWdmAssignPowerFrameworkSettings(
  [in] WDFDEVICE                     Device,
  [in] PWDF_POWER_FRAMEWORK_SETTINGS PowerFrameworkSettings
);

パラメーター

[in] Device

PoFx 設定が指定されているフレームワーク デバイス オブジェクトへのハンドル。

[in] PowerFrameworkSettings

クライアント ドライバーの PoFx 設定を記述する WDF_POWER_FRAMEWORK_SETTINGS 構造体へのポインター。

戻り値

WdfDeviceWdmAssignPowerFrameworkSettings メソッドは、操作の成功または失敗を示す NTSTATUS 値を返します。

リターン コード 説明
STATUS_INFO_LENGTH_MISMATCH
WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS構造体のサイズが正しくありません。
STATUS_INVALID_DEVICE_REQUEST
呼び出し元のドライバーは、デバイスの電源ポリシー所有者ではありません。
STATUS_INVALID_PARAMETER
無効な 設定 値が検出されました。
 

このメソッドは、他の NTSTATUS 値を返す場合もあります。

注釈

WdfDeviceWdmAssignPowerFrameworkSettings メソッドは、単一コンポーネント デバイスにのみ適用されます。

このメソッドを呼び出す前に、クライアント ドライバーは最初に WdfDeviceAssignS0IdleSettings を正常に呼び出し、WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS構造体の IdleTimeoutType フィールドを SystemManagedIdleTimeout または SystemManagedIdleTimeoutWithHint に設定する必要があります。

ドライバーは、デバイスが初めて起動する前または初めて WdfDeviceWdmAssignPowerFrameworkSettings を呼び出す必要があります。 リソースの再調整が発生した場合など、デバイスを複数回起動できるため、 ドライバーは EvtDriverDeviceAdd または EvtDeviceSelfManagedIoInit 内からこのメソッドを呼び出す場合があります。 フレームワークは、デバイスが複数回起動された場合でも、これらの関数を 1 回だけ呼び出します。

または、ドライバーが WdfDeviceWdmAssignPowerFrameworkSettings を既に呼び出しているかどうかを追跡し、 EvtDevicePrepareHardwareEvtDeviceD0EntryEvtDeviceD0EntryPostInterruptsEnabled、または EvtDeviceSelfManagedIoRestart のいずれかのコールバック関数から呼び出すこともできます。

ドライバーが WdfDeviceWdmAssignPowerFrameworkSettings を複数回呼び出すと、フレームワークによって検証エラーが生成されます。

電源管理フレームワーク (PoFx) は、Windows 8以降でのみ使用できます。 PoFx をサポートしていないオペレーティング システムで実行している場合、 WdfDeviceWdmAssignPowerFrameworkSettings はアクションを実行せず、STATUS_SUCCESSを返します。

詳細については、「 機能電源状態のサポート 」および「 Power Management Framework の概要」を参照してください。

次のコード例では、ドライバーは 、WDF_POWER_FRAMEWORK_SETTINGS_INIT 関数を呼び出すことによって 、WDF_POWER_FRAMEWORK_SETTINGS 構造体を初期化します。 その後、ドライバーは構造体のメンバーの一部を手動で設定し、 WdfDeviceWdmAssignPowerFrameworkSettings を呼び出します。

NTSTATUS status;
WDF_POWER_FRAMEWORK_SETTINGS poFxSettings;

WDF_POWER_FRAMEWORK_SETTINGS_INIT(&poFxSettings);

poFxSettings.EvtDeviceWdmPostPoFxRegisterDevice = 
                        SingleCompWdmEvtDeviceWdmPostPoFxRegisterDevice;
poFxSettings.EvtDeviceWdmPrePoFxUnregisterDevice =
                        SingleCompWdmEvtDeviceWdmPrePoFxUnregisterDevice;

poFxSettings.Component = &component;
poFxSettings.ComponentIdleStateCallback = 
                        SingleCompWdmIdleStateCallback;
poFxSettings.PoFxDeviceContext = (PVOID) Device;
    
status = WdfDeviceWdmAssignPowerFrameworkSettings(Device, &poFxSettings);

要件

要件
サポートされている最小のクライアント Windows 8
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.11
最小 UMDF バージョン 2.33
Header wdfdevice.h (Wdf.h を含む)
Library Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 DriverCreate(kmdf)

こちらもご覧ください

EvtDeviceWdmPostPoFxRegisterDevice

EvtDeviceWdmPrePoFxUnregisterDevice

WDF_POWER_FRAMEWORK_SETTINGS

WDF_POWER_FRAMEWORK_SETTINGS_INIT