struktur DXGKARG_BUILDPAGINGBUFFER (d3dkmddi.h)

Struktur DXGKARG_BUILDPAGINGBUFFER menjelaskan parameter untuk panggilan balik DxgkDdiBuildPagingBuffer** yang membangun buffer halaman untuk digunakan dalam operasi transfer memori.

Sintaks

typedef struct _DXGKARG_BUILDPAGINGBUFFER {
  VOID                             *pDmaBuffer;
  UINT                             DmaSize;
  VOID                             *pDmaBufferPrivateData;
  UINT                             DmaBufferPrivateDataSize;
  DXGK_BUILDPAGINGBUFFER_OPERATION Operation;
  UINT                             MultipassOffset;
  union {
    struct {
      HANDLE             hAllocation;
      UINT               TransferOffset;
      SIZE_T             TransferSize;
      struct {
        UINT SegmentId;
        union {
          LARGE_INTEGER SegmentAddress;
          MDL           *pMdl;
        };
      } Source;
      struct {
        UINT SegmentId;
        union {
          LARGE_INTEGER SegmentAddress;
          MDL           *pMdl;
        };
      } Destination;
      DXGK_TRANSFERFLAGS Flags;
      UINT               MdlOffset;
    } Transfer;
    struct {
      HANDLE hAllocation;
      SIZE_T FillSize;
      UINT   FillPattern;
      struct {
        UINT          SegmentId;
        LARGE_INTEGER SegmentAddress;
      } Destination;
    } Fill;
    struct {
      HANDLE                   hAllocation;
      DXGK_DISCARDCONTENTFLAGS Flags;
      UINT                     SegmentId;
      PHYSICAL_ADDRESS         SegmentAddress;
    } DiscardContent;
    struct {
      UINT             SegmentId;
      PHYSICAL_ADDRESS PhysicalAddress;
    } ReadPhysical;
    struct {
      UINT             SegmentId;
      PHYSICAL_ADDRESS PhysicalAddress;
    } WritePhysical;
    struct {
      HANDLE                hDevice;
      HANDLE                hAllocation;
      UINT                  SegmentId;
      SIZE_T                OffsetInPages;
      SIZE_T                NumberOfPages;
      PMDL                  pMdl;
      DXGK_MAPAPERTUREFLAGS Flags;
      ULONG                 MdlOffset;
    } MapApertureSegment;
    struct {
      HANDLE           hDevice;
      HANDLE           hAllocation;
      UINT             SegmentId;
      SIZE_T           OffsetInPages;
      SIZE_T           NumberOfPages;
      PHYSICAL_ADDRESS DummyPage;
    } UnmapApertureSegment;
    struct {
      HANDLE             hAllocation;
      UINT               TransferOffset;
      SIZE_T             TransferSize;
      struct {
        UINT SegmentId;
        union {
          LARGE_INTEGER SegmentAddress;
          MDL           *pMdl;
        };
      } Source;
      struct {
        UINT SegmentId;
        union {
          LARGE_INTEGER SegmentAddress;
          MDL           *pMdl;
        };
      } Destination;
      DXGK_TRANSFERFLAGS Flags;
      UINT               SwizzlingRangeId;
      UINT               SwizzlingRangeData;
    } SpecialLockTransfer;
    struct {
      HANDLE hAllocation;
      struct {
        UINT                   SegmentId;
        union {
          LARGE_INTEGER SegmentAddress;
          MDL           *pMdl;
        };
        PVOID                  VirtualAddress;
        D3DGPU_VIRTUAL_ADDRESS GpuVirtualAddress;
      } Destination;
    } InitContextResource;
    DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL         TransferVirtual;
    DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL             FillVirtual;
    DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE         UpdatePageTable;
    DXGK_BUILDPAGINGBUFFER_FLUSHTLB                FlushTlb;
    DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES    CopyPageTableEntries;
    DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION UpdateContextAllocation;
    DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY         NotifyResidency;
    DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE    SignalMonitoredFence;
    struct {
      HANDLE                hDevice;
      HANDLE                hAllocation;
      UINT                  SegmentId;
      SIZE_T                OffsetInPages;
      SIZE_T                NumberOfPages;
      DXGK_ADL              Adl;
      DXGK_MAPAPERTUREFLAGS Flags;
      ULONG                 AdlOffset;
      PVOID                 CpuVisibleAddress;
    } MapApertureSegment2;
    struct {
      UINT Reserved[64];
    } Reserved;
  };
  HANDLE                           hSystemContext;
  D3DGPU_VIRTUAL_ADDRESS           DmaBufferGpuVirtualAddress;
  UINT                             DmaBufferWriteOffset;
} DXGKARG_BUILDPAGINGBUFFER;

