Fungsi ScsiPortValidateRange (srb.h)
Rutinitas ScsiPortValidateRange menunjukkan apakah nilai rentang akses yang ditentukan telah diklaim dalam registri oleh driver lain.
Sintaks
SCSIPORT_API BOOLEAN ScsiPortValidateRange(
[in] PVOID HwDeviceExtension,
[in] INTERFACE_TYPE BusType,
[in] ULONG SystemIoBusNumber,
[in] SCSI_PHYSICAL_ADDRESS IoAddress,
[in] ULONG NumberOfBytes,
[in] BOOLEAN InIoSpace
);
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. Driver port membebaskan memori ini ketika melepas perangkat.
[in] BusType
Menentukan nilai anggota AdapterInterfaceType dalam struktur PORT_CONFIGURATION_INFORMATION saat HwScsiFindAdapter dipanggil.
[in] SystemIoBusNumber
Menentukan nilai anggota SystemIoBusNumber dalam informasi konfigurasi saat HwScsiFindAdapter dipanggil.
[in] IoAddress
Menentukan alamat dasar relatif bus untuk rentang port atau memori perangkat yang akan divalidasi sebelum rutinitas HwScsiFindAdapter driver miniport mencoba memetakan rentang akses untuk adaptor di alamat tersebut.
[in] NumberOfBytes
Menentukan ukuran dalam byte atau jumlah elemen dalam rentang.
[in] InIoSpace
Menunjukkan kapan TRUE bahwa rentang berada di ruang I/O, bukan dalam memori. Ketika FALSE, rentang berada di ruang memori.
Nilai kembali
ScsiPortValidateRange mengembalikan TRUE jika rutinitas HwScsiFindAdapter dapat memetakan dan menggunakan rentang yang dipetakan dengan aman untuk mengakses adaptor. ScsiPortValidateRange mengembalikan FALSE jika nilai rentang akses yang ditentukan telah diklaim dalam registri oleh driver lain.
Keterangan
ScsiPortValidateRange hanya dapat dipanggil dari rutinitas HwScsiFindAdapter driver miniport. Panggilan dari rutinitas driver miniport lainnya akan mengakibatkan kegagalan sistem atau operasi yang salah untuk pemanggil.
Jika driver port khusus sistem operasi menginisialisasi elemen AccessRanges dari struktur PORT_CONFIGURATION_INFORMATION sebelum memanggil rutinitas HwScsiFindAdapter driver miniport, driver miniport harus meneruskan nilai yang disediakan ke ScsiPortGetDeviceBase dan menggunakan alamat logis yang dipetakan untuk rentang untuk menentukan apakah HBA adalah salah satu yang didukungnya.
Driver port mengisi elemen jenis ACCESS_RANGE dengan deskripsi lengkap rentang alamat relatif bus untuk adaptor, atau driver port nol semua anggota elemen.
Untuk elemen AccessRanges input yang diatur dengan nol default, rutinitas HwScsiFindAdapter dapat mencoba menemukan adaptor yang didukungnya pada bus I/O yang diberikan. Dalam keadaan ini, driver miniport biasanya memiliki satu set alamat default yang ditentukan driver untuk jenis HBA-nya. Namun, driver yang dimuat sebelumnya mungkin sudah menggunakan adaptor yang diinisialisasi di salah satu rentang alamat default driver miniport ini, terutama dalam sistem khusus x86 di mana beberapa perangkat diinisialisasi dalam mode nyata x86. Untuk mencegah perangkat tersebut diprogram ulang secara tidak sengaja, rutinitas HwScsiFindAdapter setiap driver miniport harus memanggil ScsiPortValidateRange sebelum memetakan alamat yang disediakan driver dengan ScsiPortGetDeviceBase dan kemudian menggunakan alamat logis yang dipetakan untuk menginterogasi adaptor pada bus I/O.
Jika ScsiPortValidateRange mengembalikan FALSE, HwScsiFindAdapter tidak boleh mencoba memetakan alamat rentang input karena driver lain telah mengklaim rentang dalam registri.
Jika ScsiPortValidateRange mengembalikan TRUE, HwScsiFindAdapter dapat dengan aman melakukan hal berikut:
- Petakan alamat rentang relatif bus ke alamat rentang logis ruang sistem dengan ScsiPortGetDeviceBase.
- Gunakan alamat logis yang dipetakan dengan ScsiPortRead/WriteXxx untuk menentukan apakah adaptor sebenarnya adalah HBA yang didukung driver.
ScsiPortValidateRange menggunakan SCSI_PHYSICAL_ADDRESS untuk mewakili alamat relatif bus.
typedef PHYSICAL_ADDRESS SCSI_PHYSICAL_ADDRESS, *PSCSI_PHYSICAL_ADDRESS;
Jenis SCSI_PHYSICAL_ADDRESS adalah jenis data independen sistem operasi yang digunakan driver miniport SCSI untuk mewakili alamat fisik atau alamat relatif bus.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Desktop |
Header | srb.h (termasuk Miniport.h, Scsi.h) |
Pustaka | Scsiport.lib |