PALLOCATE_DOMAIN_COMMON_BUFFER fungsi panggilan balik (wdm.h)

Fungsi panggilan balik ini mengalokasikan memori untuk buffer umum domain.

Sintaks

PALLOCATE_DOMAIN_COMMON_BUFFER PallocateDomainCommonBuffer;

NTSTATUS PallocateDomainCommonBuffer(
  [in]           PDMA_ADAPTER DmaAdapter,
  [in]           HANDLE DomainHandle,
  [in, optional] PPHYSICAL_ADDRESS MaximumAddress,
  [in]           ULONG Length,
  [in]           ULONG Flags,
  [in, optional] MEMORY_CACHING_TYPE *CacheType,
  [in]           NODE_REQUIREMENT PreferredNode,
  [out]          PPHYSICAL_ADDRESS LogicalAddress,
  [out]          PVOID *VirtualAddress
)
{...}

Parameter

[in] DmaAdapter

Penunjuk ke struktur DMA_ADAPTER. Struktur ini adalah objek adaptor yang mewakili perangkat DMA master bus driver atau saluran DMA sistem. Penelepon memperoleh pointer ini dari panggilan sebelumnya ke rutinitas IoGetDmaAdapter .

[in] DomainHandle

Handel ke domain DMA yang diperoleh pemanggil dari panggilan sebelumnya ke PGET_DMA_DOMAIN.

[in, optional] MaximumAddress

Penunjuk ke variabel yang berisi alamat logis maksimum untuk buffer umum. Parameter ini menunjukkan bahwa buffer harus dialokasikan dari memori di bawah alamat ini. Parameter ini bersifat opsional dan dapat ditentukan sebagai NULL untuk menunjukkan bahwa tidak ada alamat maksimum.

[in] Length

Ukuran, dalam byte, dari buffer umum yang akan dialokasikan untuk operasi DMA.

[in] Flags

Ukuran, dalam byte, dari buffer umum yang akan dialokasikan untuk operasi DMA.

Nilai yang mungkin termasuk:

  • DOMAIN_COMMON_BUFFER_LARGE_PAGE

    Buffer umum akan dialokasikan menggunakan granularitas halaman yang lebih besar dari PAGE_SIZE * 512. Perhatikan bahwa ini dapat meningkatkan kemungkinan alokasi tidak berhasil.

[in, optional] CacheType

Penunjuk ke enumerasi MEMORY_CACHING_TYPE yang menunjukkan apakah rutinitas harus mengaktifkan atau menonaktifkan memori cache di buffer umum yang akan dialokasikan. Hanya nilai MmNonCached dan MmCached yang didukung. Parameter bersifat opsional dan dapat ditentukan sebagai NULL untuk menentukan penembolokan akan bergantung pada default platform perangkat keras.

[in] PreferredNode

Simpul NUMA pilihan dari mana memori akan dialokasikan. Jika N adalah jumlah simpul NUMA dalam sistem multiprosedur, PreferredNode adalah angka dalam rentang 0 hingga N–1. Untuk sistem satu prosesor atau sistem multiprosesor non-NUMA, atur PreferredNode ke nol.

[out] LogicalAddress

Penunjuk ke variabel tempat rutinitas ini menulis alamat logis yang dapat digunakan perangkat untuk mengakses buffer umum. Perangkat DMA harus menggunakan alamat logis ini alih-alih alamat fisik yang dikembalikan oleh rutinitas seperti MmGetPhysicalAddress.

[out] VirtualAddress

Penunjuk ke variabel tempat rutinitas ini menulis alamat virtual buffer yang dialokasikan yang sesuai.

Mengembalikan nilai

Mengembalikan STATUS_SUCCESS jika panggilan berhasil. Jika tidak, ia mengembalikan nilai NTSTATUS yang sesuai.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10
Header wdm.h (termasuk Wdm.h)
IRQL PASSIVE_LEVEL