Инициализация связи с драйвером отображения User-Mode Direct3D
Чтобы инициализировать обмен данными с библиотекой DLL драйвера дисплея Microsoft Direct3D пользовательского режима DDI версии 11, среда выполнения Direct3D сначала загружает библиотеку DLL. Затем среда выполнения Direct3D вызывает функцию OpenAdapter драйвера отображения пользовательского режима через таблицу экспорта БИБЛИОТЕКи DLL, чтобы открыть экземпляр графического адаптера. Функция OpenAdapter — это только экспортируемая функция DLL.
При вызове функции OpenAdapter драйвера среда выполнения предоставляет функцию обратного вызова адаптера pfnQueryAdapterInfoCb в элементе pAdapterCallbacksструктуры D3DDDIARG_OPENADAPTER . Среда выполнения также предоставляет свою версию в элементах Interface и Version D3DDDIARG_OPENADAPTER. Драйвер отображения пользовательского режима должен убедиться, что он может использовать эту версию среды выполнения. Драйвер отображения пользовательского режима возвращает таблицу функций адаптера в элементе pAdapterFuncs D3DDDIARG_OPENADAPTER.
Драйвер дисплея пользовательского режима должен вызывать функцию обратного вызова адаптера pfnQueryAdapterInfoCb для запроса возможностей графического оборудования из драйвера минипорта дисплея.
Среда выполнения вызывает функцию CreateDevice драйвера дисплея пользовательского режима (одну из функций, относящихся к адаптеру драйвера), чтобы создать устройство отображения для обработки коллекции состояния отрисовки и завершения инициализации. После завершения инициализации среда выполнения Direct3D может вызывать функции, предоставляемые драйвером отображения, а драйвер отображения пользовательского режима — функции, предоставляемые средой выполнения.
Функция CreateDevice драйвера отображения пользовательского режима вызывается со структурой D3DDDIARG_CREATEDEVICE , члены которой настраиваются следующим образом для инициализации интерфейса драйвера отображения пользовательского режима:
Среда выполнения задает для interface версию интерфейса, которую среда выполнения требует от драйвера отображения пользовательского режима.
Среда выполнения задает для параметра Version номер, который драйвер может использовать для определения времени сборки среды выполнения. Например, драйвер может использовать номер версии, чтобы различать среду выполнения, выпущенную с Windows Vista, и среду выполнения, выпущенную с последующим пакетом обновления, который может содержать исправление, необходимое драйверу.
Среда выполнения задает hDevice , чтобы указать дескриптор, который драйвер должен использовать при обратном вызове драйвера в среду выполнения. Драйвер создает уникальный дескриптор и передает его обратно в среду выполнения в hDevice. Среда выполнения должна использовать возвращенный дескриптор hDevice в последующих вызовах драйвера.
Среда выполнения предоставляет таблицу функций обратного вызова для конкретного устройства в структуре D3DDDI_DEVICECALLBACKS , на которую указывает pCallbacks . Драйвер отображения пользовательского режима вызывает предоставляемые средой выполнения функции обратного вызова для доступа к службам режима ядра в драйвере мини-порта дисплея.
Драйвер отображения пользовательского режима возвращает таблицу своих функций для конкретных устройств в структуре D3DDDI_DEVICEFUNCS , на которую указывает pDeviceFuncs .
Примечание
Количество одновременно существующих устройств отображения (графических контекстов), ограничено только доступной системной памятью.