struktur STORAGE_REQUEST_BLOCK (storport.h)
STORAGE_REQUEST_BLOCK adalah format yang diperluas struktur Blok Permintaan SCSI (SRB). Struktur ini menyediakan penambahan data yang diperluas yang terkait dengan fungsi SRB.
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 _STORAGE_REQUEST_BLOCK {
USHORT Length;
UCHAR Function;
UCHAR SrbStatus;
ULONG ReservedUlong1;
ULONG Signature;
ULONG Version;
ULONG SrbLength;
ULONG SrbFunction;
ULONG SrbFlags;
ULONG ReservedUlong2;
ULONG RequestTag;
USHORT RequestPriority;
USHORT RequestAttribute;
ULONG TimeOutValue;
union {
ULONG SystemStatus;
ULONG RequestTagHigh4Bytes;
} DUMMYUNIONNAME;
ULONG SystemStatus;
ULONG ZeroGuard1;
ULONG AddressOffset;
ULONG NumSrbExData;
ULONG DataTransferLength;
PVOID POINTER_ALIGN DataBuffer;
PVOID POINTER_ALIGN ZeroGuard2;
PVOID POINTER_ALIGN OriginalRequest;
PVOID POINTER_ALIGN ClassContext;
PVOID POINTER_ALIGN PortContext;
PVOID POINTER_ALIGN MiniportContext;
_STORAGE_REQUEST_BLOCK POINTER_ALIGN *NextSrb;
struct _STORAGE_REQUEST_BLOCK;
ULONG SrbExDataOffset[ANYSIZE_ARRAY];
} STORAGE_REQUEST_BLOCK, *PSTORAGE_REQUEST_BLOCK;
Anggota
Length
Menentukan ukuran header SRB untuk kompatibilitas dengan struktur SCSI_REQUEST_BLOCK . Ini sama dengan offset anggota Tanda Tangan dari struktur ini.
Function
Atur ke SRB_FUNCTION_STORAGE_REQUEST_BLOCK untuk menunjukkan bahwa ini adalah SRB yang diperluas. Tidak seperti di SCSI_REQUEST_BLOCK, pengidentifikasi fungsi SRB ada di anggota SrbFunction sebagai gantinya.
SrbStatus
Mengembalikan status permintaan yang telah selesai. Anggota ini harus diatur oleh driver miniport sebelum memberi tahu driver khusus sistem operasi bahwa permintaan telah selesai dengan memanggil StorPortNotification dengan RequestComplete. Nilai anggota ini bisa menjadi salah satu dari berikut ini:
Nilai | Makna |
---|---|
SRB_STATUS_PENDING | Menunjukkan permintaan sedang berlangsung. Driver port khusus sistem operasi menginisialisasi SrbStatus ke nilai ini. |
SRB_STATUS_SUCCESS | Menunjukkan bahwa permintaan berhasil diselesaikan. |
SRB_STATUS_ABORTED | Menunjukkan permintaan dibatalkan seperti yang diarahkan oleh driver port. Driver miniport menetapkan status ini di anggota NextSrb agar permintaan SRB_FUNCTION_ABORT_COMMAND berhasil. |
SRB_STATUS_ABORT_FAILED | Menunjukkan upaya untuk membatalkan permintaan gagal. Kembalikan status ini untuk permintaan SRB_FUNCTION_ABORT_COMMAND ketika permintaan yang ditentukan tidak dapat ditemukan. |
SRB_STATUS_ERROR | Menunjukkan permintaan selesai dengan kesalahan dalam status bus SCSI. |
SRB_STATUS_BUSY | Menunjukkan driver miniport atau perangkat target tidak dapat menerima permintaan saat ini. Driver port khusus sistem operasi akan mengirimkan ulang permintaan nanti. |
SRB_STATUS_INTERNAL_ERROR | Menunjukkan bahwa driver Storport tidak dapat mengirimkan permintaan ke driver miniport atau perangkat target. Dalam kasus seperti itu, status dicatat di InternalStatus. |
SRB_STATUS_INVALID_REQUEST | Menunjukkan driver miniport tidak mendukung permintaan yang diberikan. |
SRB_STATUS_NO_DEVICE | Menunjukkan perangkat tidak merespons. |
SRB_STATUS_TIMEOUT | Menunjukkan waktu permintaan habis. |
SRB_STATUS_SELECTION_TIMEOUT | Menunjukkan waktu pemilihan perangkat SCSI habis. |
SRB_STATUS_COMMAND_TIMEOUT | Menunjukkan target tidak menyelesaikan perintah dalam batas waktu. |
SRB_STATUS_MESSAGE_REJECTED | Menunjukkan target menolak pesan. Ini biasanya dikembalikan hanya untuk permintaan jenis pesan seperti SRB_FUNCTION_TERMINATE_IO. |
SRB_STATUS_BUS_RESET | Menunjukkan reset bus terjadi saat permintaan ini sedang dijalankan. |
SRB_STATUS_PARITY_ERROR | Menunjukkan kesalahan paritas yang terjadi pada bus SCSI dan bahwa percobaan kembali gagal. |
SRB_STATUS_REQUEST_SENSE_FAILED | Menunjukkan perintah request-sense gagal. Ini dikembalikan hanya jika adaptor bus host (HBA) melakukan pengertian permintaan otomatis dan driver miniport mengatur AutoRequestSense ke TRUE di PORT_CONFIGURATION_INFORMATION untuk HBA ini. |
SRB_STATUS_NO_HBA | Menunjukkan HBA tidak merespons. |
SRB_STATUS_DATA_OVERRUN | Menunjukkan bahwa terjadi kesalahan overrun atau underrun data. Driver miniport juga harus memperbarui anggota DataTransferLength SRB untuk menunjukkan berapa banyak data yang sebenarnya ditransfer jika underrun terjadi. |
SRB_STATUS_UNEXPECTED_BUS_FREE | Menunjukkan target terputus secara tak terduga. |
SRB_STATUS_PHASE_SEQUENCE_FAILURE | Menunjukkan HBA mendeteksi kesalahan kegagalan urutan fase ilegal. |
SRB_STATUS_REQUEST_FLUSHED | Menunjukkan permintaan status dihentikan. |
SRB_STATUS_BAD_FUNCTION | Menunjukkan kode Fungsi SRB tidak didukung. |
SRB_STATUS_INVALID_PATH_ID | Menunjukkan PathId yang ditentukan dalam SRB tidak ada. |
SRB_STATUS_INVALID_TARGET_ID | Menunjukkan nilai TargetID dalam SRB tidak valid. |
SRB_STATUS_INVALID_LUN | Menunjukkan nilai Lun dalam SRB tidak valid. |
SRB_STATUS_ERROR_RECOVERY | Menunjukkan permintaan selesai dengan kesalahan dalam status bus SCSI dan bahwa pesan SCSI INITIATE RECOVERY diterima. |
SRB_STATUS_AUTOSENSE_VALID | Menunjukkan informasi yang dikembalikan dalam SenseInfoBuffer valid. |
SRB_STATUS_QUEUE_FROZEN | Driver miniport tidak boleh mengatur anggota SrbStatus ke nilai ini. Driver port Windows dapat mengatur nilai ini untuk menginformasikan driver kelas penyimpanan bahwa antrean permintaannya untuk periferal tertentu telah dibekukan. |
SRB_STATUS_NOT_POWERED | A menunjukkan permintaan gagal karena target tidak didukung. Untuk permintaan dengan SRB_FLAGS_NO_KEEP_AWAKE yang diatur dalam SrbFlags, permintaan yang dikirim ke LUN yang dimatikan akan gagal dengan status ini. |
SRB_STATUS_LINK_DOWN | Menunjukkan permintaan gagal karena tautan tidak berfungsi. |
SRB_STATUS_BAD_SRB_BLOCK_LENGTH | Menunjukkan permintaan gagal karena panjang SRB tidak valid. |
ReservedUlong1
Dicadangkan. Atur ke 0.
Signature
Tanda tangan format SRB yang diperluas. Ini diatur ke SRB_SIGNATURE.
Version
Versi struktur yang digunakan. Versi saat ini STORAGE_REQUEST_BLOCK_VERSION_1.
SrbLength
Panjang SRB yang diperluas ini, dalam byte, termasuk struktur, alamat, dan data SRB yang diperluas ini.
SrbFunction
Menentukan operasi yang akan dilakukan, yang bisa menjadi salah satu nilai ini:
Nilai | Makna |
---|---|
SRB_FUNCTION_EXECUTE_SCSI (0x00) | Permintaan I/O perangkat SCSI harus dijalankan pada unit logis target. Ketika NumSrbExData> 0, satu atau beberapa struktur blok permintaan diperpanjang berikut terletak di offset yang ditentukan dalam SrbExDataOffset: SRBEX_DATA_SCSI_CDB16, SRBEX_DATA_SCSI_CDB32, SRBEX_DATA_SCSI_CDB_VAR, SRBEX_DATA_BIDIRECTIONAL, SRBEX_DATA_IO_INFO |
SRB_FUNCTION_IO_CONTROL (0x02) | Permintaan ini adalah permintaan kontrol I/O, yang berasal dari aplikasi mode pengguna dengan HBA khusus. SRB DataBuffer menunjuk ke header SRB_IO_CONTROL diikuti oleh area data. Nilai dalam DataBuffer dapat digunakan oleh driver, terlepas dari nilai MapBuffers. Hanya anggota Fungsi SRB, SrbFlags, TimeOutValue, DataBuffer, dan DataTransferLength yang valid, bersama dengan anggota SrbExtension jika driver miniport meminta ekstensi SRB saat diinisialisasi. Jika driver miniport mengontrol HBA khusus aplikasi sehingga mendukung permintaan ini, driver miniport harus menjalankan permintaan dan memberi tahu driver port khusus sistem operasi ketika SRB telah selesai, menggunakan mekanisme normal panggilan ke StorPortNotification dengan RequestComplete dan NextRequest. |
SRB_FUNCTION_RECEIVE_EVENT (0x03) | HBA harus siap untuk menerima pemberitahuan peristiwa asinkron dari target yang ditangani. Anggota SRB DataBuffer menunjukkan di mana data harus ditempatkan. CATATAN: Fungsi ini tidak dikirim ke miniport oleh Storport. |
SRB_FUNCTION_SHUTDOWN (0x07) | Sistem sedang dimatikan. Driver miniport dapat menerima beberapa pemberitahuan ini sebelum semua aktivitas sistem benar-benar berhenti. Namun, pemberitahuan matikan terakhir akan terjadi setelah I/O mulai terakhir. Data SRB yang diperluas tidak diperlukan untuk fungsi ini. |
SRB_FUNCTION_FLUSH (0x08) | Driver miniport harus menghapus data cache apa pun untuk perangkat target. Permintaan ini dikirim ke driver miniport hanya jika mengatur CachesData ke TRUE di PORT_CONFIGURATION_INFORMATION untuk HBA. Data SRB yang diperluas tidak diperlukan untuk fungsi ini. |
SRB_FUNCTION_ABORT_COMMAND (0x10) | Pesan SCSIMESS_ABORT harus dikirim untuk membatalkan permintaan yang ditunjukkan oleh anggota NextSrb . Jika ini adalah permintaan antrean bertag, pesan SCSIMESS_ABORT_WITH_TAG harus digunakan sebagai gantinya. Jika permintaan yang ditunjukkan telah selesai, permintaan ini harus diselesaikan secara normal. Data SRB yang diperluas tidak diperlukan untuk fungsi ini. CATATAN: Fungsi ini tidak dikirim ke miniport oleh Storport. |
SRB_FUNCTION_RELEASE_RECOVERY (0x11) | Pesan SCSIMESS_RELEASE_RECOVERY harus dikirim ke pengontrol target. Data SRB yang diperluas tidak diperlukan untuk fungsi ini. CATATAN: Fungsi ini tidak dikirim ke miniport oleh Storport. |
SRB_FUNCTION_RESET_BUS (0x12) | Bus SCSI harus diatur ulang menggunakan pesan SCSIMESS_BUS_DEVICE_RESET. Driver miniport menerima permintaan ini hanya jika permintaan tertentu telah kehabisan waktu dan permintaan berikutnya untuk membatalkan permintaan waktu habis juga telah habis. Data SRB yang diperluas tidak diperlukan untuk fungsi ini. |
SRB_FUNCTION_TERMINATE_IO (0x14) | Pesan SCSIMESS_TERMINATE_IO_PROCESS harus dikirim untuk membatalkan permintaan yang ditunjukkan oleh anggota NextSrb . Jika permintaan yang ditunjukkan telah selesai, permintaan ini harus diselesaikan secara normal. Data SRB yang diperluas tidak diperlukan untuk fungsi ini. CATATAN: Fungsi ini tidak dikirim ke miniport oleh Storport. |
SRB_FUNCTION_RESET_DEVICE (0x16) | Pengontrol target SCSI harus diatur ulang menggunakan pesan SCSIMESS_BUS_DEVICE_RESET. Driver miniport harus menyelesaikan permintaan aktif untuk pengontrol target. Data SRB yang diperluas tidak diperlukan untuk fungsi ini. |
SRB_FUNCTION_WMI (0x17) | Permintaan adalah permintaan yang diperluas daya yang diformat sebagai struktur SRBEX_DATA_WMI . Offset ke data permintaan yang diperluas terletak di SrbExDataOffset[0]. |
SRB_FUNCTION_LOCK_QUEUE (0x18) | Menyimpan permintaan yang diantrekan oleh driver port untuk unit logis tertentu, biasanya saat permintaan daya sedang diproses. Hanya anggota SRB Length, Function, SrbFlags, dan OriginalRequest yang valid. Ketika antrean dikunci, hanya permintaan dengan SrbFlags ORed dengan SRB_FLAGS_BYPASS_LOCKED_QUEUE yang akan diproses. Driver miniport SCSI tidak memproses permintaan SRB_FUNCTION_LOCK_QUEUE . |
SRB_FUNCTION_UNLOCK_QUEUE (0x19) | Melepaskan antrean driver port untuk unit logis yang sebelumnya dikunci dengan SRB_FUNCTION_LOCK_QUEUE. SrbFlags dari permintaan buka kunci harus ORed dengan SRB_FLAGS_BYPASS_LOCKED_QUEUE. Hanya anggota SRB Length, Function, SrbFlags, dan OriginalRequest yang valid. Driver miniport SCSI tidak memproses permintaan SRB_FUNCTION_UNLOCK_QUEUE . |
SRB_FUNCTION_QUIESCE_DEVICE (0x1A) | Permintaan hanya antara kelas penyimpanan dan driver port penyimpanan dan tidak dikirim ke miniport. Fungsi ini berfungsi sebagai tunggu oleh driver kelas untuk driver port untuk menyelesaikan semua I/Os yang luar biasa. |
SRB_FUNCTION_RESET_LOGICAL_UNIT (0x20) | Unit logis harus diatur ulang, jika memungkinkan. Driver miniport HBA harus menyelesaikan permintaan aktif untuk unit logis. Data SRB yang diperluas tidak diperlukan untuk fungsi ini. Storport mendukung jenis reset ini, tetapi port SCSI tidak. |
SRB_FUNCTION_POWER (0x24) | Permintaan adalah permintaan yang diperluas daya yang diformat sebagai struktur SRBEX_DATA_POWER . Offset ke data permintaan yang diperluas terletak di SrbExDataOffset[0]. |
SRB_FUNCTION_PNP (0x25) | Permintaan ini adalah permintaan diperpanjang PnP yang diformat sebagai struktur SRBEX_DATA_PNP . Offset ke data permintaan yang diperluas terletak di SrbExDataOffset[0]. |
SRB_FUNCTION_DUMP_POINTERS (0x26) | Permintaan dengan fungsi ini dikirim ke driver miniport Storport yang digunakan untuk mengontrol disk yang menyimpan data crash dump. Permintaan ini mengumpulkan informasi yang diperlukan dari driver miniport untuk mendukung crash dump dan hibernasi. Lihat struktur MINIPORT_DUMP_POINTERS . Driver miniport fisik harus mengatur bendera STOR_FEATURE_DUMP_POINTERS di anggota FeatureSupportHW_INITIALIZATION_DATA untuk menerima permintaan dengan fungsi ini. |
SRB_FUNCTION_FREE_DUMP_POINTERS (0x27) | Permintaan dengan fungsi ini dikirim ke driver miniport Storport untuk merilis sumber daya apa pun yang dialokasikan selama permintaan sebelumnya untuk SRB_FUNCTION_DUMP_POINTERS. |
SrbFlags
Menunjukkan berbagai parameter dan opsi untuk permintaan tersebut. SrbFlags bersifat baca-saja, kecuali ketika SRB_FLAGS_UNSPECIFIED_DIRECTION diatur dan driver miniport adaptor DMA bawahan diperlukan untuk memperbarui SRB_FLAGS_DATA_IN atau SRB_FLAGS_DATA_OUT. Anggota ini dapat menetapkan satu atau beberapa bendera ini.
Bendera | Makna |
---|---|
SRB_FLAGS_QUEUE_ACTION_ENABLE | Menunjukkan tindakan antrean bertag akan diaktifkan. |
SRB_FLAGS_DISABLE_AUTOSENSE | Menunjukkan informasi yang masuk akal permintaan tidak boleh dikembalikan. |
SRB_FLAGS_DATA_IN | Menunjukkan data akan ditransfer dari perangkat ke sistem. |
SRB_FLAGS_DATA_OUT | Menunjukkan data akan ditransfer dari sistem ke perangkat. |
SRB_FLAGS_UNSPECIFIED_DIRECTION | Ditentukan untuk kompatibilitas mundur dengan antarmuka SCSI ASPI/CAM, bendera ini menunjukkan bahwa arah transfer bisa menjadi salah satu dari yang sebelumnya, karena kedua bendera sebelumnya diatur. Jika bendera ini diatur, pengemudi miniport harus menentukan arah transfer dengan memeriksa fase data untuk target pada bus SCSI. |
SRB_FLAGS_NO_DATA_TRANSFER | Menunjukkan tidak ada transfer data dengan permintaan ini. Jika ini diatur, bendera SRB_FLAGS_DATA_OUT, SRB_FLAGS_DATA_IN, dan SRB_FLAGS_UNSPECIFIED_DIRECTION jelas. |
SRB_FLAGS_DISABLE_SYNCH_TRANSFER | Menunjukkan HBA, jika memungkinkan, harus melakukan I/O asinkron untuk permintaan transfer ini. Jika I/O sinkron dinegosiasikan sebelumnya, HBA harus bernegosiasi ulang untuk I/O asinkron sebelum melakukan transfer. |
SRB_FLAGS_DISABLE_DISCONNECT | Menunjukkan HBA tidak boleh mengizinkan target terputus dari bus SCSI selama pemrosesan permintaan ini. |
SRB_FLAGS_BYPASS_FROZEN_QUEUE | Bendera ini tidak relevan dengan driver miniport. |
SRB_FLAGS_NO_QUEUE_FREEZE | Bendera ini tidak relevan dengan driver miniport. |
SRB_FLAGS_IS_ACTIVE | Bendera ini tidak relevan dengan driver miniport. |
SRB_FLAGS_ALLOCATED_FROM_ZONE | Bendera ini tidak relevan dengan driver miniport dan kedaluwarsa ke driver kelas Windows baru. Untuk driver kelas warisan Windows, ini menunjukkan apakah SRB dialokasikan dari buffer zona. Jika bendera ini diatur, driver kelas harus memanggil ExInterlockedFreeToZone untuk merilis SRB; jika tidak, itu harus memanggil ExFreePool. Driver kelas baru harus menggunakan daftar lookaside daripada buffer zona. |
SRB_FLAGS_SGLIST_FROM_POOL | Bendera ini tidak relevan dengan driver miniport. Untuk driver kelas, ini menunjukkan bahwa memori untuk daftar sebar/kumpulkan dialokasikan dari kumpulan yang tidak dipagasi. Jika bendera ini diatur, driver kelas harus memanggil ExFreePool untuk melepaskan memori setelah SRB selesai. |
SRB_FLAGS_BYPASS_LOCKED_QUEUE | Bendera ini tidak relevan dengan driver miniport. Untuk driver port, bendera ini menunjukkan bahwa permintaan harus diproses apakah antrean unit logis dikunci atau tidak. Driver tingkat yang lebih tinggi harus mengatur bendera ini untuk mengirim permintaan SRB_FUNCTION_UNLOCK_QUEUE . |
SRB_FLAGS_NO_KEEP_AWAKE | Bendera ini tidak relevan dengan driver miniport. Driver kelas Windows menggunakan bendera ini untuk menunjukkan kepada driver port untuk gagal permintaan daripada menyalakan perangkat untuk menangani permintaan ini. |
SRB_FLAGS_FREE_SENSE_BUFFER | Menunjukkan bahwa port atau driver miniport telah mengalokasikan buffer untuk data yang masuk akal. Ini menginformasikan driver kelas bahwa ia harus membebaskan buffer data sense setelah mengekstrak data. |
SRB_FLAGS_D3_PROCESSING | Menunjukkan bahwa permintaan adalah bagian dari pemrosesan D3. Miniport yang mendukung kontrol daya runtime tidak boleh memanggil StorPortPoFxActivateComponent atau StorPortPoFxIdleComponent dengan permintaan ini. |
SRB_FLAGS_ADAPTER_CACHE_ENABLE | Menunjukkan bahwa adaptor dapat menyimpan data cache. |
ReservedUlong2
Dicadangkan. Atur ke 0.
RequestTag
Berisi nilai queue-tag yang ditetapkan oleh driver port khusus sistem operasi. Jika anggota ini digunakan untuk antrean bertag, HBA mendukung antrean permintaan internal ke unit logis (LUs) dan driver miniport mengatur TaggedQueueing ke TRUE di PORT_CONFIGURATION_INFORMATION untuk HBA ini.
RequestPriority
Penetapan prioritas untuk SRB. Bisa menjadi salah satu nilai berikut.
Nilai | Makna |
---|---|
StorIoPriorityVeryLow (0) | Prioritas yang sangat rendah. |
StorIoPriorityLow (1) | Prioritas rendah. |
StorIoPriorityNormal (2) | Prioritas normal. |
StorIoPriorityHigh (3) | Prioritas tinggi. |
StorIoPriorityCritical (4) | Prioritas penting. |
RequestAttribute
Menunjukkan pesan antrean bertag yang akan digunakan saat bendera SRB_FLAGS_QUEUE_ACTION_ENABLE diatur. Nilainya bisa menjadi salah satu dari yang berikut: SRB_SIMPLE_TAG_REQUEST, SRB_HEAD_OF_QUEUE_TAG_REQUEST, atau SRB_ORDERED_QUEUE_TAG_REQUEST.
TimeOutValue
Menunjukkan interval, dalam hitungan detik, bahwa permintaan dapat dijalankan sebelum driver port khusus sistem operasi mungkin menganggapnya kehabisan waktu. Driver miniport tidak diperlukan untuk permintaan waktu karena driver port sudah melakukannya.
DUMMYUNIONNAME
Serikat tertanam.
DUMMYUNIONNAME.SystemStatus
Digunakan untuk menyimpan informasi status kegagalan sistem dalam kondisi kegagalan SrbStatus (misalnya, SRB_STATUS_INTERNAL_ERROR).
DUMMYUNIONNAME.RequestTagHigh4Bytes
Digunakan untuk menyimpan empat byte tinggi tag unik jika fitur tag unik diaktifkan.
SystemStatus
Digunakan oleh driver Storport, alih-alih SrbStatus, untuk melaporkan status permintaan yang selesai setiap kali permintaan tidak dapat dikirimkan ke driver miniport. Dalam kasus seperti itu, SrbStatus diatur ke SRB_STATUS_INTERNAL_ERROR. Anggota ini digunakan secara eksklusif untuk komunikasi antara Storport dan pengemudi kelas dan tidak boleh digunakan oleh driver miniport.
ZeroGuard1
Area penjaga untuk melindungi dari driver yang menafsirkan struktur ini sebagai SCSI_REQUEST_BLOCK. Atur ke 0.
AddressOffset
Offset alamat permintaan penyimpanan dari awal struktur ini. Offset ini menemukan struktur STOR_ADDRESS yang berisi alamat untuk permintaan.
NumSrbExData
Jumlah blok data SRB yang diperluas untuk permintaan ini.
DataTransferLength
Menunjukkan ukuran, dalam byte, dari buffer data. Jika underrun terjadi, driver miniport harus memperbarui anggota ini ke jumlah byte yang benar-benar ditransfer.
DataBuffer
Menunjuk ke buffer data. Driver Miniport tidak boleh menggunakan nilai ini sebagai penunjuk data kecuali driver miniport mengatur MapBuffers ke TRUE dalam PORT_CONFIGURATION_INFORMATION untuk HBA. Namun, dalam kasus permintaan SRB_FUNCTION_IO_CONTROL, driver miniport dapat menggunakan nilai ini sebagai penunjuk data terlepas dari nilai MapBuffers.
ZeroGuard2
Area penjaga untuk melindungi dari driver yang menafsirkan struktur ini sebagai SCSI_REQUEST_BLOCK. Atur ke 0.
OriginalRequest
Menunjuk ke IRP untuk permintaan ini. Anggota ini tidak relevan dengan pengemudi miniport.
ClassContext
Menunjuk ke data konteks driver kelas untuk permintaan ini. Anggota ini tidak relevan dengan pengemudi miniport.
PortContext
Menunjuk ke data konteks driver port untuk permintaan ini. Anggota ini tidak relevan dengan pengemudi miniport.
MiniportContext
Menunjuk ke ekstensi Srb. Driver miniport tidak boleh menggunakan anggota ini jika mengatur SrbExtensionSize ke nol dalam HW_INITIALIZATION_DATA. Memori di MiniportContext tidak diinisialisasi oleh driver port khusus sistem operasi, dan data yang ditentukan driver miniport dapat diakses langsung oleh HBA. Alamat fisik yang sesuai dapat diperoleh dengan memanggil StorportGetPhysicalAddress dengan penunjuk MiniportContext .
NextSrb
Menunjukkan STORAGE_REQUEST_BLOCK tempat permintaan ini berlaku. Hanya sebagian kecil permintaan yang menggunakan SRB kedua, misalnya SRB_FUNCTION_ABORT_COMMAND.
_STORAGE_REQUEST_BLOCK
SrbExDataOffset[ANYSIZE_ARRAY]
Array offset yang menentukan lokasi blok data yang diperluas untuk SRB. Array ini kosong jika NumSrbExData = 0.
Keterangan
Mulai dari Windows 8, jenis SRB yang diperluas didukung dengan penggunaan struktur STORAGE_REQUEST_BLOCK. STORAGE_REQUEST_BLOCK memperluas fungsi SRB, memungkinkan blok data yang diperluas untuk fungsi SRB ditambahkan ke permintaan. Dukungan untuk permintaan SRB menggunakan struktur SCSI_REQUEST_BLOCK akan berlanjut.
Jika NumSrbExData> 0, offset untuk blok data yang diperluas SRB berada di array SrbExDataOffset . Setiap offset relatif terhadap awal struktur ini dan menunjuk ke struktur SRBEX_DATA yang berisi blok data yang diperluas.
Alamat perangkat target untuk SRB berada dalam struktur STOR_ADDRESS yang ditunjukkan oleh AddressOffset.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia di Windows versi Windows 8 dan yang lebih baru. |
Header | storport.h (termasuk Storport.h, Srb.h, Minitape.h) |