WdfDeviceInitSetPowerPolicyOwnership 函数 (wdfdevice.h)

[适用于 KMDF 和 UMDF]

WdfDeviceInitSetPowerPolicyOwnership 方法确定调用驱动程序是否为指定设备的电源策略所有者。

语法

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

参数

[in] DeviceInit

调用方提供的指向 WDFDEVICE_INIT 结构的指针。

[in] IsPowerPolicyOwner

一个布尔值,指示调用驱动程序是否为电源策略所有者。 如果 为 TRUE,则调用驱动程序是电源策略所有者。 如果 为 FALSE,则它不是电源策略所有者。

返回值

备注

如果要编写基于框架的函数驱动程序,框架会自动将驱动程序建立为电源策略所有者。 (如果设备在原始模式下运行,则总线驱动程序是默认电源策略所有者。)

若要更改默认电源策略所有者,以下两个驱动程序必须调用 WdfDeviceInitSetPowerPolicyOwnership

  • 默认电源策略所有者必须在 IsPowerPolicyOwner 设置为 FALSE 的情况下调用 WdfDeviceInitSetPowerPolicyOwnership
  • 要成为电源策略所有者的驱动程序必须调用 WdfDeviceInitSetPowerPolicyOwnership ,并将 IsPowerPolicyOwner 设置为 TRUE
如果要编写基于框架的总线驱动程序或筛选器驱动程序,并且设备不以原始模式运行,则驱动程序将不是电源策略所有者,除非它调用 WdfDeviceInitSetPowerPolicyOwnership

每个堆栈中只能有一个驱动程序是电源策略所有者,因此必须确保只有一个驱动程序调用 WdfDeviceInitSetPowerPolicyOwnership 并将 IsPowerPolicyOwner 设置为 TRUE

如果驱动程序调用 WdfDeviceInitSetPowerPolicyOwnership,则必须在调用 WdfDeviceCreate 之前执行此操作。 有关详细信息,请参阅 创建框架设备对象

有关调用 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
标头 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