функция обратного вызова DXGKCB_ACQUIRE_POST_DISPLAY_OWNERSHIP (dispmprt.h)
В режиме ядра отображаются вызовы мини-драйвера (KMD) DxgkrnlDxgkCbAcquirePostDisplayOwnership для получения сведений о отображении из текущего устройства самообслуживания (POST) или ранее работающего драйвера WDDM.
Драйвер должен использовать эти сведения для оптимизации запроса на изменение начального режима после запуска устройства отображения.
Синтаксис
DXGKCB_ACQUIRE_POST_DISPLAY_OWNERSHIP DxgkcbAcquirePostDisplayOwnership;
NTSTATUS DxgkcbAcquirePostDisplayOwnership(
[in] HANDLE DeviceHandle,
[out] PDXGK_DISPLAY_INFORMATION DisplayInfo
)
{...}
Параметры
[in] DeviceHandle
Дескриптор, представляющий адаптер отображения. KmD ранее получил этот дескриптор в элементе
[out] DisplayInfo
Указатель на структуру DXGK_DISPLAY_INFORMATION, выделенную KMD. Если DxgkCbAcquirePostDisplayOwnership возвращает STATUS_SUCCESS, эта структура содержит сведения о отображении текущего устройства отображения, используемого для операций POST.
Возвращаемое значение
DxgkCbAcquirePostDisplayOwnership возвращает STATUS_SUCCESS, если это выполнено. В противном случае возвращается один из кодов ошибок, определенных в Ntstatus.h.
Замечания
Вызов DXGKCB_ACQUIRE_POST_DISPLAY_OWNERSHIP гарантирует правильность инициализации параметров отображения на основе текущей или последней конфигурации дисплея, особенно после запуска системы, событий подключаемого модуля устройства или возобновления режима гибернации.
Допустимые форматы цветов
Элемент DisplayInfo->ColorFormat должен содержать побитовое сочетание двух форматов D3DDDIFORMAT:
- D3DDDIFMT_X8R8G8B8
- D3DDDIFMT_A8R8G8B8
Если ОС возвращает формат D3DDDIFMT_R8G8B8, kmD должен игнорировать его.
Инициализация целевого объекта представления видео
Возможно, DisplayInfo->TargetId не инициализирован. В этом случае идентификатор текущего видео является D3DDDI_ID_UNINITIALIZED. Как правило, эта ситуация возникает после загрузки системы.
Аналогичным образом, возможно, DisplayInfo->элемент AcpiId не инициализирован. В этом случае идентификатор ACPI AcpiId имеет значение нуля.
В случае обновления драйвера до драйвера предыдущий драйвер предоставит целевой идентификатор и идентификатор ACPI.
Рекомендации по реализации
Начиная с WDDM 1.2, KMD должен следовать этим рекомендациям при вызове DxgkCbAcquirePostDisplayOwnership:
Точка входа для функции DxgkCbAcquirePostDisplayOwnership является частью структуры DXGKRNL_INTERFACE. Эта структура возвращается драйверу через параметр DxgkInterface при вызове функции драйвера DxgkDdiStartDevice.
KMD может при необходимости вызывать DxgkCbAcquirePostDisplayOwnership. Однако ОС по-прежнему может вызывать функцию KMDDxgkDdiStopDeviceAndReleasePostDisplayOwnership, даже если драйвер не вызывал DxgkCbAcquirePostDisplayOwnership, и драйвер должен соответствующим образом обрабатывать этот вызов. Если функция драйвера DxgkDdiStopDeviceAndReleasePostDisplayOwnership не завершена, ОС вызовет функцию dxgkDdiStopDevice.
KMD может вызывать DxgkCbAcquirePostDisplayOwnership, если устройство запущено в ответ на событие Plug and Play (PnP). В этом случае драйвер должен вызывать DxgkCbAcquirePostDisplayOwnership из контекста вызова функции DxgkDdiStartDevice.
KMD может вызывать DxgkCbAcquirePostDisplayOwnership, если устройство возобновляет powerDeviceD0 состояние питания после состояния гибернации. В этом случае драйвер должен вызывать DxgkCbAcquirePostDisplayOwnership из контекста вызова функции DxgkDdiSetPowerState.
KMD должен вызывать только функцию DxgkCbAcquirePostDisplayOwnership, если она работает по крайней мере под управлением Windows 8. KMD может вызывать RtlGetVersion для определения версии ОС.
DxgkCbAcquirePostDisplayOwnership может возвращать структуру с элементомDXGK_DISPLAY_INFORMATION Width, равным нулю. Это значение означает, что текущее устройство отображения не может выполнять операции POST, или ос не имеет текущих сведений о отображении для текущего устройства POST.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 8 (WDDM 1.2) |
минимальный поддерживаемый сервер | Windows Server 2012 |
целевая платформа | Настольный |
заголовка | dispmprt.h (include Dispmprt.h) |
IRQL | <= APC_LEVEL |