Bagikan melalui


Fungsi ScsiPortValidateRange (srb.h)

Rutinitas ScsiPortValidateRange menunjukkan apakah nilai rentang akses yang ditentukan telah diklaim dalam registri oleh driver lain.

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

  1. Petakan alamat rentang relatif bus ke alamat rentang logis ruang sistem dengan ScsiPortGetDeviceBase.
  2. Gunakan alamat logis yang dipetakan dengan ScsiPortRead/WriteXxx untuk menentukan apakah adaptor sebenarnya adalah HBA yang didukung driver.
Jika driver miniport menggunakan rentang yang berhasil diteruskan ke ScsiPortValidateRange untuk HBA yang didukungnya, driver tersebut harus menginversi nilai InIoSpace saat menetapkan anggota RangeInMemory dari elemen AccessRanges di PORT_CONFIGURATION_INFORMATION.

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.

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 .
 

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header srb.h (termasuk Miniport.h, Scsi.h)
Pustaka Scsiport.lib

Lihat juga

ACCESS_RANGE

HwScsiFindAdapter

PORT_CONFIGURATION_INFORMATION (SCSI)

ScsiPortGetDeviceBase

ScsiPortInitialize