DXGKDDI_QUERY_DEVICE_DESCRIPTOR回调函数 (dispmprt.h)
DxgkDdiQueryDeviceDescriptor 函数为显示适配器的子设备或外部设备返回描述符, (通常为监视器) 连接到显示适配器的子设备。
语法
DXGKDDI_QUERY_DEVICE_DESCRIPTOR DxgkddiQueryDeviceDescriptor;
NTSTATUS DxgkddiQueryDeviceDescriptor(
[in] IN_CONST_PVOID MiniportDeviceContext,
[in] IN_ULONG ChildUid,
[in, out] INOUT_PDXGK_DEVICE_DESCRIPTOR DeviceDescriptor
)
{...}
参数
[in] MiniportDeviceContext
与显示适配器关联的上下文块的句柄。 显示微型端口驱动程序的 DxgkDdiAddDevice 函数之前向 DirectX 图形内核子系统提供了此句柄。
[in] ChildUid
唯一标识子设备的整数。 显示微型端口驱动程序的 DxgkDdiQueryChildRelations 函数之前向显示端口驱动程序提供此标识符。
[in, out] DeviceDescriptor
指向 DXGK_DEVICE_DESCRIPTOR 结构的指针。 调用方初始化 DescriptorLength 和 DescriptorBuffer 成员。 如果子设备的类型为 TypeVideoOutput,则调用方还会初始化 DescriptorOffset 成员。 返回时, 由 DescriptorBuffer 成员指向的调用方分配的缓冲区接收描述符。
返回值
DxgkDdiQueryDeviceDescriptor 返回以下值之一:
返回代码 | 说明 |
---|---|
STATUS_SUCCESS | 函数已成功返回设备描述符。 |
STATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED | 由 ChildUid 标识的 (载入) 子设备不支持描述符。 |
STATUS_MONITOR_NO_DESCRIPTOR | 由 ChildUid 标识的子设备连接到不支持 EDID 描述符的监视器。 |
STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA | 由 ChildUid 标识的子设备连接到支持 EDID 描述符的监视器,但描述符没有由 DeviceDescriptor 的 DescriptorOffset 和 DescriptorLengthmembers 指定的 EDID 扩展块。 |
注解
DxgkDdiQueryDeviceDescriptor 写入的字节数不得超过 DeviceDescriptor-DescriptorLength> 指定的字节数。
如果 ChildUid 标识的子设备的类型为 TypeVideoOutput, 则 DxgkDdiQueryDeviceDescriptor 将返回连接到输出的监视器的扩展显示标识数据 (EDID) 的一部分。 DeviceDescriptor-DescriptorOffset> 指定要返回的数据开头的 EDID 中的字节偏移量。
如果 ChildUid 标识的子设备不是视频输出, DxgkDdiQueryDeviceDescriptor 将返回通用设备描述符;也就是说,它填充 DXGK_GENERIC_DESCRIPTOR 结构的成员。
可以为一个子设备多次调用 DxgkDdiQueryDeviceDescriptor 函数。 对于具有连接监视器的子设备,显示端口驱动程序在初始化期间调用 DxgkDdiQueryDeviceDescriptor ,以获取监视器 EDID 的第一个 128 字节块。 稍后,监视器类函数驱动程序 (Monitor.sys) 调用 DxgkDdiQueryDeviceDescriptor 来获取所选部分, (包括该监视器的 EDID 的第一个 128 字节块) 。
应使 DxgkDdiQueryDeviceDescriptor 可分页。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
目标平台 | 桌面 |
标头 | dispmprt.h |
IRQL | PASSIVE_LEVEL |