Bagikan melalui


Fungsi StorPortAllocateDmaMemory (storport.h)

Fungsi ini adalah versi yang diperluas dari fungsi StorPortAllocateContiguousMemorySpecifyCacheNode. Ini mengalokasikan berbagai memori non-cache yang berdekatan secara fisik, tidak bertumpuk, dan mengembalikan alamat fisik buffer yang dialokasikan.

Sintaks

ULONG StorPortAllocateDmaMemory(
  [in]           PVOID               HwDeviceExtension,
  [in]           SIZE_T              NumberOfBytes,
  [in]           PHYSICAL_ADDRESS    LowestAcceptableAddress,
  [in]           PHYSICAL_ADDRESS    HighestAcceptableAddress,
  [in, optional] PHYSICAL_ADDRESS    BoundaryAddressMultiple,
  [in]           MEMORY_CACHING_TYPE CacheType,
  [in]           NODE_REQUIREMENT    PreferredNode,
  [out]          PVOID               *BufferPointer,
  [out]          PPHYSICAL_ADDRESS   PhysicalAddress
);

Parameter

[in] HwDeviceExtension

Pointer ke ekstensi perangkat keras untuk adaptor bus host (HBA).

[in] NumberOfBytes

Jumlah byte yang akan dialokasikan.

[in] LowestAcceptableAddress

Alamat fisik terendah yang valid untuk alokasi. Misalnya, jika perangkat hanya dapat mereferensikan memori fisik dalam rentang 8 MB hingga 16 MB, nilai ini akan diatur ke 0x800000 (8 MB).

[in] HighestAcceptableAddress

Alamat fisik tertinggi yang berlaku untuk alokasi. Misalnya, jika perangkat hanya dapat mereferensikan memori fisik di bawah 16 MB, nilai ini akan diatur ke 0xFFFFFF (16 MB - 1).

[in, optional] BoundaryAddressMultiple

Alamat fisik beberapa yang tidak boleh dilintasi oleh alokasi ini.

[in] CacheType

Jenis cache yang diinginkan untuk pemetaan.

[in] PreferredNode

Simpul pilihan tempat alokasi harus dibuat jika halaman tersedia pada simpul tersebut.

[out] BufferPointer

Variabel yang menerima alamat awal blok memori yang dialokasikan. Setelah kembali dari rutinitas ini, jika variabel ini nol, rentang yang berdampingan tidak dapat ditemukan untuk memenuhi permintaan. Jika variabel ini bukan NULL, variabel ini berisi penunjuk (misalnya, alamat virtual dalam bagian sistem yang tidak disebarkan) ke memori yang dialokasikan secara fisik berdekatan.

[out] PhysicalAddress

Alamat fisik blok memori yang dialokasikan.

Nilai kembali

Fungsi ini mengembalikan kode STOR_STATUS.

Menampilkan kode Deskripsi
STOR_STATUS_NOT_IMPLEMENTED Fungsi ini tidak diimplementasikan pada sistem operasi aktif.
STOR_STATUS_SUCCESS Operasi berhasil.
STOR_STATUS_INSUFFICIENT_RESOURCES Operasi gagal mengalokasikan memori yang diminta karena sumber daya yang tidak mencukuumkan.

Keterangan

Jika permintaan gagal, BufferPointer akan diatur ke NULL.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10 (Versi 1803)
Target Platform Universal
Header storport.h
Aturan kepatuhan DDI StorPortIrql

Lihat juga

StorPortFreeDmaMemory