D3DDDI_ALLOCATIONINFO 구조는 WDDM v1에 대한 할당을 설명합니다. 사용자 모드 그래픽 클라이언트는 대신 D3DDDI_ALLOCATIONINFO2 사용해야 합니다.
통사론
typedef struct _D3DDDI_ALLOCATIONINFO {
D3DKMT_HANDLE hAllocation;
const VOID *pSystemMem;
VOID *pPrivateDriverData;
UINT PrivateDriverDataSize;
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
union {
struct {
UINT Primary : 1;
UINT Stereo : 1;
#if ...
UINT Reserved : 30;
#else
UINT Reserved : 31;
#endif
};
UINT Value;
} Flags;
} D3DDDI_ALLOCATIONINFO;
회원
hAllocation
[out] 할당에 대한 커널 모드 핸들을 나타내는 D3DKMT_HANDLE. 이 핸들은 Direct3D 런타임의 pfnAllocateCb 함수가 D3DDDICB_ALLOCATE 구조체의 hKMResource 멤버에서 반환하는 커널 모드 리소스 핸들(NULL이 아닌 경우)과 연결됩니다. 사용자 모드 표시 드라이버는 이 커널 모드 할당 핸들을 사용하여 명령 버퍼의 할당을 참조할 수 있습니다.
pSystemMem
[in] Direct3D 런타임이 미리 할당한 시스템 메모리에 대한 포인터입니다. 그렇지 않으면 할당이 비디오 메모리를 사용하는 경우 이 멤버는 NULL입니다.
할당이 시스템 메모리에 있는 경우 사용자 모드 표시 드라이버는 pSystemMem 리소스에 대한 D3DDDI_SURFACEINFO 구조의 pSysMem 멤버에 버퍼를 할당해야 합니다. 이 버퍼는 Direct3D 런타임이 사용자 모드 표시 드라이버의 CreateResource 함수를 호출하여 리소스를 만들 때 지정됩니다.
pPrivateDriverData
[in/out,opt] 디스플레이 미니포트 드라이버에서 할당을 만드는 데 필요할 수 있는 선택적 프라이빗 데이터가 포함된 버퍼에 대한 포인터입니다. 디스플레이 미니포트 드라이버는 버퍼의 데이터를 반환할 수도 있습니다. 버퍼의 내용이 디스플레이 미니포트 드라이버에 전달되면 콘텐츠는 디스플레이 미니포트 드라이버에서 처리할 수 있는 형식이어야 합니다.
PrivateDriverDataSize
[in] 프라이빗 데이터의 크기(바이트)입니다.
VidPnSourceId
[in] 기본 화면에 대한 할당인 경우 비디오 프레젠테이션 네트워크(VidPN) 토폴로지 경로에 있는 비디오 원본의 0부터 시작하는 VidPN 식별 번호입니다. 드라이버는 기본 할당 유형에 대해서만 VidPnSourceId 설정해야 하며 다른 유형의 할당에는 설정하지 않아야 합니다. 드라이버가 pfnAllocateCb 함수 호출에서 다른 할당 형식에 대해 VidPnSourceId 설정하면 pfnAllocateCb D3DDDI_ID_NOTAPPLICABLE 반환합니다.
DirectX 그래픽 커널 하위 시스템이 공유 기본 화면에 대한 할당 생성을 시작하면 디스플레이 미니포트 드라이버는 DXGK_ALLOCATIONINFO 구조체의 pPrivateDriverData 멤버가 가리키는 D3DKMDDI_SHAREDPRIMARYSURFACEDATA 구조체의 VidPnSourceId 멤버의 ID 번호를 확인할 수 있습니다.
Flags
[in] 할당 유형을 식별하는 구조체 또는 32비트 값을 포함하는 공용 구조체입니다.
Flags.Primary
[in] 할당이 데스크톱의 일부인지 여부를 지정하는 UINT입니다. 이러한 할당은 CPU에서 암시적으로 액세스할 수 있습니다. 기본 할당은 생성 시 고정되거나 생성 시 고정되지 않을 수 있습니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000001)의 첫 번째 비트를 설정하는 것과 같습니다.
Flags.Stereo
[in] Windows 8부터 지원됩니다. 할당이 스테레오 기본 할당인지 여부를 지정하는 UINT입니다. 스테레오 멤버는 기본 멤버가 설정된 경우에만 설정할 수 있습니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000002)의 두 번째 비트를 설정하는 것과 같습니다.
Flags.Reserved
[in] 이 멤버는 예약되어 있으며 0으로 설정해야 합니다.
Flags.Value
[in] 할당 유형을 식별하는 32비트 값입니다.
발언
사용자 모드 표시 드라이버가 D3DDDI_ALLOCATIONINFO Flags 멤버에서 기본 비트 필드 플래그를 설정하는 경우 디스플레이 미니포트 드라이버의 DxgkDdiCreateAllocation 함수에 대한 호출에서 할당에 대한 DXGKARG_CREATEALLOCATION 구조체의 pAllocationInfo 멤버의 DXGK_ALLOCATIONINFO 구조에 특정 제한 사항이 적용됩니다. 이러한 제한 사항에는 다음이 포함됩니다.
할당은 기본 설정에 따라 할당됩니다. 그렇지 않으면 할당 기본값이 지원되는 쓰기 세그먼트 집합으로 설정되고, 쓰기 세그먼트 집합의 지정된 모든 세그먼트는 CPU에 액세스할 수 있어야 합니다.
표시 미니포트 드라이버는 DXGK_ALLOCATIONINFOFlags 멤버에서 다음 비트 필드 플래그를 설정할 수 없습니다.
PermanentSysMem
캐시
보호
ExistingSysMem
ExistingKernelSysMem
D3DDDI_ID_NOTAPPLICABLE 상수는 D3dukmdt.h정의됩니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista |
헤더 | d3dukmdt.h(D3dumddi.h, D3dkmddi.h 포함) |