Anggota

pDmaBuffer

[masuk/keluar] Alamat virtual ke byte pertama yang tersedia di penyangga halaman. Ketika driver pertama kali dipanggil dengan buffer halaman baru, alamat virtual ini selaras pada 4 KB. Driver mengemas operasi dengan ketat di buffer halaman sampai buffer halaman penuh dan kemudian menggunakan buffer halaman baru. Oleh karena itu, jika unit pemrosesan grafis (GPU) memerlukan penyelarasan khusus untuk pengiriman paging-buffer, driver harus memberlakukan penyelarasan ini dengan mengayuh operasi yang ditulisnya ke buffer paging. Sebelum fungsi DxgkDdiBuildPagingBuffer kembali, driver harus memperbarui pDmaBuffer untuk menunjuk melewati byte terakhir yang ditulis ke buffer halaman.

DmaSize

[masuk/keluar] Ukuran, dalam byte, dari buffer halaman yang ditentukan pDmaBuffer .

pDmaBufferPrivateData

[masuk/keluar] Penunjuk ke struktur data privat residen driver yang terkait dengan buffer akses memori langsung (DMA) (yaitu, paging buffer) yang ditentukan pDmaBuffer .

DmaBufferPrivateDataSize

[masuk/keluar] Jumlah byte yang tetap berada dalam struktur data privat yang dituju pDmaBufferPrivateData untuk operasi saat ini.

Operation

[in] Nilai berjenis DXGK_BUILDPAGINGBUFFER_OPERATION yang menunjukkan jenis operasi memori yang akan dilakukan.

MultipassOffset

[masuk/keluar] Nilai UINT yang menentukan kemajuan operasi paging jika beberapa buffer halaman diperlukan. Driver menetapkan nilai ini untuk menunjukkan pemisahan menjadi beberapa buffer halaman untuk lebih dari satu operasi transfer. Misalnya, driver dapat menyimpan nomor halaman yang terakhir ditransfer untuk transfer berbasis halaman.

Transfer

[in] Struktur yang menjelaskan operasi transfer.

Transfer.hAllocation

[in] Handel untuk alokasi bahwa fungsi DxgkDdiCreateAllocation driver sebelumnya dikembalikan dalam anggota hAllocation dari struktur DXGK_ALLOCATIONINFO, yang merupakan bagian dari anggota pAllocationInfo struktur DXGKARG_CREATEALLOCATION. Handel alokasi menunjuk ke buffer yang berisi data driver privat untuk transfer.

Transfer.TransferOffset

[in] Offset, dalam byte, dari halaman pertama dalam alokasi yang ditransfer. Offset ini hanya diterapkan ke lokasi yang dijelaskan lokasi segmen. Offset ini tidak berlaku untuk deskripsi MDL dari rentang memori. Jika driver memerlukan lebih dari satu buffer halaman untuk menyelesaikan transfer (yaitu, driver mengembalikan STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER dari fungsi DxgkDdiBuildPagingBuffer ), TransferOffset sama untuk setiap panggilan ke DxgkDdiBuildPagingBuffer untuk transfer ini.

Transfer.TransferSize

[in] Ukuran, dalam byte, dari informasi memori yang akan ditransfer.

Transfer.Source

[in] Struktur yang menjelaskan alokasi sumber. Struktur ini berisi anggota SegmentId dan gabungan yang berisi offset ke dalam segmen alokasi sumber (SegmentAddress) atau pointer ke MDL untuk sumber (pMdl).

Transfer.Source.SegmentId

[in] Pengidentifikasi segmen dalam alokasi sumber, atau nol jika alokasi sumber dijelaskan oleh anggota pMdl dari serikat pekerja yang dikandung Sumber .

