D3D10DDIARG_CREATEDEVICE 结构 (d3d10umddi.h)
D3D10DDIARG_CREATEDEVICE结构描述要创建的显示设备。
语法
typedef struct D3D10DDIARG_CREATEDEVICE {
D3D10DDI_HRTDEVICE hRTDevice;
UINT Interface;
UINT Version;
const D3DDDI_DEVICECALLBACKS *pKTCallbacks;
union {
D3D10DDI_DEVICEFUNCS *pDeviceFuncs;
D3D10_1DDI_DEVICEFUNCS *p10_1DeviceFuncs;
D3D11DDI_DEVICEFUNCS *p11DeviceFuncs;
D3D11_1DDI_DEVICEFUNCS *p11_1DeviceFuncs;
D3DWDDM1_3DDI_DEVICEFUNCS *pWDDM1_3DeviceFuncs;
D3DWDDM2_0DDI_DEVICEFUNCS *pWDDM2_0DeviceFuncs;
D3DWDDM2_1DDI_DEVICEFUNCS *pWDDM2_1DeviceFuncs;
D3DWDDM2_2DDI_DEVICEFUNCS *pWDDM2_2DeviceFuncs;
D3DWDDM2_6DDI_DEVICEFUNCS *pWDDM2_6DeviceFuncs;
};
D3D10DDI_HDEVICE hDrvDevice;
DXGI_DDI_BASE_ARGS DXGIBaseDDI;
D3D10DDI_HRTCORELAYER hRTCoreLayer;
union {
const D3D10DDI_CORELAYER_DEVICECALLBACKS *pUMCallbacks;
const D3D11DDI_CORELAYER_DEVICECALLBACKS *p11UMCallbacks;
const D3DWDDM2_0DDI_CORELAYER_DEVICECALLBACKS *pWDDM2_0UMCallbacks;
const D3DWDDM2_2DDI_CORELAYER_DEVICECALLBACKS *pWDDM2_2UMCallbacks;
const D3DWDDM2_6DDI_CORELAYER_DEVICECALLBACKS *pWDDM2_6UMCallbacks;
};
UINT Flags;
PFND3D10DDI_RETRIEVESUBOBJECT *ppfnRetrieveSubObject;
} D3D10DDIARG_CREATEDEVICE;
成员
hRTDevice
[in]显示设备的句柄 (图形上下文) 指定驱动程序在调用回 Direct3D 运行时 ((即驱动程序调用 pKTCallbacks 成员指定) 的函数时)应使用的句柄。
Interface
[in]Direct3D 接口版本。 高 16 位存储主版本号 (,如 10、11 等) ;低 16 位存储次要版本号 (,如 0、1、2 等) 。 释放对接口的更改时,次要版本号将增加。
Version
[in]驱动程序可用于标识 Direct3D 运行时生成时间的数字。 高 16 位表示生成号;低 16 位表示修订号。
驱动程序仅用于监视高 16 位。 驱动程序应确保传入的运行时生成版本大于或等于驱动程序的当前生成版本。 如果传入的内部版本不兼容,驱动程序应从其 CreateDevice (D3D10) 函数返回失败。
pKTCallbacks
[in]指向 D3DDDI_DEVICECALLBACKS 结构的指针,该结构包含驱动程序可用于访问内核服务的 Direct3D 运行时回调函数表。
pDeviceFuncs
[in/out]指向用户模式显示驱动程序用其函数表填充的 D3D10DDI_DEVICEFUNCS 结构的指针。 Direct3D 运行时使用这些函数与用户模式显示驱动程序通信。
当 Interface 成员中的值D3D10_0_DDI_INTERFACE_VERSION时,驱动程序应在提供的 D3D10DDI_DEVICEFUNCS 结构中填充其 Direct3D 版本 10.0 函数。
p10_1DeviceFuncs
[in/out]指向 D3D10_1DDI_DEVICEFUNCS 结构的指针,用户模式显示驱动程序用其函数表填充该结构。 版本 10.1 的 Direct3D 运行时使用这些函数与用户模式显示驱动程序通信。
当 Interface 成员中的值D3D10_1_DDI_INTERFACE_VERSION时,驱动程序应在提供的 D3D10_1DDI_DEVICEFUNCS 结构中填充其 Direct3D 版本 10.1 函数。
从 Windows Vista SP1 和 Windows Server 2008 开始受支持。
p11DeviceFuncs
[in/out]指向用户模式显示驱动程序使用其函数表填充的 D3D11DDI_DEVICEFUNCS 结构的指针。 版本 11 的 Direct3D 运行时使用这些函数与用户模式显示驱动程序通信。
当 Interface 成员中的值D3D11_0_DDI_INTERFACE_VERSION时,驱动程序应在提供的 D3D11DDI_DEVICEFUNCS 结构中填充其 Direct3D 版本 11.0 函数。
从 Windows 7 开始受支持。
p11_1DeviceFuncs
[in/out]指向 D3D11_1DDI_DEVICEFUNCS 结构的指针,用户模式显示驱动程序用其函数表填充该结构。 从版本 11.1 开始,Direct3D 运行时使用这些函数与用户模式显示驱动程序通信。
当 Interface 成员中的值D3D11_1_DDI_INTERFACE_VERSION时,驱动程序应在提供的 D3D11_1DDI_DEVICEFUNCS 结构中填充其 Direct3D 版本 11.1 函数。
从 Windows 8 开始支持。
pWDDM1_3DeviceFuncs
[in/out]指向 D3DWDDM1_3DDI_DEVICEFUNCS 结构的指针,用户模式显示驱动程序用其函数表填充该结构。 版本 11.2 的 Direct3D 运行时使用这些函数与用户模式显示驱动程序通信。
当 Interface 成员中的值D3DWDDM1_3_DDI_INTERFACE_VERSION时,驱动程序应在提供的 D3DWDDM1_3DDI_DEVICEFUNCS 结构中填充其 Direct3D 版本 11.2 函数。
从 Windows 8.1 开始支持。
pWDDM2_0DeviceFuncs
[in/out]指向用户模式显示驱动程序使用其函数表填充的 D3DWDDM2_0DDI_DEVICEFUNCS 结构的指针。 当 接口 成员中的值 D3DWDDM2_0_DDI_INTERFACE_VERSION时,驱动程序应在提供的 结构中填充其 Direct3D 函数。
pWDDM2_1DeviceFuncs
[in/out]指向用户模式显示驱动程序用其函数表填充的 D3DWDDM2_1DDI_DEVICEFUNCS 结构的指针。 当 接口 成员中的值 D3DWDDM2_0_DDI_INTERFACE_VERSION时,驱动程序应在提供的 结构中填充其 Direct3D 函数。
pWDDM2_2DeviceFuncs
[in/out]指向用户模式显示驱动程序用其函数表填充的 D3DWDDM2_2DDI_DEVICEFUNCS 结构的指针。 当 接口 成员中的值 D3DWDDM2_0_DDI_INTERFACE_VERSION时,驱动程序应在提供的 结构中填充其 Direct3D 函数。
pWDDM2_6DeviceFuncs
[in/out]指向用户模式显示驱动程序使用其函数表填充的 D3DWDDM2_6DDI_DEVICEFUNCS 结构的指针。 当 接口 成员中的值 D3DWDDM2_0_DDI_INTERFACE_VERSION时,驱动程序应在提供的 结构中填充其 Direct3D 函数。
从 Windows 10 版本 1901 开始受支持。
hDrvDevice
[in/out]显示设备的句柄 (图形上下文) Direct3D 运行时在后续驱动程序调用中用于标识显示设备。
DXGIBaseDDI
[in/out]提供对 DXGI 的访问权限 的DXGI_DDI_BASE_ARGS 结构。 DXGI DDI 处理低级别任务,例如将渲染的帧呈现到输出、控制伽玛以及管理全屏转换。
hRTCoreLayer
[in]驱动程序在调用回 Direct3D 运行时以访问核心 Direct3D 10 功能时应使用的句柄, (即,当驱动程序调用 pUMCallbacks 成员指定) 的函数时。
pUMCallbacks
[in]指向 D3D10DDI_CORELAYER_DEVICECALLBACKS 结构的指针,该结构包含驱动程序可用于访问核心用户模式运行时功能的 Direct3D 10 运行时回调函数表。
p11UMCallbacks
[in]指向 D3D11DDI_CORELAYER_DEVICECALLBACKS 结构的指针,该结构包含 Direct3D 10 和 Direct3D 11 运行时回调函数的表,驱动程序可以使用这些函数来访问核心用户模式运行时功能。
从 Windows 7 开始受支持。
pWDDM2_0UMCallbacks
[in]指向 D3DWDDM2_0DDI_CORELAYER_DEVICECALLBACKS 结构的指针,该结构包含 Direct3D 10、Direct3D 11 和 WDDM 2.0 运行时回调函数的表,驱动程序可以使用这些函数访问核心用户模式运行时功能。
pWDDM2_2UMCallbacks
[in]指向 D3DWDDM2_2DDI_CORELAYER_DEVICECALLBACKS 结构的指针,该结构包含 Direct3D 10、Direct3D 11、WDDM 2.0 和 WDDM 2.2 运行时回调函数的表,驱动程序可以使用这些函数来访问核心用户模式运行时功能。
pWDDM2_6UMCallbacks
[in]指向 D3DWDDM2_6DDI_CORELAYER_DEVICECALLBACKS 结构的指针,该结构包含 Direct3D 10、Direct3D 11、WDDM 2.0、WDDM 2.2 和 WDDM 2.6 运行时回调函数的表,驱动程序可以使用这些函数来访问核心用户模式运行时功能。
Flags
[in]标识如何创建显示设备的标志值的有效按位 OR。 Direct3D 运行时支持以下标志:
标志 | 含义 |
---|---|
D3D10DDI_CREATEDEVICE_FLAG_DISABLE_EXTRA_THREAD_CREATION (0x1) | 如果设置了此标志,则用户模式显示驱动程序在处理从 Direct3D 运行时对其函数的调用时不应同时运行多个线程。 除非设置了 D3D10DDI_CREATEDEVICE_FLAG_DISABLE_EXTRA_THREAD_CREATION 标志,否则驱动程序通常可以启动并运行多个线程以更快地处理操作。 |
D3D11DDI_CREATEDEVICE_FLAG_SINGLETHREADED (0x10) | 通知用户模式显示驱动程序应用程序是单线程的。 如果驱动程序允许此操作模式,则 Direct3D 11 运行时允许多个应用程序线程进入驱动程序。 但是,并非所有应用程序都可以运行多个线程。 如果设置了此标志,驱动程序不希望多个线程进入它并同时运行。 如果设置了此标志,驱动程序可以避免同步。 从 Windows 7 开始受支持。 |
在 Flags 成员的0xE掩码中设置的标志 | 表示驱动程序应为显示设备支持的三维管道级别。 请参阅“备注”。 从 Windows 7 开始受支持。 |
ppfnRetrieveSubObject
[in/out]指向 RetrieveSubObject 的指针, (D3D11_1) 用于检索 Direct3D 驱动程序设备对象的子部分的函数。
从 Windows 8 开始支持。
注解
驱动程序检查 Interface 和 Version 成员中的值,以确定是填充 pDeviceFuncs、p10_1DeviceFuncs、p11DeviceFuncs、p11_1DeviceFuncs 或 pWDDM1_3DeviceFuncs 成员指向的D3D10DDI_DEVICEFUNCS、D3D10_1DDI_DEVICEFUNCS、D3D11DDI_DEVICEFUNCS、D3D11_1DDI_DEVICEFUNCS或D3DWDDM1_3DDI_DEVICEFUNCS结构功能。 D3d10umddi.h 中的以下常量是驱动程序可能在 接口 和 版本中找到的常量示例:
#define D3D10_1_DDI_MINOR_VERSION 2
#define D3D10_1_DDI_INTERFACE_VERSION ((D3D10_DDI_MAJOR_VERSION << 16) | D3D10_1_DDI_MINOR_VERSION)
#define D3D10_1_DDI_BUILD_VERSION 1
#define D3D10_1_DDI_SUPPORTED ((((UINT64)D3D10_1_DDI_INTERFACE_VERSION) << 32) | (((UINT64)D3D10_1_DDI_BUILD_VERSION) << 16))
D3d10umddi.h 标头中列出了不同版本的操作系统、Direct3D 和 Windows 显示驱动程序模型 (WDDM) 的其他可能常量组合。
对于在 Flags 成员0xE掩码中设置的标志,驱动程序使用以下常量和宏从表示要支持的三维管道级别的 D3D11DDI_3DPIPELINELEVEL 枚举中提取值之一。 Flags 成员中的值的格式类似于 D3D11DDI_3DPIPELINESUPPORT_CAPS 结构的 Caps 成员。
#define D3D11DDI_CREATEDEVICE_FLAG_3DPIPELINESUPPORT_SHIFT (0x1)
#define D3D11DDI_CREATEDEVICE_FLAG_3DPIPELINESUPPORT_MASK (0x7 << D3D11DDI_CREATEDEVICE_FLAG_3DPIPELINESUPPORT_SHIFT)
#define D3D11DDI_EXTRACT_3DPIPELINELEVEL_FROM_FLAGS( Flags ) \
((D3D11DDI_3DPIPELINELEVEL)(((Flags) & D3D11DDI_CREATEDEVICE_FLAG_3DPIPELINESUPPORT_MASK) >> \
D3D11DDI_CREATEDEVICE_FLAG_3DPIPELINESUPPORT_SHIFT))
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
标头 | d3d10umddi.h (包括 D3d10umddi.h) |
另请参阅
D3D10DDI_CORELAYER_DEVICECALLBACKS
D3D11DDI_3DPIPELINESUPPORT_CAPS