Bagikan melalui


struktur ACCESS_RANGE (srb.h)

ACCESS_RANGE menjelaskan memori atau rentang port I/O yang digunakan oleh HBA.

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

typedef struct _ACCESS_RANGE {
  SCSI_PHYSICAL_ADDRESS RangeStart;
  ULONG                 RangeLength;
  BOOLEAN               RangeInMemory;
} ACCESS_RANGE, *PACCESS_RANGE;

Anggota

RangeStart

Berisi alamat jenis SCSI_PHYSICAL_ADDRESS yang menentukan alamat dasar relatif bus dari rentang. Ini adalah alamat yang dapat diteruskan ke ScsiPortGetDeviceBase.

RangeLength

Menentukan ukuran, dalam byte, atau jumlah port dalam rentang. Driver miniport harus memastikan bahwa nilai ini cocok dengan rentang yang benar-benar didekode oleh adaptor. Misalnya, jika HBA menggunakan tujuh register tetapi merespons delapan, anggota ini harus diatur ke 8.

RangeInMemory

Menunjukkan rentang dalam memori saat TRUE, bukan di ruang I/O. Ketika FALSE, rentang berada di ruang I/O.

Keterangan

Setiap ACCESS_RANGE adalah elemen array AccessRanges dalam struktur PORT_CONFIGURATION_INFORMATION yang diteruskan ke rutinitas HwScsiFindAdapter driver miniport.

Jika memungkinkan, driver port khusus OS menyiapkan setiap elemen rentang akses dengan rentang HBA relatif bus untuk driver miniport sebelum memanggil rutinitas HwScsiFindAdapter driver miniport. Jika tidak, driver port nol elemen rentang yang tidak dapat menyediakan informasi konfigurasi.

Jika driver port memang menyediakan rentang, rutinitas HwScsiFindAdapter driver miniport hanya boleh menggunakan alamat yang disediakan dan tidak boleh mencoba menemukan HBA lain di bus yang sama menggunakan alamat penyusupannya sendiri. Mencoba mengakses port atau rentang memori relatif bus lainnya ketika driver port telah menyediakan informasi rentang, terutama dalam sistem khusus x86 di mana beberapa perangkat diinisialisasi dalam mode nyata x86, dapat menyebabkan perangkat lain di bus gagal menginisialisasi atau bahkan menyebabkan sistem gagal dalam proses boot.

Setiap driver miniport harus memiliki satu set rentang default relatif bus untuk mencoba apakah driver port khusus OS tidak dapat memberikan informasi. Driver miniport harus memanggil ScsiPortValidateRange untuk memeriksa keamanan rentang akses yang disediakan driver miniport sebelum mencoba memetakan rentang seperti itu dengan ScsiPortGetDeviceBase dan menggunakan alamat logis yang dikembalikan untuk mengakses adaptor, terutama jika salah satu HBA-nya memiliki BIOS.

Rentang akses apa pun yang diisi driver miniport untuk driver port khusus OS di PORT_CONFIGURATION_INFORMATION harus memiliki anggota RangeStart yang diatur ke alamat relatif bus, seperti nilai yang dikembalikan oleh ScsiPortGetBusData.

Alamat logis dasar yang sesuai yang dikembalikan oleh ScsiPortGetDeviceBase harus disimpan, biasanya dalam ekstensi perangkat driver miniport, sebagai alamat RangeStart untuk rentang port I/O yang dipetakan atau alamat memori yang digunakan untuk memanggil rutinitas ScsiPortReadXxx dan ScsiPortWriteXxx .

Persyaratan

Persyaratan Nilai
Header srb.h (termasuk Srb.h, Storport.h, Strmini.h)

Lihat juga

HwScsiFindAdapter

PORT_CONFIGURATION_INFORMATION (SCSI)

ScsiPortConvertUlongToPhysicalAddress

ScsiPortGetBusData

ScsiPortGetDeviceBase

ScsiPortValidateRange