DXGKCB_POWERRUNTIMECONTROLREQUEST回调函数 (d3dkmddi.h)
内核模式显示微型端口驱动程序调用 DXGKCB_POWERRUNTIMECONTROLREQUEST 来与 Power Engine 插件 (PEP) 交换信息。
语法
DXGKCB_POWERRUNTIMECONTROLREQUEST DxgkcbPowerruntimecontrolrequest;
NTSTATUS DxgkcbPowerruntimecontrolrequest(
[in] IN_CONST_HANDLE hAdapter,
[in] IN LPCGUID PowerControlCode,
[in, optional] IN PVOID InBuffer,
[in] IN SIZE_T InBufferSize,
[in, optional] OUT PVOID OutBuffer,
[in] IN SIZE_T OutBufferSize,
[out] OUT PSIZE_T BytesReturned
)
{...}
参数
[in] hAdapter
显示适配器的句柄。 显示微型端口驱动程序在调用其 DxgkDdiStartDevice 函数时从 DXGKRNL_INTERFACE 结构的 DeviceHandle 成员接收句柄。
[in] PowerControlCode
指向 GUID 的指针,该 GUID 定义显示微型端口驱动程序的控制请求的含义。 有关详细信息,请参阅“备注”。
[in, optional] InBuffer
指向输入缓冲区的可选指针。
[in] InBufferSize
InBuffer 指向的可选缓冲区的大小(以字节为单位)。 如果未提供 InBuffer ,则设置为零。
[in, optional] OutBuffer
指向输出缓冲区的可选指针。
[in] OutBufferSize
OutBuffer 指向的可选缓冲区的大小(以字节为单位)。 如果未提供 OutBuffer ,则设置为零。
[out] BytesReturned
OutBuffer 指向的缓冲区中返回的实际字节数。 返回的值将为 <= OutBufferSize。
返回值
如果成功,DXGKCB_POWERRUNTIMECONTROLREQUEST 将返回STATUS_SUCCESS。 否则,它将返回 Ntstatus.h 中定义的错误代码之一。
注解
注意
为了避免可能的死锁,在返回此函数之前,请勿调用 DXGKCB_SETPOWERCOMPONENTACTIVE 函数。
DXGKCB_XXX 函数由 Dxgkrnl 实现。 若要使用此回调函数,请通过 DXGKRNL_INTERFACE调用 DxgkCbPowerRuntimeControlRequest。
尽管驱动程序可以使用 PowerControlCode 参数中的任何 GUID,但建议使用以下 在 D3dkmddi.h 中定义的 GUID 。 通过使用这些 GUID,显示端口驱动程序可以针对 Windows (ETW) 事件发出事件跟踪,这对于分析驱动程序性能问题很有用。
GUID | 含义 |
---|---|
GUID_DXGKDDI_POWER_VOLTAGE_UP | 提高电压。 |
GUID_DXGKDDI_POWER_VOLTAGE_DOWN | 降低电压。 |
GUID_DXGKDDI_POWER_VOLTAGE | 更改电压,但驱动程序不知道更改是增加还是减少。 |
GUID_DXGKDDI_POWER_CLOCK_UP | 增加时钟设置。 |
GUID_DXGKDDI_POWER_CLOCK_DOWN | 降低时钟设置。 |
GUID_DXGKDDI_POWER_CLOCK | 更改时钟设置,但驱动程序不知道更改是增加还是减少。 |
GUID_DXGKDDI_POWER_BANDWIDTH_UP | 增加带宽。 |
GUID_DXGKDDI_POWER_BANDWIDTH_DOWN | 降低带宽。 |
GUID_DXGKDDI_POWER_BANDWIDTH | 更改带宽,但驱动程序不知道更改是增加还是减少。 |
这些 GUID 并不意味着显示微型端口驱动程序和 PEP 之间存在任何通信协议,也不意味着在显示微型端口驱动程序和 PEP 之间可以传递的值存在任何限制。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8 (WDDM 1.2) |
最低受支持的服务器 | Windows Server 2012 |
目标平台 | 桌面 |
标头 | d3dkmddi.h (包括 D3dkmddi.h) |
IRQL | <=DISPATCH_LEVEL |