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 标识的子设备具有类型为 TypeVideoOutput,DxgkDdiQueryDeviceDescriptor 返回连接到输出的监视器的扩展显示标识数据(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 |