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;
  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 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 untuk permintaan SRB_FUNCTION_ABORT_COMMAND yang 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 ditetapkan di 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 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 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 melakukan negosiasi ulang untuk I/O asinkron sebelum melakukan transfer.
SRB_FLAGS_DISABLE_DISCONNECT Menunjukkan HBA tidak boleh mengizinkan target untuk 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 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 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 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 memberi tahu 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.

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 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 StorportGetPhysicalAddress dengan penunjuk 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 Tersedia di Windows versi Windows 8 dan yang lebih baru.
Header storport.h (termasuk Storport.h, Srb.h, Minitape.h)

Lihat juga

SCSI_REQUEST_BLOCK

STOR_ADDRESS