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 结构的指针。 调用方初始化 DescriptorLengthDescriptorBuffer 成员。 如果子设备的类型为 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

另请参阅

DXGK_CHILD_DESCRIPTOR

DXGK_DEVICE_DESCRIPTOR

DxgkDdiQueryChildRelations

DxgkDdiQueryChildStatus