WdfDeviceAssignS0IdleSettings 関数 (wdfdevice.h)
[KMDF と UMDF に適用]
WdfDeviceAssignS0IdleSettings メソッドは、デバイスがアイドル状態で、システムが動作 (S0) 状態のときにフレームワークが使用するドライバー提供の情報を提供します。
構文
NTSTATUS WdfDeviceAssignS0IdleSettings(
[in] WDFDEVICE Device,
[in] PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
);
パラメーター
[in] Device
フレームワーク デバイス オブジェクトへのハンドル。
[in] Settings
呼び出し元が指定した WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 構造体へのポインター。
戻り値
操作が成功した場合、 WdfDeviceAssignS0IdleSettings は STATUS_SUCCESSを返します。 その他の戻り値は次のとおりです。
リターン コード | 説明 |
---|---|
|
呼び出し元のドライバーは、デバイスの電源ポリシー所有者ではありません。 |
|
無効な 設定 値が検出されました。 |
|
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS構造体のサイズが正しくありません。 |
|
この値は、次のいずれかが発生した場合に返されます。
|
メソッドは、他の NTSTATUS 値を返す場合があります。
ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。
注釈
ドライバーは、WDF_DEVICE_POWER_POLICY_IDLE_SETTINGSの IdleTimeoutType メンバーを SystemManagedIdleTimeout または SystemManagedIdleTimeoutWithHint に設定する場合は、EvtDeviceD0Entry から戻る前に WdfDeviceAssignS0IdleSettings を呼び出す必要があります。 通常、ドライバーは最初に EvtDriverDeviceAdd から WdfDeviceAssignS0IdleSettings を呼び出します。
WdfDeviceAssignS0IdleSettings への追加の呼び出しは、いつでも行うことができます。 ただし、ドライバーは、WdfDeviceAssignS0IdleSettings への最初の呼び出しで IdleTimeoutType メンバーの値を設定した後、このメソッドの後の呼び出しでこの値を変更することはできません。
ドライバーが EvtDriverDeviceAdd で非同期通知に登録する場合 (たとえば、PoRegisterPowerSettingCallback または IoRegisterPlugPlayNotification を呼び出す場合)、ドライバーは登録したドライバー コールバック ルーチン内から WdfDeviceAssignS0IdleSettings を呼び出す必要があります。
詳細については、「 アイドル状態の電源ダウンのサポート」を参照してください。
例
次のコード例では、 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 構造体を初期化し、アイドルタイムアウト値を 10 秒に設定し、 WdfDeviceAssignS0IdleSettings を呼び出します。
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS idleSettings;
NTSTATUS status = STATUS_SUCCESS;
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(
&idleSettings,
IdleCanWakeFromS0
);
idleSettings.IdleTimeout = 10000;
status = WdfDeviceAssignS0IdleSettings(
device,
&idleSettings
);
if (!NT_SUCCESS(status)) {
return status;
}
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.0 |
最小 UMDF バージョン | 2.0 |
Header | wdfdevice.h (Wdf.h を含む) |
Library | Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 | DriverCreate(kmdf)、 FDOPowerPolicyOwnerAPI(kmdf)、 KmdfIrql(kmdf)、 KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf)、 NonFDONotPowerPolicyOwnerAPI(kmdf) |