IAdapterPowerManagement::QueryDeviceCapabilities 方法(portcls.h)
QueryDeviceCapabilities
方法由 PortCls 调用,以响应即插即用 IRP_MN_QUERY_CAPABILITIES IRP。
语法
NTSTATUS QueryDeviceCapabilities(
[in] PDEVICE_CAPABILITIES PowerDeviceCaps
);
参数
[in] PowerDeviceCaps
指向指定设备功能的 DEVICE_CAPABILITIES 结构的指针
返回值
如果调用成功,QueryDeviceCapabilities
返回STATUS_SUCCESS。 否则,该方法将返回适当的错误代码。
言论
在驱动程序启动时调用此方法以获取设备的功能。 该方法将传递给适配器驱动程序一个功能结构,用于定义系统电源状态和设备电源状态之间的映射。 PortCls 将这些映射的默认值写入结构,然后再调用该方法。 在调用期间,适配器驱动程序有机会根据需要编辑映射。
通常,适配器驱动程序不应更改这些设置。 如果适配器驱动程序必须重写默认值,它可以将映射更改为更深层(电源不足)的设备电源状态,但不能更改为较弱(更电源)的设备电源状态。 例如,可以将 S1(PowerSystemSleeping1)的映射从 D1 更改为 D3,但不能更改为 D0。
若要填充设备的 PowerDeviceCaps 结构,适配器驱动程序应在设备启动时调用 PcRegisterAdapterPowerManagement 注册 IAdapterPowerManagement 接口。 作系统在调用适配器驱动程序的设备启动例程之前查询设备。
为了更改系统电源状态和设备电源状态之间的映射,适配器驱动程序更改 PowerDeviceCaps 结构中 DeviceState 数组中的值。 仅在必要时才应更改这些映射。 下面的代码示例演示如何将 D1 映射映射到 D3:
for (i=ULONG(PowerSystemWorking); i<=ULONG(PowerSystemShutdown); i++)
{
if (PowerDeviceCaps->DeviceState[i] == PowerDeviceD1)
{
PowerDeviceCaps->DeviceState[i] = PowerDeviceD3;
}
}
QueryDeviceCapabilities
方法的代码必须驻留在分页内存中。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | portcls.h (包括 Portcls.h) |