DXGKCB_POWERRUNTIMECONTROLREQUEST回调函数 (d3dkmddi.h)
内核模式显示微型端口驱动程序调用 DXGKCB_POWERRUNTIMECONTROLREQUEST 以与电源引擎插件(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
显示适配器的句柄。 显示微型端口驱动程序从 DeviceHandle 成员接收 DXGKRNL_INTERFACE 结构的句柄,该 DxgkDdiStartDevice 函数的调用。
[in] PowerControlCode
指向 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 |