struktur SCSI_POWER_REQUEST_BLOCK (srb.h)
Struktur SCSI_POWER_REQUEST_BLOCK adalah versi khusus dari SCSI_REQUEST_BLOCK yang digunakan untuk permintaan manajemen daya.
Sintaks
typedef struct _SCSI_POWER_REQUEST_BLOCK {
USHORT Length;
UCHAR Function;
UCHAR SrbStatus;
UCHAR SrbPowerFlags;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
STOR_DEVICE_POWER_STATE DevicePowerState;
ULONG SrbFlags;
ULONG DataTransferLength;
ULONG TimeOutValue;
PVOID DataBuffer;
PVOID SenseInfoBuffer;
struct _SCSI_REQUEST_BLOCK *NextSrb;
PVOID OriginalRequest;
PVOID SrbExtension;
STOR_POWER_ACTION PowerAction;
ULONG Reserved;
UCHAR Reserved5[16];
} SCSI_POWER_REQUEST_BLOCK, *PSCSI_POWER_REQUEST_BLOCK;
Anggota
Length
Ukuran, dalam byte, dari struktur SCSI_POWER_REQUEST_BLOCK .
Function
Operasi yang akan dilakukan. Untuk struktur SCSI_POWER_REQUEST_BLOCK , anggota ini selalu diatur ke SRB_FUNCTION_POWER.
SrbStatus
Status permintaan yang telah selesai. Anggota ini harus ditetapkan oleh driver miniport sebelum memberi tahu driver Storport bahwa permintaan telah selesai. Driver miniport memberi tahu driver Storport bahwa permintaan telah selesai dengan memanggil fungsi StorPortNotification dengan jenis pemberitahuan RequestComplete .
Lihat SCSI_REQUEST_BLOCK dalam dokumentasi WDK untuk daftar nilai yang mungkin untuk anggota ini.
SrbPowerFlags
Bendera manajemen daya. Saat ini, satu-satunya bendera yang diizinkan adalah SRB_POWER_FLAGS_ADAPTER_REQUEST, yang menunjukkan bahwa permintaan manajemen daya adalah untuk adaptor. Jika bendera ini diatur, driver miniport harus mengabaikan nilai di PathId, TargetId, dan Lun.
PathId
Port SCSI atau pengidentifikasi bus untuk permintaan tersebut. Nilai ini berbasis nol.
TargetId
Pengontrol target atau pengidentifikasi perangkat di bus.
Lun
Nomor unit logis (LUN) perangkat.
DevicePowerState
Nilai enumerator jenis STOR_DEVICE_POWER_STATE yang menentukan status daya perangkat yang diminta.
SrbFlags
Driver Miniport harus mengabaikan anggota ini.
DataTransferLength
Driver Miniport harus mengabaikan anggota ini.
TimeOutValue
Interval, dalam hitungan detik, bahwa permintaan dapat dijalankan sebelum driver Storport menentukan bahwa permintaan telah kehabisan waktu.
DataBuffer
Driver Miniport harus mengabaikan anggota ini.
SenseInfoBuffer
Driver Miniport harus mengabaikan anggota ini.
NextSrb
Driver Miniport harus mengabaikan anggota ini.
OriginalRequest
Driver Miniport harus mengabaikan anggota ini.
SrbExtension
Penunjuk ke ekstensi SRB. Driver miniport tidak boleh menggunakan anggota ini jika mengatur SrbExtensionSize ke nol dalam struktur HW_INITIALIZATION_DATA . Driver Storport tidak menginisialisasi memori yang dituju anggota ini. HBA dapat langsung mengakses data yang ditulis driver miniport ke ekstensi SRB. Driver miniport dapat memperoleh alamat fisik ekstensi SRB dengan memanggil rutinitas StorPortGetPhysicalAddress .
PowerAction
Nilai enumerator jenis STOR_POWER_ACTION yang menentukan jenis pematian sistem yang akan terjadi. Nilai ini bermakna hanya jika perangkat berpindah ke status daya D1, D2, atau D3 seperti yang ditunjukkan oleh anggota DevicePowerState .
Reserved
Dicadangkan untuk penggunaan sistem.
Reserved5[16]
Dicadangkan untuk penggunaan sistem.
Keterangan
Driver Storport memanggil HwStorBuildIo untuk meneruskan SRB ke driver miniport. HwStorBuildIo harus memeriksa anggota Fungsi SRB untuk menentukan jenis SRB. Jika anggota Fungsi diatur ke SRB_FUNCTION_POWER, SRB adalah struktur jenis SCSI_POWER_REQUEST_BLOCK.
Driver Storport mengirim permintaan SCSI_POWER_REQUEST_BLOCK ke driver miniport untuk memberi tahu driver miniport peristiwa daya Windows yang memengaruhi perangkat penyimpanan yang terhubung ke adaptor. Dalam kasus peristiwa power up, permintaan ini memberi driver miniport kesempatan untuk menginisialisasi dirinya sendiri. Dalam kasus peristiwa hibernasi atau pematian, permintaan ini memberi driver miniport kesempatan untuk menyelesaikan permintaan I/O dan mempersiapkan pemadaman. Driver miniport dapat menggunakan nilai dalam anggota PowerActiondari SCSI_POWER_REQUEST_BLOCK untuk menentukan tindakan apa yang diperlukan. Setelah driver miniport menyelesaikan permintaan SCSI_POWER_REQUEST_BLOCK , driver Storport memanggil HwScsiAdapterControl dengan permintaan kontrol ScsiStopAdapter untuk mematikan adaptor. Driver miniport menginisialisasi ulang saat memproses permintaan SRB_FUNCTION_POWER, atau dapat menunggu dan menginisialisasi ulang ketika driver Storport memanggil HwStorAdapterControl untuk melakukan permintaan kontrol ScsiRestartAdapter .
Saat beralih dari status daya D0 ke status bertenaga lebih rendah (D1, D2, atau D3) driver Storport mengirimkan permintaan SCSI_POWER_REQUEST_BLOCK ke driver miniport sebelum driver bus yang mendasar mematikan adaptor.
Kondisi berikut harus ada sebelum driver Storport akan mengirim permintaan SCSI_POWER_REQUEST_BLOCK ke driver miniport:
- Adapter tidak dihentikan.
- Antrean I/O untuk adaptor dijeda.
- Perangkat keras adaptor dinyalakan.
- Miniport dapat mengakses sumber daya perangkat keras adaptor.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | srb.h (termasuk Storport.h, Minitape.h, Srb.h) |