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 値を返します。
リターン コード | 説明 |
---|---|
|
WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS構造体のサイズが正しくありません。 |
|
呼び出し元のドライバーは、デバイスの電源ポリシー所有者ではありません。 |
|
無効な 設定 値が検出されました。 |
このメソッドは、他の NTSTATUS 値を返す場合もあります。
注釈
WdfDeviceWdmAssignPowerFrameworkSettings メソッドは、単一コンポーネント デバイスにのみ適用されます。
このメソッドを呼び出す前に、クライアント ドライバーは最初に WdfDeviceAssignS0IdleSettings を正常に呼び出し、WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS構造体の IdleTimeoutType フィールドを SystemManagedIdleTimeout または SystemManagedIdleTimeoutWithHint に設定する必要があります。
ドライバーは、デバイスが初めて起動する前または初めて WdfDeviceWdmAssignPowerFrameworkSettings を呼び出す必要があります。 リソースの再調整が発生した場合など、デバイスを複数回起動できるため、 ドライバーは EvtDriverDeviceAdd または EvtDeviceSelfManagedIoInit 内からこのメソッドを呼び出す場合があります。 フレームワークは、デバイスが複数回起動された場合でも、これらの関数を 1 回だけ呼び出します。
または、ドライバーが WdfDeviceWdmAssignPowerFrameworkSettings を既に呼び出しているかどうかを追跡し、 EvtDevicePrepareHardware、 EvtDeviceD0Entry、 EvtDeviceD0EntryPostInterruptsEnabled、または 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