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] 드라이버가 커널 서비스에 액세스하는 데 사용할 수 있는 Direct3D 런타임 콜백 함수 테이블을 포함하는 D3DDDI_DEVICECALLBACKS 구조체에 대한 포인터입니다.
pDeviceFuncs
[in/out] 사용자 모드 표시 드라이버가 해당 함수의 테이블로 채우는 D3D10DDI_DEVICEFUNCS 구조체에 대한 포인터입니다. Direct3D 런타임은 이러한 함수를 사용하여 사용자 모드 디스플레이 드라이버와 통신합니다.
Interface 멤버의 값이 D3D10_0_DDI_INTERFACE_VERSION경우 드라이버는 제공된 D3D10DDI_DEVICEFUNCS 구조에서 Direct3D 버전 10.0 함수를 채워야 합니다.
p10_1DeviceFuncs
[in/out] 사용자 모드 표시 드라이버가 해당 함수의 테이블로 채우는 D3D10_1DDI_DEVICEFUNCS 구조체에 대한 포인터입니다. Direct3D 런타임 버전 10.1은 이러한 함수를 사용하여 사용자 모드 표시 드라이버와 통신합니다.
Interface 멤버의 값이 D3D10_1_DDI_INTERFACE_VERSION경우 드라이버는 제공된 D3D10_1DDI_DEVICEFUNCS 구조에서 Direct3D 버전 10.1 함수를 채워야 합니다.
SP1 및 Windows Server 2008에서 Windows Vista부터 지원됩니다.
p11DeviceFuncs
[in/out] 사용자 모드 표시 드라이버가 해당 함수의 테이블로 채우는 D3D11DDI_DEVICEFUNCS 구조체에 대한 포인터입니다. Direct3D 런타임 버전 11은 이러한 함수를 사용하여 사용자 모드 디스플레이 드라이버와 통신합니다.
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 구조체에 대한 포인터입니다. Direct3D 런타임 버전 11.2는 이러한 함수를 사용하여 사용자 모드 표시 드라이버와 통신합니다.
Interface 멤버의 값이 D3DWDDM1_3_DDI_INTERFACE_VERSION경우 드라이버는 제공된 D3DWDDM1_3DDI_DEVICEFUNCS 구조에서 Direct3D 버전 11.2 함수를 채워야 합니다.
Windows 8.1부터 지원됩니다.
pWDDM2_0DeviceFuncs
[in/out] 사용자 모드 표시 드라이버가 해당 함수의 테이블로 채우는 D3DWDDM2_0DDI_DEVICEFUNCS 구조체에 대한 포인터입니다. Interface 멤버의 값이 D3DWDDM2_0_DDI_INTERFACE_VERSION경우 드라이버는 제공된 구조에서 Direct3D 함수를 채워야 합니다.
pWDDM2_1DeviceFuncs
[in/out] 사용자 모드 표시 드라이버가 해당 함수의 테이블로 채우는 D3DWDDM2_1DDI_DEVICEFUNCS 구조체에 대한 포인터입니다. Interface 멤버의 값이 D3DWDDM2_0_DDI_INTERFACE_VERSION경우 드라이버는 제공된 구조에서 Direct3D 함수를 채워야 합니다.
pWDDM2_2DeviceFuncs
[in/out] 사용자 모드 표시 드라이버가 해당 함수의 테이블로 채우는 D3DWDDM2_2DDI_DEVICEFUNCS 구조체에 대한 포인터입니다. Interface 멤버의 값이 D3DWDDM2_0_DDI_INTERFACE_VERSION경우 드라이버는 제공된 구조에서 Direct3D 함수를 채워야 합니다.
pWDDM2_6DeviceFuncs
[in/out] 사용자 모드 표시 드라이버가 해당 함수의 테이블로 채우는 D3DWDDM2_6DDI_DEVICEFUNCS 구조체에 대한 포인터입니다. Interface 멤버의 값이 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] 드라이버가 핵심 사용자 모드 런타임 기능에 액세스하는 데 사용할 수 있는 Direct3D 10 런타임 콜백 함수 테이블을 포함하는 D3D10DDI_CORELAYER_DEVICECALLBACKS 구조체에 대한 포인터입니다.
p11UMCallbacks
[in] 드라이버가 핵심 사용자 모드 런타임 기능에 액세스하는 데 사용할 수 있는 Direct3D 10 및 Direct3D 11 런타임 콜백 함수 테이블을 포함하는 D3D11DDI_CORELAYER_DEVICECALLBACKS 구조체에 대한 포인터입니다.
Windows 7부터 지원됩니다.
pWDDM2_0UMCallbacks
[in] 드라이버가 핵심 사용자 모드 런타임 기능에 액세스하는 데 사용할 수 있는 Direct3D 10, Direct3D 11 및 WDDM 2.0 런타임 콜백 함수 테이블을 포함하는 D3DWDDM2_0DDI_CORELAYER_DEVICECALLBACKS 구조체에 대한 포인터입니다.
pWDDM2_2UMCallbacks
[in] 드라이버가 핵심 사용자 모드 런타임 기능에 액세스하는 데 사용할 수 있는 Direct3D 10, Direct3D 11, WDDM 2.0 및 WDDM 2.2 런타임 콜백 함수 테이블을 포함하는 D3DWDDM2_2DDI_CORELAYER_DEVICECALLBACKS 구조체에 대한 포인터입니다.
pWDDM2_6UMCallbacks
[in] 드라이버가 핵심 사용자 모드 런타임 기능에 액세스하는 데 사용할 수 있는 Direct3D 10, Direct3D 11, WDDM 2.0, WDDM 2.2 및 WDDM 2.6 런타임 콜백 함수 테이블을 포함하는 D3DWDDM2_6DDI_CORELAYER_DEVICECALLBACKS 구조체에 대한 포인터입니다.
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 마스크에 설정된 플래그입니다. | 드라이버가 디스플레이 디바이스에 대해 지원해야 하는 3차원 파이프라인의 수준을 나타냅니다. 비고를 참조하세요. Windows 7부터 지원됩니다. |
ppfnRetrieveSubObject
[in/out] Direct3D 드라이버 디바이스 개체의 하위 부분을 검색하는 RetrieveSubObject(D3D11_1) 함수에 대한 포인터입니다.
Windows 8부터 지원됩니다.
발언
드라이버는 인터페이스 및 버전 멤버의 값을 검사하여 pDeviceFuncs가D3D10DDI_DEVICEFUNCS, D3D10_1DDI_DEVICEFUNCS, D3D11DDI_DEVICEFUNCS, D3D11_1DDI_DEVICEFUNCS또는 D3DWDDM1_3DDI_DEVICEFUNCS 구조를 채울지 여부를 결정합니다. p10_1DeviceFuncs, p11DeviceFuncs, p11_1DeviceFuncs또는 pWDDM1_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))
운영 체제, Direct3D 및 WDDM(Windows Display Driver Model)의 다른 가능한 상수 조합은 D3d10umddi.h 헤더에 나열됩니다.
Flags 멤버의 0xE 마스크에 설정된 플래그의 경우 드라이버는 다음 상수와 매크로를 사용하여 지원할 3차원 파이프라인 수준을 나타내는 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