enumerasi SPB_REQUEST_SEQUENCE_POSITION (spbcx.h)

Enumerasi SPB_REQUEST_SEQUENCE_POSITION menunjukkan posisi permintaan I/O dalam daftar transfer untuk urutan transfer I/O.

Sintaks

typedef enum _SPB_REQUEST_SEQUENCE_POSITION {
  SpbRequestSequencePositionInvalid,
  SpbRequestSequencePositionSingle,
  SpbRequestSequencePositionFirst,
  SpbRequestSequencePositionContinue,
  SpbRequestSequencePositionLast,
  SpbRequestSequencePositionMax
} SPB_REQUEST_SEQUENCE_POSITION, *PSPB_REQUEST_SEQUENCE_POSITION;

Konstanta

 
SpbRequestSequencePositionInvalid
Hanya untuk penggunaan internal.
SpbRequestSequencePositionSingle
Permintaan I/O transfer tunggal. Permintaan ini adalah permintaan baca atau tulis (IRP_MJ_READ atau IRP_MJ_WRITE) yang bukan bagian dari urutan, atau permintaan kontrol I/O IOCTL_SPB_EXECUTE_SEQUENCE untuk urutan yang terdiri dari satu transfer.

Pengontrol harus memilih target sebelum melakukan transfer, dan melepaskan target setelah transfer selesai.
SpbRequestSequencePositionFirst
Permintaan I/O pertama secara berurutan. Permintaan ini adalah permintaan baca atau tulis yang segera mengikuti permintaan kontrol I/O kunci (IOCTL_SPB_LOCK_CONTROLLER) yang menandakan awal urutan.

Pengontrol harus memilih target sebelum melakukan transfer ini, dan target harus tetap dipilih setelah transfer selesai.
SpbRequestSequencePositionContinue
Permintaan I/O di tengah urutan. Permintaan ini adalah permintaan baca atau tulis yang bukan yang pertama atau transfer terakhir dalam urutan.

Dalam beberapa kasus, ekstensi kerangka kerja SPB (SpbCx) tidak dapat mengidentifikasi transfer terakhir dan memberi label transfer terakhir sebagai SpbRequestSequencePositionContinue alih-alih SpbRequestSequencePositionLast. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.

Pengontrol harus sudah memilih target sebelum memulai transfer ini, dan target harus tetap dipilih setelah transfer selesai.
SpbRequestSequencePositionLast
Permintaan I/O terakhir secara berurutan. Permintaan ini adalah permintaan baca atau tulis yang segera mendahului permintaan kontrol I/O pembuka kunci (IOCTL_SPB_UNLOCK_CONTROLLER) yang menandakan akhir urutan.

Dalam beberapa kasus, SpbCx tidak dapat mengidentifikasi transfer terakhir dan memberi label transfer terakhir sebagai SpbRequestSequencePositionContinue alih-alihSpbRequestSequencePositionLast. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.

Pengontrol harus sudah memilih target sebelum memulai transfer ini, dan harus melepaskan target setelah transfer selesai.
SpbRequestSequencePositionMax
Hanya untuk penggunaan internal.

Keterangan

Klien (driver periferal) pengontrol SPB dapat melakukan urutan transfer I/O dengan mengirim serangkaian permintaan baca dan tulis ke perangkat target di bus. Setiap permintaan baca atau tulis dalam seri menempati posisi dalam daftar transfer untuk urutan tersebut. Nilai dalam enumerasi SPB_REQUEST_SEQUENCE_POSITION menunjukkan posisi relatif permintaan baca dan tulis dalam daftar ini.

Metode SpbRequestGetParameters mengambil nilai parameter khusus SPB dari permintaan I/O dan menulisnya ke struktur SPB_REQUEST_PARAMETERS . Termasuk dalam parameter ini adalah nilai enumerasi SPB_REQUEST_SEQUENCE_POSITION yang menunjukkan posisi permintaan I/O dalam urutan transfer I/O yang merupakan bagiannya.

Jika SpbRequestGetParameters dipanggil untuk mengambil nilai posisi permintaan I/O yang bukan bagian dari urutan, metode ini menetapkan nilai enumerasi SPB_REQUEST_SEQUENCE_POSITION yang sesuai ke permintaan.

Untuk permintaan baca dan tulis, nilai posisi diatur ke salah satu nilai berikut: SpbRequestSequencePositionSingle, SpbRequestSequencePositionFirst, SpbRequestSequencePositionContinue, atau SpbRequestSequencePositionLast.

Jika klien mengirim permintaan baca atau tulis sederhana (IRP_MJ_READ atau IRP_MJ_WRITE) yang bukan bagian dari urutan, nilai posisi diatur ke SpbRequestSequencePositionSingle.

Jika klien mengirim permintaan kunci (IOCTL_SPB_LOCK_CONTROLLER) untuk memberi sinyal awal urutan, nilai posisi untuk transfer pertama (permintaan baca atau tulis) dalam urutan adalah SpbRequestSequencePositionFirst, dan nilai posisi untuk transfer yang tersisa dalam urutan adalah SpbRequestSequencePositionContinue. Dalam hal ini, SpbCx tidak dapat menetapkan SpbRequestSequencePositionLast ke transfer terakhir karena tidak tahu bahwa klien telah mengirim permintaan baca atau tulis terakhir sampai klien mengirim permintaan buka kunci (IOCTL_SPB_UNLOCK_CONTROLLER) yang mengakhiri urutan.

Untuk permintaan kunci, nilai posisi diatur ke SpbRequestSequencePositionFirst. Untuk permintaan buka kunci, nilai posisi diatur ke SpbRequestSequencePositionLast.

Beberapa pengontrol mungkin mendukung operasi khusus, seperti transfer bus dupleks penuh yang secara bersamaan membaca dari dan menulis ke perangkat target. Klien dapat melakukan operasi urutan kustom dengan mengunci pengontrol dan mengirim serangkaian permintaan I/O kustom, yang diteruskan SpbCx ke fungsi panggilan balik EvtSpbControllerIoOther driver pengontrol SPB. Dalam hal ini, nilai posisi untuk permintaan I/O kustom pertama dalam urutan adalah SpbRequestSequencePositionFirst, dan nilai posisi untuk permintaan I/O kustom yang tersisa dalam urutan adalah SpbRequestSequencePositionContinue. Urutan berakhir ketika klien membuka kunci pengontrol. Jika fungsi panggilan balik EvtSpbControllerIoOther menerima permintaan I/O kustom yang bukan bagian dari urutan, nilai posisi untuk permintaan ini adalah SpbRequestSequencePositionSingle.

Untuk nilai posisi SpbRequestSequencePositionLast, anggota Panjang struktur SPB_REQUEST_PARAMETERS dapat 0 untuk menunjukkan bahwa target hanya boleh dirilis dan bahwa tidak ada data I/O yang harus ditransfer (atau, setara, untuk menunjukkan bahwa transfer 0-byte harus terjadi, jika pengontrol tidak dapat melepaskan perangkat tanpa menjalankan jam).

Untuk nilai posisi SpbRequestSequencePositionContinue dan SpbRequestSequencePositionLast, arah transfer mungkin telah berubah dari transfer sebelumnya dan driver pengontrol SPB mungkin perlu menunjukkan kemungkinan perubahan arah ini pada bus (misalnya, pengontrol I2C mengeluarkan kondisi START baru). Untuk informasi selengkapnya tentang petunjuk arah transfer, lihat SPB_TRANSFER_DIRECTION.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung dimulai dengan Windows 8.
Header spbcx.h (termasuk Spb.h)

Lihat juga