Transfer.Source.SegmentAddress

[in] Alamat segmen sumber, jika anggota SegmentIdSumber bukan nol. Subsistem kernel grafis DirectX menghitung alamat segmen sebagai jumlah offset segmen dan alamat dasar segmen: SegmentAddress = SegmentOffset + Segment.BaseAddr.

Transfer.Source.pMdl

[in] Penunjuk ke buffer yang berisi struktur MDL yang menjelaskan halaman memori sistem untuk sumber, jika anggota SegmentIdSumber adalah nol.

Transfer.Destination

[in] Struktur yang menjelaskan alokasi tujuan. Struktur ini berisi anggota SegmentId dan gabungan yang berisi offset ke dalam segmen alokasi tujuan (SegmentAddress) atau penunjuk ke MDL untuk tujuan (pMdl).

Transfer.Destination.SegmentId

[in] Pengidentifikasi segmen dalam alokasi tujuan, atau nol jika alokasi tujuan dijelaskan oleh anggota pMdl dari serikat pekerja yang berisi Tujuan .

Transfer.Destination.SegmentAddress

[in] Alamat segmen tujuan, jika anggota SegmentIdTujuan bukan nol. Subsistem kernel grafis DirectX menghitung alamat segmen sebagai jumlah offset segmen dan alamat dasar segmen: SegmentAddress = SegmentOffset + Segment.BaseAddr.

Transfer.Destination.pMdl

[in] Penunjuk ke buffer yang berisi struktur MDL yang menjelaskan halaman memori sistem untuk tujuan, jika anggota SegmentIdTujuan adalah nol.

Transfer.Flags

[in] Struktur DXGK_TRANSFERFLAGS yang mengidentifikasi, dalam bendera bidang bit, jenis operasi transfer kunci khusus yang akan dilakukan.

Transfer.MdlOffset

