次の方法で共有


WdfDeviceInitSetPowerPolicyOwnership 関数 (wdfdevice.h)

[KMDF と UMDF に適用]

WdfDeviceInitSetPowerPolicyOwnership メソッドは、呼び出し元のドライバーが、指定されたデバイスの電源ポリシー所有者であるかどうかを確立します。

構文

void WdfDeviceInitSetPowerPolicyOwnership(
  [in] PWDFDEVICE_INIT DeviceInit,
  [in] BOOLEAN         IsPowerPolicyOwner
);

パラメーター

[in] DeviceInit

WDFDEVICE_INIT構造体への呼び出し元が指定したポインター。

[in] IsPowerPolicyOwner

呼び出し元のドライバーが電源ポリシー所有者かどうかを示すブール値。 TRUE の場合、呼び出し元のドライバーは電源ポリシー所有者です。 FALSE の場合、電源ポリシー所有者ではありません。

戻り値

なし

解説

フレームワーク ベースの関数ドライバーを作成する場合、フレームワークによって電源ポリシー所有者としてドライバーが自動的に確立されます。 (デバイスが未加工モードで動作する場合、バス ドライバーは既定の電源ポリシー所有者です)。

既定の電源ポリシー所有者を変更するには、次の 2 つのドライバーで WdfDeviceInitSetPowerPolicyOwnership を呼び出す必要があります。

  • 既定の電源ポリシー所有者は、IsPowerPolicyOwner をFALSE に設定して WdfDeviceInitSetPowerPolicyOwnership を呼び出す必要があります。
  • 電源ポリシー所有者になるドライバーは、IsPowerPolicyOwner をTRUE に設定して WdfDeviceInitSetPowerPolicyOwnership を呼び出す必要があります。
フレームワーク ベースのバス ドライバーまたはフィルター ドライバーを作成していて、デバイスが未加工モードで動作しない場合、 WdfDeviceInitSetPowerPolicyOwnership を呼び出さない限り、ドライバーは電源ポリシー所有者になりません。

各スタック内の 1 つのドライバーのみを電源ポリシー所有者にできます。そのため、IsPowerPolicyOwnerTRUE に設定された WdfDeviceInitSetPowerPolicyOwnership を呼び出すドライバーは 1 つだけであることを確認する必要があります。

ドライバーが WdfDeviceInitSetPowerPolicyOwnership を呼び出す場合は、 WdfDeviceCreate を呼び出す前に呼び出す必要があります。 詳細については、「 Framework デバイス オブジェクトの作成」を参照してください。

WdfDeviceInitSetPowerPolicyOwnership の呼び出しの詳細については、「Power Policy 所有権」を参照してください。

シリアル サンプル ドライバー のコード例を次に示します。 次の使用例は、レジストリ値を調べて、ドライバーを電源ポリシー所有者にする必要があるかどうかを判断します。 ドライバーを電源ポリシー所有者にしない場合、この例では WdfDeviceInitSetPowerPolicyOwnership を呼び出します。

//
// Call subroutine that checks a registry value.
//
SerialGetFdoRegistryKeyValue(
                             DeviceInit,
                             L"SerialRelinquishPowerPolicy",
                             &relinquishPowerPolicy
                             );
//
// If the registry value is TRUE, do not own power policy.
//
if(relinquishPowerPolicy) {
    WdfDeviceInitSetPowerPolicyOwnership(
                                         DeviceInit,
                                         FALSE
                                         );
}

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdfdevice.h (Wdf.h を含む)
Library Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 ChildDeviceInitAPI(kmdf)DeviceInitAPI(kmdf)DriverCreate(kmdf)FDOPowerPolicyOwnerAPI(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf)、 PdoDeviceInitAPI(kmdf)

こちらもご覧ください

WdfDeviceCreate