Поделиться через


функция обратного вызова DXGKDDI_START_DEVICE (dispmprt.h)

Функция DxgkDdiStartDevice подготавливает видеоадаптер для получения запросов ввода-вывода.

Синтаксис

DXGKDDI_START_DEVICE DxgkddiStartDevice;

NTSTATUS DxgkddiStartDevice(
  [in]  IN_CONST_PVOID MiniportDeviceContext,
  [in]  IN_PDXGK_START_INFO DxgkStartInfo,
  [in]  IN_PDXGKRNL_INTERFACE DxgkInterface,
  [out] OUT_PULONG NumberOfVideoPresentSources,
  [out] OUT_PULONG NumberOfChildren
)
{...}

Параметры

[in] MiniportDeviceContext

Дескриптор для блока контекста, связанного с видеоадаптером. Функция DxgkDdiAddDevice драйвера мини-порта дисплея ранее предоставляла этот дескриптор подсистеме графического ядра DirectX.

[in] DxgkStartInfo

Указатель на структуру DXGK_START_INFO , содержащую сведения, необходимые драйверу мини-порта дисплея для инициализации.

[in] DxgkInterface

Указатель на структуру DXGKRNL_INTERFACE , содержащую указатели на функции, реализованные подсистемой графического ядра DirectX, которые может вызывать драйвер мини-порта дисплея.

[out] NumberOfVideoPresentSources

Указатель на переменную ULONG , которая получает количество источников видеотрансляции, поддерживаемых видеоадаптером. Дополнительные сведения об источниках видеотрансляции см. в разделе Несколько мониторов и видеотрансляции сетей.

[out] NumberOfChildren

Указатель на переменную ULONG , которая получает общее количество устройств, которые являются дочерними элементами адаптера дисплея, представленного MiniportDeviceContext. Это число должно включать потенциальные дочерние устройства, а также дочерние устройства, которые присутствуют в настоящее время. Например, если при закреплении портативного компьютера будут доступны дополнительные видеовыходы, эти видеовыходы должны учитываться независимо от того, закреплен ли переносной компьютер в данный момент. Дополнительные сведения о дочерних устройствах см. в разделе Дочерние устройства видеоадаптера.

Возвращаемое значение

DxgkDdiStartDevice возвращает STATUS_SUCCESS в случае успешного выполнения; в противном случае возвращается один из кодов ошибок, определенных в ntstatus.h.

Комментарии

Функция DxgkDdiStartDevice должна выполнять следующие действия:

  • Сохраните указатели функций, предоставленные структурой DXGKRNL_INTERFACE , переданной параметру DxgkInterface . Также сохраните элемент DeviceHandleструктуры DXGKRNL_INTERFACE ; Этот дескриптор потребуется для обратного вызова подсистемы ядра графики DirectX.
  • Выделите структуру DXGK_DEVICE_INFO и вызовите DxgkCbGetDeviceInformation , чтобы заполнить элементы этой структуры, включая путь к реестру, PDO и список переведенных ресурсов для адаптера отображения, представленного MiniportDeviceContext. Сохраните выбранные элементы (которые понадобятся драйверу мини-порта для отображения позже) структуры DXGK_DEVICE_INFO в блоке контекста, представленном MiniportDeviceContext.
  • Сопоставьте ресурсы памяти с системным пространством, вызвав функцию DxgkCbMapMemory .
  • Инициализируйте блок контекста, представленный MiniportDeviceContext , с любым состоянием, необходимым для подготовки оборудования к приему запросов ввода-вывода.
  • Задайте для numberOfVideoPresentSources количество источников видеотрансляции, поддерживаемых видеоадаптером, представленным MiniportDeviceContext.
  • Задайте для numberOfChildren число устройств, которые являются (или могут стать) дочерними элементами видеоадаптера, представленного MiniportDeviceContext.
  • Включите прерывания для видеоадаптера, представленного MiniportDeviceContext.
Начиная с windows Display Driver Model (WDDM) 1.2, драйвер мини-порта дисплея вызывает функцию DxgkCbAcquirePostDisplayOwnership , чтобы получить сведения о режиме отображения, который ранее был задан встроенного ПО и системным загрузчиком. Если DxgkCbAcquirePostDisplayOwnership возвращает с STATUS_SUCCESS, драйвер определяет, нужно ли повторно инициализировать дисплей на основе сведений о режиме отображения, возвращенных с помощью параметра DisplayInfo . В противном случае драйвер не должен предполагать, что на устройстве в настоящее время включен какой-либо определенный режим отображения, и он должен инициализировать дисплей.

Функцию DxgkDdiStartDevice следует сделать страничной.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows Vista.
Целевая платформа Персональный компьютер
Верхняя часть dispmprt.h
IRQL PASSIVE_LEVEL

См. также раздел

DXGKRNL_INTERFACE

DXGK_DEVICE_INFO

DxgkCbAcquirePostDisplayOwnership

DxgkCbGetDeviceInformation

DxgkCbMapMemory

DxgkDdiAddDevice

DxgkDdiStopDevice