struktur D3DKMT_CREATEALLOCATIONFLAGS (d3dkmthk.h)
D3DKMT_CREATEALLOCATIONFLAGS adalah struktur bidang bit yang menentukan cara membuat alokasi dalam panggilan ke fungsi D3DKMTCreateAllocation .
Sintaks
typedef struct _D3DKMT_CREATEALLOCATIONFLAGS {
UINT CreateResource : 1;
UINT CreateShared : 1;
UINT NonSecure : 1;
UINT CreateProtected : 1;
UINT RestrictSharedAccess : 1;
UINT ExistingSysMem : 1;
UINT NtSecuritySharing : 1;
UINT ReadOnly : 1;
UINT CreateWriteCombined : 1;
UINT CreateCached : 1;
UINT SwapChainBackBuffer : 1;
UINT CrossAdapter : 1;
UINT OpenCrossAdapter : 1;
UINT PartialSharedCreation : 1;
UINT Zeroed : 1;
UINT WriteWatch : 1;
UINT StandardAllocation : 1;
UINT ExistingSection : 1;
UINT AllowNotZeroed : 1;
UINT PhysicallyContiguous : 1;
UINT NoKmdAccess : 1;
UINT SharedDisplayable : 1;
UINT NoImplicitSynchronization : 1;
#if ...
UINT Reserved : 9;
#elif
UINT Reserved : 10;
#elif
UINT Reserved : 11;
#elif
UINT Reserved : 13;
#elif
UINT Reserved : 14;
#elif
UINT Reserved : 16;
#elif
UINT Reserved : 21;
#else
UINT Reserved : 26;
#endif
} D3DKMT_CREATEALLOCATIONFLAGS;
Anggota
CreateResource
Menentukan apakah akan membuat sumber daya khusus perangkat. Jika Anda mengatur CreateShared, Anda juga harus mengatur CreateResource.
CreateShared
Menentukan apakah akan membuat sumber daya yang dibagikan di semua perangkat. Jika Anda mengatur CreateShared, Anda juga harus mengatur CreateResource. Untuk informasi selengkapnya tentang menggunakan CreateShared, lihat bagian Keterangan.
NonSecure
Menentukan apakah akan membuat alokasi yang dapat dibuka oleh proses apa pun. Jika NonSecure diatur, proses yang aman dan tidak aman dapat membuka alokasi.
CreateProtected
Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 7.
RestrictSharedAccess
Menentukan apakah akan membuat sumber daya yang dibagikan di semua perangkat tetapi dengan beberapa batasan. Didukung dimulai dengan Windows 7.
ExistingSysMem
Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 7. Batasan ExistingSysMem mengikuti:
ExistingSystemMem dan ExistingSection tidak dapat diatur untuk alokasi yang sama. ExistingSysMem diatur, StandardAllocation juga harus diatur.
ExistingSysMem harus diratakan dengan benar. Buffer memori sistem yang ada yang diberikan runtime D3D ke kernel harus selaras dengan halaman dan kelipatan ukuran halaman, jika tidak, kernel gagal melakukan panggilan ke D3DKMTCreateAllocation.
Saat kernel membuat jenis D3DKMDT_STANDARDALLOCATION_GDISURFACE alokasi standar:
Runtime menyediakan ukuran buffer sistem yang ada. Dengan menggunakan ukuran ini, kernel membuat alokasi standar jenis GDISURFACE dengan parameter berikut yang dipahami KMD dengan benar:
D3DKMDT_GDISURFACEDATA::Width = Size of ExistingSysMem buffer D3DKMDT_GDISURFACEDATA::Height = 1 D3DKMDT_GDISURFACEDATA::Format = D3DDDIFMT_UNKNOWN D3DKMDT_GDISURFACEDATA::Type = D3DKMDT_GDISURFACE_TEXTURE_CROSSADAPTER
Lindungi dari penunjuk ExistingSysMem yang menunjuk ke DXGALLOCATION yang MemRotated
Kernel harus melindungi dari skenario di mana mode pengguna mengunci DXGALLOCATION yang ada dan menggunakan penunjuk CPU yang dihasilkan untuk membuat alokasi standar ExistingSysMem. Kasus ini tidak valid jika VAD DXGALLOCATION MEM_ROTATE, yaitu jika alokasi dapat berada di VRAM. Kernel mengambil langkah-langkah berikut dalam membuat alokasi standar dengan panggilan ExistingSysMem:
- MemSecure penunjuk ExistingSysMem.
- VirtualQuery memori. Jika atribut berisi MEM_ROTATE, maka gagalkan panggilan.
- MemSecure hanya dirilis ketika alokasi ini dibebaskan untuk mencegah memori diubah di belakang punggung kernel.
NtSecuritySharing
Menentukan apakah alokasi dibagikan dengan handel NT, yang berarti tidak memiliki handel mode kernel D3DKMT_HANDLE global ke sumber daya.
Jika NtSecuritySharing diatur ke 1 (TRUE):
- Alokasi dibagikan menggunakan fungsi D3DKMTShareObjects tetapi tidak memiliki handel D3DKMT_HANDLE global ke sumber daya.
- CreateShared harus diatur ke 1.
Untuk informasi selengkapnya tentang menggunakan NtSecuritySharing, lihat bagian Keterangan. Didukung dimulai dengan Windows 8.
ReadOnly
Menentukan apakah alokasi hanya dapat dibaca. Didukung dimulai dengan Windows 8.
CreateWriteCombined
Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.
CreateCached
Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.
SwapChainBackBuffer
Anggota ini dicadangkan dan harus diatur ke nol. Didukung dimulai dengan Windows 8.
CrossAdapter
Jika diatur, menunjukkan bahwa sumber daya adalah sumber daya lintas adaptor bersama.
OpenCrossAdapter
Jika diatur, menunjukkan bahwa sumber daya dibuat dengan membuka sumber daya adaptor silang. Tidak dapat digunakan saat alokasi dibuat dari mode pengguna. Didukung dimulai dengan Windows 8.1 (WDDM 1.3).
PartialSharedCreation
Menentukan apakah alokasi dibuat sebagai alokasi bersama parsial. Didukung dimulai dengan Windows 8.1 (WDDM 1.3).
Zeroed
[out] Atur kapan alokasi terpenuhi dengan halaman nol. Didukung dimulai dengan Windows 8 (WDDM 1.3).
WriteWatch
[in] Menunjukkan apakah akan membuat alokasi dengan write-watch diaktifkan. Didukung dimulai dengan Windows 8.1 (WDDM 1.3).
StandardAllocation
[in] Saat diatur, menginstruksikan Dxgkrnl untuk membuat alokasi standar menggunakan pStandardAllocation alih-alih pPrivateDriverData. ExistingSysMem atau ExistingSection (tetapi tidak keduanya) juga harus diatur jika StandardAllocation diatur. Selain itu, saat membuat StandardAllocation, bendera CreateShared dan CrossAdapter juga harus diatur. Didukung dimulai dengan Windows 10 versi 1709 (WDDM 2.3).
ExistingSection
[in] Ketika diatur, menginstruksikan Dxgkrnl untuk menggunakan handel bagian (hSection) alih-alih penunjuk memori sistem (pSystemMem). ExistingSystemMem dan ExistingSection tidak dapat diatur untuk alokasi yang sama. Jika ExistingSection diatur, StandardAllocation juga harus diatur. Didukung dimulai dengan Windows 10 versi 1709 (WDDM 2.3).
AllowNotZeroed
[in] Menunjukkan bahwa alokasi dapat dibuat tanpa nol halaman. Didukung dimulai dengan Windows 10, versi 1903 (WDDM 2.6).
PhysicallyContiguous
[in] Menunjukkan bahwa alokasi harus berdamai secara fisik. Didukung dimulai dengan Windows 10, versi 2004 (WDDM 2.7).
NoKmdAccess
[in] Menunjukkan bahwa KMD tidak diberi tahu tentang alokasi. Didukung dimulai dengan Windows 10, versi 2004 (WDDM 2.7).
SharedDisplayable
Menunjukkan bahwa alokasi adalah sumber daya bersama yang dapat ditampilkan. Didukung dimulai dengan Windows 11 (WDDM 3.0).
NoImplicitSynchronization
Reserved
Didukung dimulai dengan Windows 8.
Anggota ini dicadangkan dan harus diatur ke nol.
Keterangan
Objek yang akan dibagikan dengan menggunakan fungsi D3DKMTShareObjects harus terlebih dahulu dibuat dengan kumpulan nilai bendera NtSecuritySharing . Nilai bendera ini tersedia dalam struktur D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGS, dan D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS .
Driver harus mengikuti panduan ini tentang D3DKMT_CREATEALLOCATIONFLAGS berbagi bendera:
- Jika alokasi tidak dibagikan, atur CreateShared dan NtSecuritySharing ke 0.
- Jika alokasi dibagikan dengan jenis data D3DKMT_HANDLE , atur CreateShared = 1 dan NtSecuritySharing = 0.
- Jika alokasi dibagikan dengan handel NT ke proses (dan tanpa handel mode kernel D3DKMT_HANDLE global ke sumber daya), atur CreateShared = 1 dan NtSecuritySharing = 1.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Vista |
Header | d3dkmthk.h (termasuk D3dkmthk.h) |