функция обратного вызова 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, но дескриптор не имеет блока расширения EDID, указанного дескриптором DescriptorOffset и DescriptorLengthmembers deviceDescriptor. |
Замечания
DxgkDdiQueryDeviceDescriptor никогда не должен записывать больше, чем количество байтов, указанных DeviceDescriptor->DescriptorLength.
Если дочернее устройство, определяемое ChildUid, имеет тип TypeVideoOutput, DxgkDdiQueryDeviceDescriptor возвращает часть данных расширенной идентификации дисплея (EDID) для монитора, подключенного к выходным данным. DeviceDescriptor—>DescriptorOffset указывает смещение байтов в EDID начала возвращаемых данных.
Если дочернее устройство, определяемое ChildUid, не является выходным видео, DxgkDdiQueryDeviceDescriptor возвращает универсальный дескриптор устройства; то есть он заполняет элементы структуры DXGK_GENERIC_DESCRIPTOR.
Функцию DxgkDdiQueryDeviceDescriptor можно вызывать несколько раз для одного дочернего устройства. Для дочернего устройства с подключенным монитором драйвер порта отображения вызывает DxgkDdiQueryDeviceDescriptor во время инициализации, чтобы получить первый 128-байтовый блок EDID монитора. Позже драйвер функции класса монитора (Monitor.sys) вызывает DxgkDdiQueryDeviceDescriptor для получения выбранных частей (включая первый блок 128-байтов) этого же монитора EDID.
DxgkDdiQueryDeviceDescriptor должен быть создан на страницу.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista |
целевая платформа | Настольный |
заголовка | dispmprt.h |
IRQL | PASSIVE_LEVEL |