Bagikan melalui


Menggunakan Antarmuka Permintaan I/O SPB

Dimulai dengan Windows 8, ekstensi kerangka kerja SPB (SpbCx) adalah komponen yang disediakan sistem yang mendukung antarmuka permintaan SPB I/O. Driver perangkat periferal SPB menggunakan antarmuka ini untuk mengirim permintaan I/O ke perangkat yang terhubung ke I²C, SPI, dan bus periferal sederhana (SPB) lainnya. Dengan membuat antarmuka permintaan I/O standar tersedia di berbagai jenis bus, SpbCx menyederhanakan tugas memberikan dukungan driver untuk keluarga perangkat periferal di berbagai platform perangkat keras dan pengontrol SPB dari vendor perangkat keras yang berbeda.

Jika kondisi berikut terpenuhi, vendor perangkat keras untuk perangkat periferal yang terhubung dengan SPB dapat mengembangkan satu driver perangkat yang dapat berfungsi di beberapa jenis bus:

  • Perangkat periferal harus kompatibel dengan perangkat keras dengan bus ini.
  • Driver dapat menggunakan protokol kontrol perangkat yang sama di semua jenis bus ini.

Dengan menghilangkan kode khusus bus dari driver periferal, ekstensi kerangka kerja SPB mempersingkat waktu pengembangan untuk driver ini dan memastikan perilaku yang lebih konsisten di seluruh jenis bus yang didukung.

Perangkat periferal yang terhubung ke SPB tidak dipetakan memori, dan driver untuk perangkat ini tidak dapat langsung mengakses daftar perangkat keras perangkat ini. Sebagai gantinya, driver perangkat periferal SPB harus mengandalkan pengontrol SPB untuk mentransfer data secara serial ke dan dari perangkat. Untuk meminta transfer tersebut, driver harus mengirim permintaan I/O ke perangkat. Permintaan I/O ini dikirim ke antrean yang dikelola oleh SpbCx.

SpbCx bekerja sama dengan driver pengontrol SPB untuk menangani permintaan I/O dari driver. Vendor perangkat keras untuk pengontrol SPB memasok driver pengontrol SPB untuk melakukan tugas yang khusus untuk perangkat keras pengontrol.

Hanya driver yang dapat mengirim permintaan I/O ke antarmuka permintaan I/O pengontrol SPB. Aplikasi tidak dapat langsung mengirim permintaan I/O ke pengontrol SPB. Sebagai gantinya, aplikasi dapat mengirim permintaan I/O ke driver untuk perangkat periferal yang terhubung dengan SPB, lalu mengandalkan driver untuk mengirim pengontrol SPB permintaan I/O apa pun yang mungkin diperlukan untuk mentransfer data ke atau dari perangkat.

Sebelum driver dapat mengirim permintaan I/O ke perangkat periferal yang terhubung dengan SPB, driver harus membuka koneksi logis ke perangkat. Untuk membuka koneksi ini, driver menggunakan ID koneksi yang diterimanya sebagai sumber daya perangkat keras dari manajer Plug and Play. Untuk informasi selengkapnya, lihat ID Koneksi ion untuk Perangkat Periferal SPB.

SpbCx dan driver pengontrol SPB bersama-sama menangani permintaan baca dan tulis untuk perangkat periferal yang terhubung dengan SPB. Sebagai respons terhadap permintaan IRP_MJ_READ , pengontrol SPB mentransfer jumlah byte yang ditentukan dari perangkat periferal ke buffer yang disediakan driver. Sebagai respons terhadap permintaan IRP_MJ_WRITE , pengontrol SPB mentransfer jumlah byte yang ditentukan dari buffer yang disediakan driver ke perangkat periferal.

Untuk permintaan IRP_MJ_READ atau IRP_MJ_WRITE untuk mentransfer nol byte, SpbCx menyelesaikan permintaan dengan kode status STATUS_SUCCESS, tetapi tidak melakukan operasi.

SpbCx dan driver pengontrol SPB juga menangani kode kontrol I/O khusus SPB ini (IOCTL):

Driver periferal SPB menggunakan IOCTL ini untuk melakukan urutan transfer I/O. Urutan transfer I/O adalah serangkaian transfer bus yang diurutkan (operasi baca dan tulis) yang dilakukan sebagai operasi bus atom tunggal. Untuk informasi selengkapnya tentang IOCTL ini, lihat Urutan Transfer I/O.

Driver pengontrol SPB untuk pengontrol SPB tertentu mungkin mendukung IOCTL kustom yang melakukan fungsi khusus perangkat keras. Ini adalah IOCTL yang tidak ditangani SpbCx dan bahwa vendor perangkat keras untuk pengontrol SPB mendukung untuk keuntungan driver perangkat periferal SPB yang perlu melakukan operasi khusus perangkat keras. Jika driver perangkat periferal SPB mengirim IOCTL yang tidak dikenal oleh pengandar pengontrol SpbCx maupun SPB, tidak ada operasi yang dilakukan dan permintaan I/O diselesaikan dengan nilai status kesalahan STATUS_NOT_SUPPORTED.

Driver untuk perangkat periferal yang terhubung dengan SPB biasanya merupakan driver Kerangka Kerja Driver Mode Pengguna (UMDF) atau driver Kerangka Kerja Driver Mode Kernel (KMDF). Untuk mengirim permintaan baca, tulis, atau IOCTL ke perangkat periferal yang terhubung dengan SPB, driver UMDF memanggil metode seperti IWDFIoRequest::Send. Driver KMDF memanggil metode seperti WdfIoTargetSendReadSynchronously, WdfIoTargetSendWriteSynchronously, atau WdfIoTargetSendIoctlSynchronously.

Untuk contoh kode yang menunjukkan cara mengirim permintaan I/O ke perangkat periferal yang terhubung dengan SPB, lihat topik berikut:

Sumber Daya Perangkat Keras untuk Driver Periferal SPB Mode Pengguna

Sumber Daya Perangkat Keras untuk Driver Periferal SPB Mode Kernel