Bagikan melalui


Fungsi ScsiPortGetUncachedExtension (srb.h)

Rutinitas ScsiPortGetUncachedExtension mengalokasikan memori yang dapat digunakan oleh CPU dan HBA master bus untuk DMA atau untuk data bersama.

Catatan Driver port SCSI dan model driver miniport SCSI dapat diubah atau tidak tersedia di masa mendatang. Sebagai gantinya, sebaiknya gunakan driver Storport dan model driver miniport Storport .
 

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

Lihat juga

HwScsiFindAdapter

PORT_CONFIGURATION_INFORMATION (SCSI)

ScsiPortGetPhysicalAddress