struktur STORAGE_REQUEST_BLOCK (srb.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. Gunakan driver Storport dan model driver miniport Storport sebagai gantinya.

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;
  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 berada di anggota SrbFunction sebagai gantinya.

SrbStatus

Mengembalikan status permintaan yang telah selesai. Anggota ini harus ditetapkan oleh driver miniport sebelum memberi tahu driver khusus sistem operasi bahwa permintaan telah selesai dengan memanggil ScsiPortNotification dengan RequestComplete. Nilai anggota ini bisa menjadi salah satu dari berikut ini:

Nilai Makna
SRB_STATUS_PENDING (0x00) Menunjukkan permintaan sedang berlangsung. Driver port khusus sistem operasi menginisialisasi SrbStatus ke nilai ini.
SRB_STATUS_SUCCESS (0x01) Menunjukkan bahwa permintaan berhasil diselesaikan.
SRB_STATUS_ABORTED (0x02) Menunjukkan permintaan dibatalkan seperti yang diarahkan oleh driver port. Driver miniport menetapkan status ini di anggota NextSrb untuk permintaan SRB_FUNCTION_ABORT_COMMAND yang berhasil.
SRB_STATUS_ABORT_FAILED (0x03) 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 (0x04) Menunjukkan permintaan selesai dengan kesalahan dalam status bus SCSI.
SRB_STATUS_BUSY (0x05) Menunjukkan driver miniport atau perangkat target tidak dapat menerima permintaan saat ini. Driver port khusus sistem operasi akan mengirimkan ulang permintaan nanti.
SRB_STATUS_INVALID_REQUEST (0x06) Menunjukkan driver miniport tidak mendukung permintaan yang diberikan.
SRB_STATUS_INVALID_PATH_ID (0x07) Menunjukkan PathId yang ditentukan dalam SRB tidak ada.
SRB_STATUS_NO_DEVICE (0x08) Menunjukkan perangkat tidak merespons.
SRB_STATUS_TIMEOUT (0x09) Menunjukkan waktu permintaan habis.
SRB_STATUS_SELECTION_TIMEOUT (0x0A) Menunjukkan waktu pemilihan perangkat SCSI habis.
SRB_STATUS_COMMAND_TIMEOUT (0x0B) Menunjukkan target tidak menyelesaikan perintah dalam batas waktu.
SRB_STATUS_MESSAGE_REJECTED (0x0D) Menunjukkan target menolak pesan. Ini biasanya dikembalikan hanya untuk permintaan jenis pesan seperti SRB_FUNCTION_TERMINATE_IO.
SRB_STATUS_BUS_RESET (0x0E) Menunjukkan reset bus terjadi saat permintaan ini sedang dijalankan.
SRB_STATUS_PARITY_ERROR (0x0F) Menunjukkan kesalahan paritas yang terjadi pada bus SCSI dan bahwa percobaan kembali gagal.
SRB_STATUS_REQUEST_SENSE_FAILED (0x10) 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 (0x11) Menunjukkan HBA tidak merespons.
SRB_STATUS_DATA_OVERRUN (0x12) 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 (0x13) Menunjukkan target terputus secara tak terduga.
SRB_STATUS_PHASE_SEQUENCE_FAILURE (0x14) Menunjukkan HBA mendeteksi kesalahan kegagalan urutan fase ilegal.
SRB_STATUS_BAD_SRB_BLOCK_LENGTH (0x15) Menunjukkan permintaan gagal karena panjang SRB tidak valid.
SRB_STATUS_REQUEST_FLUSHED (0x16) Menunjukkan permintaan status dihentikan.
SRB_STATUS_INVALID_LUN (0x20) Menunjukkan nilai Lun dalam SRB tidak valid.
SRB_STATUS_INVALID_TARGET_ID (0x21) Menunjukkan nilai TargetID dalam SRB tidak valid.
SRB_STATUS_BAD_FUNCTION (0x22) Menunjukkan kode Fungsi SRB tidak didukung.
SRB_STATUS_ERROR_RECOVERY (0x23) Menunjukkan permintaan selesai dengan kesalahan dalam status bus SCSI dan bahwa pesan SCSI INITIATE RECOVERY diterima.
SRB_STATUS_NOT_POWERED (0x24) A menunjukkan permintaan gagal karena target tidak didukung. Untuk permintaan dengan SRB_FLAGS_NO_KEEP_AWAKE yang ditetapkan di SrbFlags, permintaan yang dikirim ke LUN yang dimatikan akan gagal dengan status ini.
SRB_STATUS_LINK_DOWN (0x25) Menunjukkan permintaan gagal karena tautan tidak berfungsi.
SRB_STATUS_INTERNAL_ERROR (0x30) Menunjukkan bahwa driver Storport tidak dapat mengirimkan permintaan ke driver miniport atau perangkat target. Dalam kasus seperti itu, status dicatat di InternalStatus.
SRB_STATUS_QUEUE_FROZEN (0x40) 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_AUTOSENSE_VALID (0x80) Menunjukkan informasi yang dikembalikan dalam SenseInfoBuffer 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 ini, alamat, dan data SRB yang diperluas.

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 ScsiPortNotification 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 membersihkan 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 yang diberi tag, 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 kehabisan waktu. 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 penantian 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 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 FeatureSupportdari HW_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_NO_DATA_TRANSFER (0x00000000) 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_QUEUE_ACTION_ENABLE (0x00000002) Menunjukkan tindakan tagged-queue yang akan diaktifkan.
SRB_FLAGS_DISABLE_DISCONNECT (0x00000004) Menunjukkan HBA tidak boleh mengizinkan target terputus dari bus SCSI selama pemrosesan permintaan ini.
SRB_FLAGS_DISABLE_SYNCH_TRANSFER (0x00000008) 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_BYPASS_FROZEN_QUEUE (0x00000010) Bendera ini tidak relevan dengan driver miniport.
SRB_FLAGS_DISABLE_AUTOSENSE (0x00000020) Menunjukkan informasi masuk akal permintaan tidak boleh dikembalikan.
SRB_FLAGS_DATA_IN (0x00000040) Menunjukkan data akan ditransfer dari perangkat ke sistem.
SRB_FLAGS_DATA_OUT (0x00000080) Menunjukkan data akan ditransfer dari sistem ke perangkat.
SRB_FLAGS_UNSPECIFIED_DIRECTION (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT) 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_QUEUE_FREEZE (0x00000100) Bendera ini tidak relevan dengan driver miniport.
SRB_FLAGS_ADAPTER_CACHE_ENABLE (0x00000200) Menunjukkan bahwa adaptor dapat menyimpan data.
SRB_FLAGS_FREE_SENSE_BUFFER (0x00000400) Menunjukkan bahwa port atau driver miniport telah mengalokasikan buffer untuk data yang masuk akal. Ini memberi tahu driver kelas bahwa ia harus membebaskan buffer data sense setelah mengekstrak data.
SRB_FLAGS_D3_PROCESSING (0x00000800) 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_SEQUENTIAL_REQUIRED (0x00001000) Menunjukkan bahwa rentang LBA termasuk dalam zona yang diperlukan penulisan berurutan.
SRB_FLAGS_IS_ACTIVE (0x00010000) Bendera ini tidak relevan dengan driver miniport.
SRB_FLAGS_ALLOCATED_FROM_ZONE (0x00020000) Bendera ini tidak relevan dengan driver miniport dan kedaluwarsa untuk 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 (0x00040000) Bendera ini tidak relevan dengan driver miniport. Untuk driver kelas, ini menunjukkan bahwa memori untuk daftar sebar/kumpulkan dialokasikan dari kumpulan yang tidak disebarkan. Jika bendera ini diatur, driver kelas harus memanggil ExFreePool untuk merilis memori setelah SRB selesai.
SRB_FLAGS_BYPASS_LOCKED_QUEUE (0x00080000) 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 (0x00100000) 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_PORT_DRIVER_ALLOCSENSE (0x00200000) Driver port perlu mengalokasikan buffer sense untuk SRB.
SRB_FLAGS_PORT_DRIVER_SENSEHASPORT (0x00400000) Usang; jangan gunakan.
SRB_FLAGS_DONT_START_NEXT_PACKET (0x00800000) Usang; jangan gunakan.
SRB_FLAGS_PORT_DRIVER_RESERVED (0x0F000000) Dicadangkan untuk penggunaan sistem.
SRB_FLAGS_CLASS_DRIVER_RESERVED (0xF0000000) Dicadangkan untuk penggunaan sistem.

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. Ini adalah salah satu nilai _STOR_IO_PRIORITY_HINT berikut:

Nilai Makna
StorIoPriorityVeryLow (0) Prioritas yang sangat rendah.
StorIoPriorityLow (1) Prioritas rendah.
StorIoPriorityNormal (2) Prioritas normal.
StorIoPriorityHigh (3) Prioritas tinggi.
StorIoPriorityCritical (4) Prioritas kritis.

RequestAttribute

Menunjukkan pesan antrean bertag yang akan digunakan saat bendera SRB_FLAGS_QUEUE_ACTION_ENABLE diatur. Nilainya bisa menjadi salah satu hal 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.

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 driver 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 di 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 ScsiPortGetPhysicalAddress dengan pointer MiniportContext .

NextSrb

Menunjukkan STORAGE_REQUEST_BLOCK yang diterapkan permintaan ini. 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 Windows 8
Header srb.h (termasuk Storport.h, Srb.h, Minitape.h)

Lihat juga

SCSI_REQUEST_BLOCK

STOR_ADDRESS