[in] Offset, di halaman memori sistem, dalam struktur MDL yang dirujuk anggota pMdl , ke halaman memori sistem pertama untuk operasi saat ini. Driver dapat memperoleh alamat fisik halaman memori sistem pertama dengan memanggil fungsi [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray sebagai berikut.

MmGetMdlPfnArray(pMdl)[MdlOffset];

Fill

[in] Struktur yang menjelaskan operasi pengisian.

Fill.hAllocation

[in] Handel ke alokasi yang berisi konten untuk diisi.

Fill.FillSize

[in] Ukuran, dalam byte, dari informasi memori yang akan diisi.

Fill.FillPattern

[in] Pola untuk mengisi tujuan dengan. Manajer memori video menggunakan informasi ini untuk menginisialisasi memori video ke pola tertentu ketika alokasi tanpa konten pertama kali di-paged in. Dalam hal ini, tidak ada sumber untuk permintaan isian—hanya ada tujuan.

Fill.Destination

[in] Struktur yang menjelaskan alokasi tujuan untuk operasi pengisian.

Fill.Destination.SegmentId

[in] Pengidentifikasi segmen dalam alokasi tujuan.

Fill.Destination.SegmentAddress

[in] Alamat segmen tujuan. Subsistem kernel grafis DirectX menghitung alamat segmen sebagai jumlah offset segmen dan alamat dasar segmen: SegmentAddress = SegmentOffset + Segment.BaseAddr.

DiscardContent

[in] Struktur yang menjelaskan operasi membuang konten.

DiscardContent.hAllocation

[in] Handel ke alokasi yang berisi konten untuk dibuang.

DiscardContent.Flags

[in] Struktur DXGK_DISCARDCONTENTFLAGS yang mengidentifikasi, dalam bendera bidang bit, jenis operasi buang-konten untuk dilakukan.

DiscardContent.SegmentId

[in] Pengidentifikasi segmen dalam alokasi untuk membuang konten.

DiscardContent.SegmentAddress

[in] Jenis data PHYSICAL_ADDRESS (yang didefinisikan sebagai LARGE_INTEGER) yang menunjukkan alamat segmen. Subsistem kernel grafis DirectX menghitung alamat segmen sebagai jumlah offset segmen dan alamat dasar segmen: SegmentAddress = SegmentOffset + Segment.BaseAddr. Lokasi ini adalah tempat asal konten dibuang.

ReadPhysical

[in] Struktur yang menjelaskan operasi baca-fisik.

ReadPhysical.SegmentId

[in] Pengidentifikasi segmen tempat data dibaca.

ReadPhysical.PhysicalAddress

[in] Jenis data PHYSICAL_ADDRESS (yang didefinisikan sebagai LARGE_INTEGER) yang menunjukkan alamat fisik, dalam segmen yang ditentukan SegmentId , tempat data dibaca.

WritePhysical

[in] Struktur yang menjelaskan operasi tulis-fisik.

WritePhysical.SegmentId

[in] Pengidentifikasi segmen tempat data ditulis.

WritePhysical.PhysicalAddress

[in] Jenis data PHYSICAL_ADDRESS (yang didefinisikan sebagai LARGE_INTEGER) yang menunjukkan alamat fisik, dalam segmen yang ditentukan SegmentId , tempat data ditulis.

MapApertureSegment

[in] Struktur yang menjelaskan operasi map-aperture-segment menggunakan MDL.

MapApertureSegment.hDevice

[in] Handel ke perangkat yang memiliki alokasi yang ditentukan hAllocation yang dipetakan ke segmen aperture yang ditentukan SegmentId .

Untuk alokasi bersama, hDevice diatur ke perangkat yang ditentukan manajer memori video untuk menjadi pemilik alokasi.

hDevice adalah NULL untuk alokasi utama.

MapApertureSegment.hAllocation

[in] Handel ke alokasi yang dipetakan ke segmen aperture yang ditentukan SegmentId .

hAllocationADALAH NULL ketika buffer DMA dipetakan ke segmen aperture karena buffer DMA tidak dibuat secara eksplisit oleh driver.

MapApertureSegment.SegmentId

[in] Pengidentifikasi segmen aperture untuk dikonfigurasi.

MapApertureSegment.OffsetInPages

[in] Offset, di halaman, dari awal segmen ke halaman pertama untuk dipetakan.

MapApertureSegment.NumberOfPages

[in] Jumlah halaman yang akan dipetakan.

MapApertureSegment.pMdl

[in] Penunjuk ke buffer yang berisi struktur MDL yang menjelaskan halaman memori sistem fisik untuk dipetakan ke segmen aperture.

MapApertureSegment.Flags

[in] Struktur DXGK_MAPAPERTUREFLAGS yang mengidentifikasi, dalam bendera bidang bit, jenis operasi map-aperture-segment yang akan dilakukan.

MapApertureSegment.MdlOffset

[in] Offset, di halaman memori sistem, dalam struktur MDL yang dirujuk anggota pMdl , ke halaman memori sistem pertama untuk operasi saat ini. Driver dapat memperoleh alamat fisik halaman memori sistem pertama dengan memanggil fungsi [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray sebagai berikut.

MmGetMdlPfnArray(pMdl)[MdlOffset];

UnmapApertureSegment

[in] Struktur yang menjelaskan operasi unmap-aperture-segment.

UnmapApertureSegment.hDevice

[in] Handel ke perangkat yang memiliki alokasi yang ditentukan hAllocation yang tidak dipetakan dari segmen aperture yang ditentukan SegmentId .

Untuk alokasi bersama, hDevice diatur ke perangkat yang ditentukan manajer memori video untuk menjadi pemilik alokasi.

hDevice adalah NULL untuk alokasi utama.

UnmapApertureSegment.hAllocation

[in] Handel ke alokasi yang tidak dipetakan dari segmen aperture yang ditentukan SegmentId .

hAllocationADALAH NULL ketika buffer DMA tidak dipetakan dari segmen aperture karena buffer DMA tidak dibuat secara eksplisit oleh driver.

UnmapApertureSegment.SegmentId

[in] Pengidentifikasi segmen aperture untuk dikonfigurasi.

UnmapApertureSegment.OffsetInPages

[in] Offset, di halaman, dari awal segmen ke halaman pertama hingga unmap.

UnmapApertureSegment.NumberOfPages

[in] Jumlah halaman yang akan di-unmap.

UnmapApertureSegment.DummyPage

[in] Jenis data PHYSICAL_ADDRESS (yang didefinisikan sebagai LARGE_INTEGER) yang menunjukkan alamat fisik halaman tempat penampung tempat driver harus memetakan rentang yang tidak dipetakan.

SpecialLockTransfer

[in] Struktur yang menjelaskan operasi transfer kunci khusus.

SpecialLockTransfer.hAllocation

[in] Handel untuk alokasi bahwa fungsi DxgkDdiCreateAllocation driver sebelumnya dikembalikan dalam anggota hAllocation dari struktur DXGK_ALLOCATIONINFO, yang merupakan bagian dari anggota pAllocationInfo struktur DXGKARG_CREATEALLOCATION. Handel alokasi menunjuk ke buffer yang berisi data driver privat untuk transfer kunci khusus.

SpecialLockTransfer.TransferOffset

[in] Offset, dalam byte, dari halaman pertama dalam alokasi yang ditransfer. Offset ini hanya diterapkan ke lokasi yang dijelaskan lokasi segmen. Offset ini tidak berlaku untuk deskripsi MDL dari rentang memori. Jika driver memerlukan lebih dari satu buffer halaman untuk menyelesaikan transfer (yaitu, driver mengembalikan STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER dari fungsi DxgkDdiBuildPagingBuffer ), TransferOffset sama untuk setiap panggilan ke DxgkDdiBuildPagingBuffer untuk transfer ini.

SpecialLockTransfer.TransferSize

[in] Ukuran, dalam byte, dari informasi memori yang akan ditransfer.

SpecialLockTransfer.Source

[in] Struktur yang menjelaskan alokasi sumber. Struktur ini berisi anggota SegmentId dan gabungan yang berisi offset ke dalam segmen alokasi sumber (SegmentAddress) atau pointer ke MDL untuk sumber (pMdl).

SpecialLockTransfer.Source.SegmentId

[in] Pengidentifikasi segmen dalam alokasi sumber, atau nol jika alokasi sumber dijelaskan oleh anggota pMdl dari serikat pekerja yang dikandung Sumber .

SpecialLockTransfer.Source. (union yang tidak disebutkan namanya)

[in] Gabungan yang berisi offset ke dalam segmen alokasi sumber (SegmentAddress) atau pointer ke MDL untuk sumber (pMdl).

SpecialLockTransfer.Source.SegmentAddress

[in] Alamat segmen sumber, jika anggota SegmentIdSumber bukan nol. Subsistem kernel grafis DirectX menghitung alamat segmen sebagai jumlah offset segmen dan alamat dasar segmen: SegmentAddress = SegmentOffset + Segment.BaseAddr.

SpecialLockTransfer.Source.pMdl

[in] Penunjuk ke buffer yang berisi struktur MDL yang menjelaskan halaman memori sistem untuk sumber, jika anggota SegmentIdSumber adalah nol.

SpecialLockTransfer.Destination

[in] Struktur yang menjelaskan alokasi tujuan. Struktur ini berisi anggota SegmentId dan serikat pekerja yang berisi offset ke dalam segmen alokasi tujuan (SegmentAddress) atau pointer ke MDL untuk tujuan (pMdl).

SpecialLockTransfer.Destination.SegmentId

[in] Pengidentifikasi segmen dalam alokasi tujuan, atau nol jika alokasi tujuan dijelaskan oleh anggota pMdl dari serikat pekerja yang berisi Tujuan .

SpecialLockTransfer.Destination. (union yang tidak disebutkan namanya)

[in] Serikat pekerja yang berisi offset ke dalam segmen alokasi tujuan (SegmentAddress) atau pointer ke MDL untuk tujuan (pMdl).

SpecialLockTransfer.Destination.SegmentAddress

[in] Alamat segmen tujuan, jika anggota SegmentIdTujuan bukan nol. Subsistem kernel grafis DirectX menghitung alamat segmen sebagai jumlah offset segmen dan alamat dasar segmen: SegmentAddress = SegmentOffset + Segment.BaseAddr.

SpecialLockTransfer.Destination.pMdl

[in] Penunjuk ke buffer yang berisi struktur MDL yang menjelaskan halaman memori sistem untuk tujuan, jika anggota SegmentIdTujuan adalah nol.

SpecialLockTransfer.Flags

[in] Struktur DXGK_TRANSFERFLAGS yang mengidentifikasi, dalam bendera bit-field, jenis operasi transfer kunci khusus untuk dilakukan.

SpecialLockTransfer.SwizzlingRangeId

[in] Nilai UINT yang mengidentifikasi rentang yang menggelepar.

SpecialLockTransfer.SwizzlingRangeData

[in] Nilai UINT yang menentukan data rentang yang menggeliat.

InitContextResource

[in] Struktur yang menjelaskan operasi inisialisasi konteks. Didukung dimulai dengan Windows 8.

InitContextResource.hAllocation

[in] Handel ke alokasi konteks yang dibuat ketika driver bernama DxgkCbCreateContextAllocation. Handel untuk alokasi ini dikembalikan di anggota hAllocation dari struktur DXGKARGCB_CREATECONTEXTALLOCATION . Driver meneruskan pointer ke struktur ini dalam parameter ContextAllocation saat memanggil DxgkCbCreateContextAllocation.

InitContextResource.Destination

[in] Struktur yang menjelaskan alokasi konteks tujuan. Struktur ini berisi anggota SegmentId dan serikat pekerja yang berisi offset ke dalam segmen alokasi konteks tujuan (SegmentAddress) atau penunjuk ke MDL untuk tujuan (pMdl).

InitContextResource.Destination.SegmentId

[in] Pengidentifikasi segmen dalam alokasi konteks tujuan, atau nol jika alokasi konteks tujuan dijelaskan oleh anggota pMdl dari serikat pekerja yang dikandung Tujuan .

InitContextResource.Destination. (union yang tidak disebutkan namanya)

[in] Gabungan yang berisi offset ke dalam segmen alokasi konteks tujuan (SegmentAddress) atau penunjuk ke MDL untuk tujuan (pMdl).

InitContextResource.Destination.SegmentAddress

[in] Alamat segmen tujuan, jika anggota SegmentIdTujuan bukan nol. Subsistem kernel grafis DirectX menghitung alamat segmen sebagai jumlah offset segmen dan alamat dasar segmen: SegmentAddress = SegmentOffset + Segment.BaseAddr.

InitContextResource.Destination.pMdl

[in] Penunjuk ke buffer yang berisi struktur MDL yang menjelaskan halaman memori sistem untuk tujuan, jika anggota SegmentIdTujuan adalah nol.

InitContextResource.Destination.VirtualAddress

[in] Alamat virtual alokasi konteks tujuan. Alamat ini valid selama masa pakai alokasi konteks.

Ikuti prosedur di bagian Alamat virtual untuk alokasi konteks tujuan" dari topik DxgkCbCreateContextAllocation untuk memastikan bahwa alamat virtual valid.

InitContextResource.Destination.GpuVirtualAddress

Alamat virtual GPU dari sumber daya konteks untuk diinisialisasi.

TransferVirtual

Struktur DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL yang menjelaskan operasi yang digunakan untuk mentransfer konten alokasi antar lokasi dalam memori.

FillVirtual

Struktur DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL yang menjelaskan operasi yang digunakan untuk mengisi alokasi dengan pola.

UpdatePageTable

Struktur DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE yang menjelaskan operasi yang digunakan untuk memperbarui tabel halaman.

FlushTlb

Struktur DXGK_BUILDPAGINGBUFFER_FLUSHTLB yang menjelaskan operasi yang digunakan untuk menyiram buffer look-aside terjemahan.

CopyPageTableEntries

Struktur DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES yang menjelaskan operasi yang digunakan entri tabel halaman salin dari satu lokasi ke lokasi lainnya.

UpdateContextAllocation

Struktur DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION yang menjelaskan operasi yang digunakan untuk memperbarui konten konteks atau alokasi perangkat.

NotifyResidency

Struktur DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY yang menjelaskan operasi perubahan alokasi residensi.

SignalMonitoredFence

[in] Struktur DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE yang menjelaskan instruksi GPU untuk memberi sinyal objek pagar yang dipantau halaman ke buffer DMA. Tersedia dimulai dengan Windows 10, versi 1703 (WDDM 2.2).

MapApertureSegment2

MapApertureSegment2.hDevice

[in] Handel ke perangkat yang memiliki alokasi yang ditentukan hAllocation yang dipetakan ke dalam segmen aperture yang ditentukan SegmentId .

Untuk alokasi bersama, hDevice diatur ke perangkat yang ditentukan manajer memori video sebagai pemilik alokasi.

hDevice adalah NULL untuk alokasi utama.

MapApertureSegment2.hAllocation

[in] Handel driver ke alokasi yang dipetakan ke segmen aperture yang ditentukan SegmentId .

hAllocation adalah NULL ketika buffer DMA dipetakan ke segmen aperture karena buffer DMA tidak dibuat secara eksplisit oleh driver.

MapApertureSegment2.SegmentId

[in] Pengidentifikasi segmen aperture untuk dikonfigurasi.

MapApertureSegment2.OffsetInPages

[in] Offset, di halaman, dari awal segmen hingga halaman pertama yang akan dipetakan.

MapApertureSegment2.NumberOfPages

[in] Ukuran rentang yang dipetakan dalam alokasi, di halaman.

MapApertureSegment2.Adl

[in] Struktur DXGK_ADL dengan daftar pendeskripsi alamat (ADL) yang menjelaskan pemetaan alamat logis (halaman) untuk memori alokasi. ADL ini dapat berdampingan atau array halaman; driver harus dapat menangani kedua kasus.

MapApertureSegment2.Flags

[in] Struktur DXGK_MAPAPERTUREFLAGS yang mengidentifikasi, dalam bendera bit-field, jenis operasi map-aperture-segment untuk dilakukan.

MapApertureSegment2.AdlOffset

[in] Offset dalam ADL ke awal rentang alamat logis yang dipetakan untuk operasi saat ini, ditentukan dalam halaman memori sistem. Jika ADL adalah ADL yang berdampingan, maka anggota BasePageNumber ADL adalah alamat awal dari rentang memori yang berdampingan. Jika tidak, gunakan anggota Halaman ADL untuk memori yang tidak berdampingan.

MapApertureSegment2.CpuVisibleAddress

Jika alokasi driver dibuat dengan set bendera MapApertureCpuVisible , CpuVisibleAddress adalah penunjuk non-null ke alamat virtual mode kernel yang dipetakan sistem untuk operasi DXGK_OPERATION_MAP_APERTURE_SEGMENT2 . Alamat ini berlaku selama alokasi dipetakan ke segmen aperture dan akan segera dibebaskan setelah panggilan DXGK_OPERATION_UNMAP_APERTURE_SEGMENT yang sesuai untuk alokasi yang sama.

Jika MapApertureCpuVisible tidak ditentukan, CpuVisibleAddress adalah NULL untuk operasi DXGK_OPERATION_MAP_APERTURE_SEGMENT2 .

Reserved

Anggota ini dicadangkan dan tidak boleh digunakan.

Reserved.Reserved[64]

Anggota ini dicadangkan dan tidak boleh digunakan.

hSystemContext

[in] Handel ke konteks sistem untuk operasi paging.

DmaBufferGpuVirtualAddress

Jenis data D3DGPU_VIRTUAL_ADDRESS yang menunjukkan alamat virtual tempat buffer DMA di-paged in. Jika alamat fisik adalah nol, buffer DMA tidak di-paged dengan benar.

DmaBufferWriteOffset

Offset operasi saat ini dalam byte dari awal buffer DMA.

Keterangan

MDL didefinisikan dalam dokumentasi Windows Driver Model (WDM).

Kelas sinkronisasi WDDM:

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung dimulai dengan Windows Vista.
Header d3dkmddi.h (termasuk D3dkmddi.h)

Lihat juga

DXGKARGCB_CREATECONTEXTALLOCATION

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFO

DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES

DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL

DXGK_BUILDPAGINGBUFFER_FLUSHTLB

DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY

DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL

DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION

DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE

DXGK_DISCARDCONTENTFLAGS

DXGK_MAPAPERTUREFLAGS

DXGK_TRANSFERFLAGS

DxgkCbCreateContextAllocation

DxgkDdiBuildPagingBuffer

DxgkDdiCreateAllocation

MDL

[MmGetMdlPfnArray] (/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray

pfnLockCb