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

另请参阅

DXGKCB_SETPOWERCOMPONENTACTIVE

DxgkDdiStartDevice

DXGKRNL_INTERFACE