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


Инициализация взаимодействия с Direct3D версии 10 DDI

Чтобы инициализировать взаимодействие с библиотекой DLL драйвера отображения пользовательского режима DDI версии 10, среда выполнения Direct3D версии 10 сначала загружает библиотеку DLL, если библиотека DLL еще не загружена. Далее среда выполнения Direct3D вызывает функцию OpenAdapter10 драйвера отображения пользовательского режима через таблицу экспорта DLL, чтобы открыть экземпляр графического адаптера. Функция OpenAdapter10 является единственной экспортируемой функцией Direct3D версии 10 библиотеки DLL.

При вызове функции OpenAdapter10 драйвера среда выполнения предоставляет функцию обратного вызова адаптера pfnQueryAdapterInfoCb в элементе pAdapterCallbacks структуры D3D10DDIARG_OPENADAPTER . Среда выполнения также предоставляет свою версию в элементах Interface и Version D3D10DDIARG_OPENADAPTER. Драйвер отображения пользовательского режима должен убедиться, что он может использовать эту версию среды выполнения. Драйвер отображения пользовательского режима не должен завершаться ошибкой в более новых версиях среды выполнения, так как новые версии среды выполнения могут использовать предыдущие версии DDI и, следовательно, могут правильно взаимодействовать с драйверами, реализующими эти предыдущие версии DDI. Драйвер отображения пользовательского режима возвращает таблицу функций адаптера в элементе pAdapterFuncs D3D10DDIARG_OPENADAPTER.

Драйвер дисплея пользовательского режима должен вызывать функцию обратного вызова адаптера pfnQueryAdapterInfoCb для запроса возможностей графического оборудования из драйвера мини-порта дисплея.

Среда выполнения вызывает функцию CreateDevice(D3D10) драйвера отображения пользовательского режима (одну из функций адаптера драйвера) для создания устройства отображения для обработки коллекции состояния отрисовки и завершения инициализации. После завершения инициализации среда выполнения Direct3D версии 10 может вызывать функции Direct3D версии 10, предоставляемые драйвером дисплея, а драйвер отображения пользовательского режима может вызывать функции, предоставляемые средой выполнения.

Функция CreateDevice(D3D10) драйвера отображения пользовательского режима вызывается с D3D10DDIARG_CREATEDEVICE структурой, члены которой настраиваются следующим образом для инициализации драйвера отображения пользовательского режима DDI версии 10:

  • Среда выполнения задает для параметра Interface версию интерфейса, требуемую средой выполнения от драйвера отображения пользовательского режима.

  • Среда выполнения задает для параметра Version номер, который драйвер может использовать для определения времени сборки среды выполнения. Например, драйвер может использовать номер версии, чтобы различать среду выполнения, выпущенную в Windows Vista, и среду выполнения, выпущенную с последующим пакетом обновления, который может содержать исправление, необходимое драйверу.

  • Среда выполнения задает hRTDevice , чтобы указать дескриптор, который драйвер должен использовать при обратном вызове драйвера в среду выполнения.

  • Среда выполнения задает hDrvDevice , чтобы указать дескриптор, который среда выполнения использует в последующих вызовах драйвера.

  • Среда выполнения предоставляет таблицу функций обратного вызова для конкретного устройства в структуре D3DDDI_DEVICECALLBACKS, на которую указывает pKTCallback. Драйвер отображения пользовательского режима вызывает функции обратного вызова, предоставляемые средой выполнения, для доступа к службам режима ядра в драйвере мини-порта дисплея.

  • Драйвер отображения пользовательского режима возвращает таблицу своих функций, относящихся к устройству, в структуре D3D10DDI_DEVICEFUNCS , на которую указывает pDeviceFuncs .

  • Среда выполнения предоставляет DXGI_DDI_BASE_ARGS структуру, на которую указывает DXGIBaseDDI . Среда выполнения и драйвер отображения пользовательского режима предоставляют DDI инфраструктуры графики DirectX для этой структуры.

  • Среда выполнения задает hRTCoreLayer , чтобы указать дескриптор, который драйвер должен использовать при вызове драйвера обратно в среду выполнения для доступа к основным функциям Direct3D 10 (то есть в вызовах функций, указанных членом pUMCallbacks ).

  • Среда выполнения предоставляет таблицу своих основных функций обратного вызова в структуре D3D10DDI_CORELAYER_DEVICECALLBACKS, на которую указывает pUMCallback. Драйвер отображения пользовательского режима вызывает предоставляемые средой выполнения основные функции обратного вызова в состояние обновления.

Примечание Количество устройств отображения (графических контекстов), которые могут существовать одновременно, ограничено только доступной системной памятью.