Bagikan melalui


Fungsi StorPortAllocateHostMemoryBuffer (storport.h)

StorPortAllocateHostMemoryBuffer mengalokasikan satu atau beberapa rentang memori yang berdampingan secara fisik untuk digunakan sebagai Buffer Memori Host (HMB).

Sintaks

ULONG StorPortAllocateHostMemoryBuffer(
  [in]           PVOID            HwDeviceExtension,
  [in]           SIZE_T           MinimumBytes,
  [in]           SIZE_T           PreferredBytes,
  [in]           ULONGLONG        UtilizationBytes,
  [in]           ULONG            AlignmentBytes,
  [in]           PHYSICAL_ADDRESS LowestAcceptableAddress,
  [in]           PHYSICAL_ADDRESS HighestAcceptableAddress,
  [in, optional] PHYSICAL_ADDRESS BoundaryAddressMultiple,
  [in, out]      PACCESS_RANGE    PhysicalAddressRanges,
  [in, out]      PULONG           PhysicalAddressRangeCount
);

Parameter

[in] HwDeviceExtension

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

[in] MinimumBytes

Jumlah minimum memori yang akan berguna untuk perangkat, dalam byte. Nilai 0 menunjukkan bahwa ukuran memori apa pun hingga ukuran yang disukai dapat diterima.

[in] PreferredBytes

Jumlah memori yang lebih disukai perangkat, dalam byte. Ini harus berupa kelipatan ukuran halaman.

[in] UtilizationBytes

Jumlah total blok yang dialokasikan pada perangkat, dalam byte.

[in] AlignmentBytes

Persyaratan penyelarasan Buffer Memori Host dari perangkat.

[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 kelipatan yang tidak boleh dilewati oleh alokasi ini. Parameter ini saat ini tidak digunakan dan harus diatur ke 0.

[in, out] PhysicalAddressRanges

Array rentang alamat fisik yang membentuk Buffer Memori Host. Pemanggil harus menyediakan array yang telah dialokasikan sebelumnya. StorPortAllocateHostMemoryBuffer akan mengisi array dengan satu atau beberapa rentang alamat fisik.

[in, out] PhysicalAddressRangeCount

Jumlah entri dalam PhysicalAddressRanges. Fungsi ini akan memperbarui parameter ini untuk menunjukkan berapa banyak rentang alamat fisik yang diisinya.

Nilai kembali

StorPortAllocateHostMemoryBuffer mengembalikan salah satu kode status berikut:

Menampilkan kode Deskripsi
STOR_STATUS_SUCCESS Array PhysicalAddressRanges berisi satu atau beberapa rentang alamat fisik valid yang mewakili buffer memori host.
STOR_STATUS_INVALID_PARAMETER Ini dapat menunjukkan nilai minimum yang lebih besar dari nilai maksimum, ukuran yang tidak selaras dengan halaman, atau bahwa PhysicalAddressRanges kosong.
STOR_STATUS_INSUFFICIENT_RESOURCES Buffer memori host tidak dapat dialokasikan.

Keterangan

HMB adalah memori yang dapat digunakan perangkat secara langsung dan eksklusif. Perangkat dapat menggunakan memori ini namun terlihat pas, tetapi harus memastikan bahwa tidak ada kehilangan data atau kerusakan data jika terjadi penghapusan mendadak atau kehilangan daya yang tidak terduga.

Tergantung pada kebijakan alokasi, fungsi ini dapat mengalokasikan sebanyak ukuran yang disukai perangkat, sesediki ukuran minimum perangkat, atau tidak ada memori sama sekali.

Fungsi ini akan mencoba mengalokasikan sesedikempat mungkin rentang alamat yang berdampingan secara fisik, tetapi mungkin harus menggunakan beberapa rentang alamat fisik untuk memenuhi ukuran HMB yang diinginkan.

Pemanggil kemudian harus memanggil StorPortFreeHostMemoryBuffer ketika selesai dengan buffer memori host.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header storport.h (termasuk Storport.h)

Lihat juga

StorPortFreeHostMemoryBuffer