Bagikan melalui


IOCTL_GPIO_READ_PINS IOCTL (gpio.h)

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

Kode utama

IRP_MJ_DEVICE_CONTROL

Buffer input

Tidak ada buffer input.

Panjang buffer input

Tidak ada.

Buffer output

Buffer output.

Panjang buffer output

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

Blok status

Jika operasi berhasil, driver pengontrol GPIO 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 membulatkan 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 output tidak cukup besar untuk berisi data yang dibaca dari semua pin GPIO dalam koneksi target, anggota Status diatur ke STATUS_BUFFER_TOO_SMALL. Jika pin GPIO dalam koneksi target dikonfigurasi sebagai output, anggota Status diatur ke STATUS_GPIO_OPERATION_DENIED.

Keterangan

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

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

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_READ_PINS untuk membaca 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

WdfIoTargetCreate