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 结构的指针。 调用方初始化 描述符Length描述符Buffer 成员。 如果子设备 的类型为 typeVideoOutput,则调用方还会初始化 描述符Offset 成员。 返回时,由 描述符Buffer 指向的调用方分配的缓冲区 成员接收描述符。

返回值

DxgkDdiQueryDeviceDescriptor 返回以下值之一:

返回代码 说明
STATUS_SUCCESS 函数已成功返回设备描述符。
STATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED ChildUid 标识的 (onboard) 子设备不支持描述符。
STATUS_MONITOR_NO_DESCRIPTOR ChildUid 标识的子设备连接到不支持 EDID 描述符的监视器。
STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA ChildUid 标识的子设备连接到支持 EDID 描述符的监视器,但描述符没有 DeviceDescriptor 的 DescriptorOffset 和 DescriptorLengthmembers 指定的 EDID 扩展块。

言论

DxgkDdiQueryDeviceDescriptor 绝不必须写入超过 DeviceDescriptor指定的字节数 ->描述符Length

如果由 ChildUid 标识的子设备具有类型为 TypeVideoOutputDxgkDdiQueryDeviceDescriptor 返回连接到输出的监视器的扩展显示标识数据(EDID)的一部分。 DeviceDescriptor->描述符Offset 指定要返回的数据开始的 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