Bagikan melalui


IOCTL_GPIO_WRITE_PINS IOCTL (gpio.h)

Kode kontrol I/O IOCTL_GPIO_WRITE_PINS memungkinkan klien pengontrol I/O tujuan umum (GPIO) untuk menulis ke sekumpulan pin GPIO yang dikonfigurasi sebagai output. Biasanya, klien pengontrol GPIO adalah driver untuk perangkat periferal yang terhubung ke pin GPIO.

Kode utama

IRP_MJ_DEVICE_CONTROL

Buffer input

Buffer input.

Panjang buffer input

Buffer input harus cukup besar untuk berisi data untuk semua pin GPIO yang merupakan bagian dari koneksi target tempat klien mengirim permintaan. Misalnya, jika perangkat keras pengontrol GPIO menerapkan pin 64 GPIO, dan klien membuka koneksi ke tiga pin GPIO ini, buffer satu byte cukup besar untuk berisi tiga nilai 1-bit untuk menulis ke tiga pin dalam koneksi.

Buffer output

Buffer output berisi data yang sama dengan buffer input (karena TransferType untuk IOCTL ini METHOD_BUFFERED).

Panjang buffer output

Sama seperti buffer input.

Blok status

Jika operasi berhasil, driver pengontrol mengatur anggota Status ke STATUS_SUCCESS, dan mengatur anggota Informasi ke jumlah total byte yang ditransfer selama operasi yang diminta. Jika operasi mentransfer N bit, jumlah byte yang ditransfer adalah (N + 7) / 8. (Artinya, 7 ditambahkan ke N untuk dibulatkan ke atas ke batas byte berikutnya sebelum pembagian bilangan bulat sebesar 8.)

Jika permintaan ini gagal, anggota Status diatur ke kode kesalahan dan tidak ada data yang dibaca dari pin GPIO. Operasi yang diminta mungkin gagal karena berbagai alasan, yang dapat mencakup input klien yang tidak valid, sumber daya rendah, dan kerusakan perangkat.

Jika buffer input tidak cukup besar untuk berisi satu bit data untuk setiap pin GPIO dalam koneksi target, anggota Status diatur ke STATUS_BUFFER_TOO_SMALL. Jika pin GPIO dalam koneksi target dikonfigurasi sebagai input, anggota Status diatur ke STATUS_GPIO_OPERATION_DENIED.

Keterangan

Permintaan ini menulis ke semua pin GPIO yang merupakan bagian dari koneksi target tempat klien mengirim permintaan. Misalnya, jika koneksi memiliki tiga pin, bit 0, 1, dan 2 dari buffer input ditulis ke ketiga pin ini. Tiga pin dalam contoh koneksi ini mungkin memetakan ke pin GPIO 7, 8, dan 23 di perangkat keras pengontrol GPIO. Jika demikian, bit 0 (bit paling tidak signifikan) dalam buffer ditulis ke pin GPIO 7, bit 1 di buffer ditulis ke pin GPIO 8, dan bit 2 di buffer ditulis ke pin GPIO 23.

Ketika klien membuka koneksi ke perangkat GPIO target, semua pin GPIO dalam koneksi ini dikonfigurasi baik sebagai input atau sebagai output. Permintaan IOCTL_GPIO_WRITE_PINS hanya dapat berhasil jika pin target adalah output.

Klien mengirimkan permintaan kontrol I/O ini ke objek file untuk perangkat target. Objek file adalah struktur FILE_OBJECT yang mewakili koneksi logis ke target. Driver kerangka kerja driver mode kernel (KMDF) memanggil metode WdfIoTargetCreate untuk membuka koneksi ini. Driver kerangka kerja driver mode pengguna (UMDF) memanggil metode IWDFRemoteTarget::OpenFileByName untuk membuka koneksi.

Untuk contoh kode yang menunjukkan cara menggunakan permintaan IOCTL_GPIO_WRITE_PINS untuk menulis ke sekumpulan pin I/O GPIO, lihat topik berikut:

Menyambungkan Driver KMDF ke Pin I/O GPIO

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Didukung dimulai dengan Windows 8.
Header gpio.h

Lihat juga

FILE_OBJECT

IWDFRemoteTarget::OpenFileByName

WdfIoTargetBuat