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) |