初始化与 Direct3D 版本 10 DDI 之间的通信

若要初始化与用户模式显示驱动程序 DLL 版本 10 DDI 的通信,Direct3D 版本 10 运行时首先加载 DLL(如果尚未加载 DLL)。 接下来,Direct3D 运行时通过 DLL 的导出表调用用户模式显示驱动程序的 OpenAdapter10 函数,以打开图形适配器的实例。 OpenAdapter10 函数是 DLL 唯一导出的 Direct3D 版本 10 函数。

在调用驱动程序的 OpenAdapter10 函数时,运行时在 D3D10DDIARG_OPENADAPTER 结构的 pAdapterCallbacks 成员中提供 pfnQueryAdapterInfoCb 适配器回调函数。 运行时还在 D3D10DDIARG_OPENADAPTER 的 InterfaceVersion 成员中提供其版本。 用户模式显示驱动程序必须验证它是否可以使用此版本的运行时。 用户模式显示驱动程序不得使较新版本的运行时失败,因为较新的运行时版本可以使用以前的 DDI 版本,因此可以正确与实现这些 DDI 版本的驱动程序通信。 用户模式显示驱动程序在 D3D10DDIARG_OPENADAPTER 的 pAdapterFuncs 成员中返回其适配器特定函数的表。

用户模式显示驱动程序应调用 pfnQueryAdapterInfoCb 适配器回调函数,以从显示微型端口驱动程序查询图形硬件功能。

运行时调用用户模式显示驱动程序的 CreateDevice (D3D10) 函数 (驱动程序的适配器特定函数之一,) 创建用于处理呈现状态集合和完成初始化的显示设备。 初始化完成后,Direct3D 版本 10 运行时可以调用 显示驱动程序提供的 Direct3D 版本 10 函数,用户模式显示驱动程序可以调用 运行时提供的函数

用户模式显示驱动程序的 CreateDevice (D3D10) 函数使用 D3D10DDIARG_CREATEDEVICE 结构调用,其成员按以下方式进行设置,以初始化用户模式显示驱动程序的版本 10 DDI:

  • 运行时将 Interface 设置为运行时从用户模式显示驱动程序所需的接口版本。

  • 运行时将 Version 设置为驱动程序可用于标识生成运行时时间的数字。 例如,驱动程序可以使用版本号来区分 Windows Vista 发布的运行时和随后续 Service Pack 发布的运行时,后者可能包含驱动程序所需的修补程序。

  • 运行时设置 hRTDevice 以指定驱动程序调用回运行时时驱动程序应使用的句柄。

  • 运行时设置 hDrvDevice 以指定运行时在后续驱动程序调用中使用的句柄。

  • 运行时在 pKTCallbacks 指向的 D3DDDI_DEVICECALLBACKS 结构中提供其特定于设备的回调函数的表。 用户模式显示驱动程序调用运行时提供的回调函数来访问显示微型端口驱动程序中的内核模式服务。

  • 用户模式显示驱动程序在 pDeviceFuncs 指向的D3D10DDI_DEVICEFUNCS结构中返回其特定于设备的功能的表。

  • 运行时提供 DXGIBaseDDI 指向的DXGI_DDI_BASE_ARGS结构。 运行时和用户模式显示驱动程序为此结构提供其 DirectX 图形基础结构 DDI

  • 运行时设置 hRTCoreLayer 以指定驱动程序在调用回运行时以访问核心 Direct3D 10 功能时驱动程序应使用的句柄, (即,在调用 pUMCallbacks 成员指定) 的函数时。

  • 运行时在 pUMCallback 指向的D3D10DDI_CORELAYER_DEVICECALLBACKS结构中提供其核心回调函数的表。 用户模式显示驱动程序调用运行时提供的核心回调函数来刷新状态。

注意 可以同时存在的 (图形上下文) 显示设备的数量仅受可用系统内存的限制。