struktur DXGKARGCB_CREATE_PHYSICAL_MEMORY_OBJECT (d3dkmddi.h)
Struktur DXGKARGCB_CREATE_PHYSICAL_MEMORY_OBJECT berisi informasi yang digunakan oleh fungsi panggilan balik DXGKCB_CREATEPHYSICALMEMORYOBJECT untuk membuat memori fisik.
Sintaks
typedef struct _DXGKARGCB_CREATE_PHYSICAL_MEMORY_OBJECT {
HANDLE hAdapter;
SIZE_T Size;
ULONG_PTR Context;
DXGK_PHYSICAL_MEMORY_TYPE Type;
DXGK_MEMORY_CACHING_TYPE CacheType;
union {
struct {
PHYSICAL_ADDRESS LowAddress;
PHYSICAL_ADDRESS HighAddress;
PHYSICAL_ADDRESS SkipBytes;
UINT Flags;
} Mdl;
struct {
PHYSICAL_ADDRESS LowestAcceptableAddress;
PHYSICAL_ADDRESS HighestAcceptableAddress;
PHYSICAL_ADDRESS BoundaryAddressMultiple;
} ContiguousMemory;
struct {
ACCESS_MASK DesiredAccess;
POBJECT_ATTRIBUTES ObjectAttributes;
ULONG PageProtection;
ULONG AllocationAttributes;
} Section;
struct {
PHYSICAL_ADDRESS BaseAddress;
} IOSpace;
};
HANDLE hPhysicalMemoryObject;
HANDLE hAdapterMemoryObject;
} DXGKARGCB_CREATE_PHYSICAL_MEMORY_OBJECT;
Anggota
hAdapter
Adaptor tempat memori fisik ini akan dikaitkan. Parameter ini bersifat opsional dan dapat berupa NULL. Jika NULL, driver harus memanggil DXGKCB_OPENPHYSICALMEMORYOBJECT sebelum membuat daftar deskriptor alamat (ADL). Lihat Keterangan untuk informasi selengkapnya.
Size
Ukuran, dalam byte, dari memori fisik yang diminta. Jika JenisDXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE, Ukuran mengacu pada ukuran wilayah ruang IO yang disediakan oleh driver.
Context
Sepotong data konteks ukuran pointer yang akan disimpan Dxgkrnl bersama objek memori fisik untuk tujuan penelusuran kesalahan. Nilai ini tidak pernah digunakan secara langsung atau didereferensikan oleh Dxgkrnl dengan cara apa pun. Ini mungkin nilai apa pun yang dipilih driver, seperti alamat memori ke objek milik driver yang memiliki objek memori fisik ini.
Type
Nilai DXGK_PHYSICAL_MEMORY_TYPE yang menentukan jenis memori fisik yang akan dibuat. Jika JenisDXGK_PHYSICAL_MEMORY_TYPE_SECTION, maka atribut alokasi objek bagian selalu SEC_COMMIT (bagian yang dipetakan PF), dan jenis cache ditentukan oleh CacheType.
CacheType
Jenis cache halaman. Jika JenisDXGK_PHYSICAL_MEMORY_TYPE_SECTION, CacheType harus di-cache, atau digabungkan dengan tulis.
Mdl
Digunakan hanya ketika JenisDXGK_PHYSICAL_MEMORY_TYPE_MDL.
Mdl.LowAddress
Digunakan hanya ketika JenisDXGK_PHYSICAL_MEMORY_TYPE_MDL. Lihat MmAllocatePagesForMdlEx untuk detailnya.
Mdl.HighAddress
Digunakan hanya ketika JenisDXGK_PHYSICAL_MEMORY_TYPE_MDL. Lihat MmAllocatePagesForMdlEx untuk detailnya.
Mdl.SkipBytes
Digunakan hanya ketika JenisDXGK_PHYSICAL_MEMORY_TYPE_MDL. Lihat MmAllocatePagesForMdlEx untuk detailnya.
Mdl.Flags
Digunakan hanya ketika JenisDXGK_PHYSICAL_MEMORY_TYPE_MDL. Lihat MmAllocatePagesForMdlEx untuk detailnya.
ContiguousMemory
Digunakan hanya saat JenisDXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY.
ContiguousMemory.LowestAcceptableAddress
Digunakan hanya saat JenisDXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY. Lihat MmAllocateContiguousMemorySpecifyCache untuk detailnya.
ContiguousMemory.HighestAcceptableAddress
Digunakan hanya saat JenisDXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY. Lihat MmAllocateContiguousMemorySpecifyCache untuk detailnya.
ContiguousMemory.BoundaryAddressMultiple
Digunakan hanya saat JenisDXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY. Lihat MmAllocateContiguousMemorySpecifyCache untuk detailnya.
Section
Digunakan hanya saat JenisDXGK_PHYSICAL_MEMORY_TYPE_SECTION.
Section.DesiredAccess
Digunakan hanya saat JenisDXGK_PHYSICAL_MEMORY_TYPE_SECTION. Lihat ZwCreateSection untuk detailnya.
Section.ObjectAttributes
Digunakan hanya saat JenisDXGK_PHYSICAL_MEMORY_TYPE_SECTION. Lihat ZwCreateSection untuk detailnya.
Section.PageProtection
Digunakan hanya saat JenisDXGK_PHYSICAL_MEMORY_TYPE_SECTION. Nilai ini harus menjadi salah satu nilai berikut: PAGE_READONLY, PAGE_READWRITE, PAGE_EXECUTE, atau PAGE_WRITECOPY. Jangan tentukan atribut cache (misalnya SEC_WRITECOMBINED) di bidang ini. Atribut yang dialokasikan dari objek bagian selalu SEC_COMMIT (bagian yang dipetakan PF), dan jenis cache ditentukan oleh CacheType. Lihat ZwCreateSection untuk detailnya.
Section.AllocationAttributes
Digunakan hanya saat JenisDXGK_PHYSICAL_MEMORY_TYPE_SECTION. Lihat ZwCreateSection untuk detailnya.
IOSpace
Digunakan hanya saat JenisDXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE.
IOSpace.BaseAddress
Digunakan hanya saat JenisDXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE. Menentukan alamat fisik awal wilayah ruang IO. Nilai ini harus diratakan ke kelipatan PAGE_SIZE.
hPhysicalMemoryObject
Pada panggilan yang berhasil ke DXGKCB_CREATEPHYSICALMEMORYOBJECT, ini adalah handel buram kembali ke objek memori fisik yang dikelola Dxgkrnl. Objek memori fisik dapat diberikan ke fungsi manajemen memori terdokumen lainnya untuk memetakan alamat virtual untuk akses CPU. Handel ini dapat ditutup dengan memanggil DXGKCB_DESTROYPHYSICALMEMORYOBJECT.
hAdapterMemoryObject
Pada panggilan ke DXGKCB_CREATEPHYSICALMEMORYOBJECT yang berhasil, ini adalah handel buram kembali ke objek memori adaptor yang dikelola Dxgkrnl. Objek memori adaptor dapat diberikan ke fungsi manajemen memori terdokumen lainnya untuk menghasilkan ADL untuk akses GPU. Jika hAdapter adalah NULL, nilai ini akan menjadi NULL dan driver harus memanggil DXGKCB_OPENPHYSICALMEMORYOBJECT untuk membuat handel ini. Handel ini dapat ditutup dengan memanggil DXGKCB_CLOSEPHYSICALMEMORYOBJECT, atau dapat disediakan untuk DXGKCB_DESTROYPHYSICALMEMORYOBJECT (tetapi tidak keduanya).
Keterangan
Bidang hAdapter bersifat opsional saat membuat objek memori fisik, tetapi objek tersebut harus dibuka terhadap adaptor dalam panggilan ke DXGKCB_OPENPHYSICALMEMORYOBJECT sebelum ADL dapat dibuat. Ini karena ADL mewakili memori logis, dan setiap adaptor logis memiliki domain yang unik. Tidak masalah adaptor fisik mana yang dibuat memorinya. Ini akan dibuka oleh adaptor logis yang dimiliki adaptor fisik dan akan dipetakan ke semua adaptor fisik yang ditautkan.
Lihat remapping IOMMU DMA untuk informasi selengkapnya.
Persyaratan
Persyaratan | Nilai |
---|---|
Server minimum yang didukung | Windows Server 2022 (WDDM 2.9) |
Header | d3dkmddi.h |
Lihat juga
DXGKCB_CLOSEPHYSICALMEMORYOBJECT
DXGKCB_CREATEPHYSICALMEMORYOBJECT
DXGKCB_DESTROYPHYSICALMEMORYOBJECT
DXGKCB_OPENPHYSICALMEMORYOBJECT