Bagikan melalui


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

DXGK_PHYSICAL_MEMORY_TYPE

DXGKCB_ALLOCATEADL

DXGKCB_CLOSEPHYSICALMEMORYOBJECT

DXGKCB_CREATEPHYSICALMEMORYOBJECT

DXGKCB_DESTROYPHYSICALMEMORYOBJECT

DXGKCB_OPENPHYSICALMEMORYOBJECT

MmAllocateContiguousMemorySpecifyCache

MmAllocatePagesForMdlEx

ZwCreateSection