Fungsi ScsiPortGetUncachedExtension (srb.h)
Rutinitas ScsiPortGetUncachedExtension mengalokasikan memori yang dapat digunakan oleh CPU dan HBA master bus untuk DMA atau untuk data bersama.
Sintaks
SCSIPORT_API PVOID ScsiPortGetUncachedExtension(
[in] PVOID HwDeviceExtension,
[in] PPORT_CONFIGURATION_INFORMATION ConfigInfo,
[in] ULONG NumberOfBytes
);
Parameter
[in] HwDeviceExtension
Arahkan ke ekstensi perangkat keras. Ini adalah area penyimpanan per HBA yang dialokasikan dan diinisialisasi driver port atas nama driver miniport. Driver Miniport biasanya menyimpan informasi khusus HBA dalam ekstensi ini, seperti status HBA dan rentang akses HBA yang dipetakan. Area ini tersedia untuk driver miniport di deviceExtension-HwDeviceExtension> anggota objek perangkat HBA segera setelah driver miniport memanggil ScsiPortInitialize. Pengandar porta membebaskan memori ini ketika melepas perangkat.
[in] ConfigInfo
Menentukan informasi tentang kemampuan DMA HBA. Anggota berikut harus diisi: DmaChannel atau DmaPort, DmaWidth, DmaSpeed, MaximumTransferLength, ScatterGather, Master diatur ke TRUE, NumberOfPhysicalBreaks, AdapterInterfaceType, Dma32BitAddresses, SystemIoBusNumber, AutoRequestSense, dan SrbExtensionSize.
Anggota yang tidak berkaitan dengan HBA, seperti DmaChannel untuk adaptor master bus EISA, harus dibiarkan apa adanya.
[in] NumberOfBytes
Menunjukkan ukuran dalam byte ekstensi yang tidak di-cache untuk dialokasikan. Driver di Windows XP dan sistem operasi sebelumnya tidak boleh mengalokasikan lebih dari 100 kilobyte ekstensi yang tidak di-cache, dan jika mereka berpartisipasi dalam operasi I/O pada file hibernasi atau file crash dump, mereka harus membatasi jumlah ekstensi yang tidak di-cache yang mereka alokasikan di bawah 32 kilobyte.
Nilai kembali
ScsiPortGetUncachedExtension mengembalikan penunjuk alamat virtual ke ekstensi yang tidak di-cache. Jika tidak dapat mengalokasikan memori yang diminta, ia mengembalikan NULL.
Keterangan
ScsiPortGetUncachedExtension hanya dapat dipanggil dari rutinitas HwScsiFindAdapter pengemudi miniport dan hanya untuk HBA master bus. Panggilan dari rutinitas driver miniport lainnya akan mengakibatkan kegagalan sistem atau operasi yang salah untuk pemanggil.
Karena mesin kelas atas memiliki cache dan memori besar, memori apa pun yang akan dibagikan antara HBA dan CPU harus dialokasikan secara khusus. Kotak surat atau antrean permintaan I/O dalam memori sistem adalah contoh jenis memori bersama ini.
Driver miniport harus mengatur SrbExtensionSize. sebelum memanggil ScsiPortGetUncachedExtension untuk mengubah ukuran penyimpanan per permintaannya berdasarkan NumberOfPhysicalBreaks.
Rutinitas HwScsiFindAdapter dapat memanggil ScsiPortGetUncachedExtension hanya sekali untuk setiap HBA master bus yang didukung driver miniport.
Untuk mendapatkan alamat fisik untuk ekstensi yang tidak di-cache yang dapat digunakan HBA, panggil ScsiPortGetPhysicalAddress.
Driver ScsiPort akan membebaskan memori yang dialokasikan oleh ScsiPortGetUncachedExtension ketika perangkat adaptor dihentikan.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Desktop |
Header | srb.h (termasuk Miniport.h, Scsi.h) |
Pustaka | Scsiport.lib |