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 运行时使用这些函数与用户模式显示驱动程序通信。

接口 成员中的值 D3D10_0_DDI_INTERFACE_VERSION时,驱动程序应在提供的 D3D10DDI_DEVICEFUNCS 结构中填充其 Direct3D 版本 10.0 函数。

p10_1DeviceFuncs

[in/out]指向用户模式显示驱动程序用其函数表填充的 D3D10_1DDI_DEVICEFUNCS 结构的指针。 Direct3D 运行时版本 10.1 使用这些函数与用户模式显示驱动程序通信。

接口 成员中的值 D3D10_1_DDI_INTERFACE_VERSION时,驱动程序应在提供的 D3D10_1DDI_DEVICEFUNCS 结构中填充其 Direct3D 版本 10.1 函数。

从 SP1 和 Windows Server 2008 开始支持 Windows Vista。

p11DeviceFuncs

[in/out]指向用户模式显示驱动程序用其函数表填充的 D3D11DDI_DEVICEFUNCS 结构的指针。 Direct3D 运行时版本 11 使用这些函数与用户模式显示驱动程序通信。

接口 成员中的值 D3D11_0_DDI_INTERFACE_VERSION时,驱动程序应在提供的 D3D11DDI_DEVICEFUNCS 结构中填充其 Direct3D 版本 11.0 函数。

从 Windows 7 开始支持。

p11_1DeviceFuncs

[in/out]指向用户模式显示驱动程序用其函数表填充的 D3D11_1DDI_DEVICEFUNCS 结构的指针。 从版本 11.1 开始,Direct3D 运行时使用这些函数与用户模式显示驱动程序通信。

接口 成员中的值 D3D11_1_DDI_INTERFACE_VERSION时,驱动程序应在提供的 D3D11_1DDI_DEVICEFUNCS 结构中填充其 Direct3D 版本 11.1 函数。

从 Windows 8 开始支持。

pWDDM1_3DeviceFuncs

[in/out]指向用户模式显示驱动程序用其函数表填充的 D3DWDDM1_3DDI_DEVICEFUNCS 结构的指针。 Direct3D 运行时版本 11.2 使用这些函数与用户模式显示驱动程序通信。

接口 成员中的值 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]指向包含 Direct3D 10、Direct3D 11、WDDM 2.0 和 WDDM 2.2 运行时回调函数(驱动程序可用于访问核心用户模式运行时功能的表)的 D3DWDDM2_2DDI_CORELAYER_DEVICECALLBACKS 结构的指针。

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 开始支持。
标志 成员的0xE掩码中设置的标志 表示驱动程序应支持显示设备的三维管道级别。 请参阅“备注”。 从 Windows 7 开始支持。

ppfnRetrieveSubObject

[in/out]指向检索 Direct3D 驱动程序设备对象的子部分的 RetrieveSubObject(D3D11_1) 函数的指针。

从 Windows 8 开始支持。

言论

驱动程序检查 接口版本 成员中的值,以确定是填充 pDeviceFuncsD3D10DDI_DEVICEFUNCSD3D10_1DDI_DEVICEFUNCSD3D11DDI_DEVICEFUNCSD3D11_1DDI_DEVICEFUNCS还是 D3DWDDM1_3DDI_DEVICEFUNCS 结构, p10_1DeviceFuncsp11DeviceFuncsp11_1DeviceFuncspWDDM1_3DeviceFuncs 成员指向驱动程序函数。 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)的其他可能的常量组合。

对于在 标志 成员0xE掩码中设置的标志,驱动程序使用以下常量和宏从表示支持三维管道级别的 D3D11DDI_3DPIPELINELEVEL 枚举中提取值之一。 标志 成员中的值的格式类似于 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)

另请参阅

CreateDevice(D3D10)

D3D10DDI_CORELAYER_DEVICECALLBACKS

D3D10DDI_DEVICEFUNCS

D3D10_1DDI_DEVICEFUNCS

D3D11DDI_3DPIPELINELEVEL

D3D11DDI_3DPIPELINESUPPORT_CAPS

D3D11DDI_CORELAYER_DEVICECALLBACKS

D3D11DDI_DEVICEFUNCS

D3D11_1DDI_DEVICEFUNCS

D3DDDI_ALLOCATIONLIST

D3DDDI_DEVICECALLBACKS

D3DDDI_PATCHLOCATIONLIST

D3DWDDM1_3DDI_DEVICEFUNCS

DXGI_DDI_BASE_ARGS

DxgkDdiCreateDevice

RetrieveSubObject(D3D11_1)