Bagikan melalui


Fungsi Panggilan Balik GPIO Opsional dan Diperlukan

Driver pengontrol I/O tujuan umum (GPIO) memanggil metode GPIO_CLX_RegisterClient untuk mendaftar sebagai klien ekstensi kerangka kerja GPIO (GpioClx). Selama panggilan ini, driver meneruskan paket pendaftaran ke GpioClx yang menentukan daftar fungsi panggilan balik peristiwa yang diterapkan oleh driver. GpioClx memanggil fungsi panggilan balik ini untuk mengonfigurasi perangkat keras pengontrol GPIO, melakukan operasi I/O, dan mengelola gangguan. GpioClx memerlukan driver pengontrol GPIO untuk menerapkan fungsi panggilan balik tertentu, tetapi dukungan untuk fungsi panggilan balik lainnya bersifat opsional.

Paket pendaftaran adalah struktur GPIO_CLIENT_REGISTRATION_PACKET . Jika driver pengontrol GPIO menerapkan fungsi panggilan balik tertentu, driver ini menulis penunjuk fungsi ke fungsi panggilan balik tersebut ke anggota struktur ini yang sesuai. Atau, untuk menunjukkan bahwa fungsi panggilan balik tertentu tidak didukung, driver menulis NULL ke anggota yang sesuai.

Fungsi panggilan balik berikut harus disertakan dalam paket pendaftaran:

CLIENT_PrepareControllerCLIENT_QueryControllerBasicInformationCLIENT_StartControllerCLIENT_StopControllerCLIENT_ReleaseController Jika ada fungsi panggilan balik dalam daftar sebelumnya yang hilang (yaitu, jika penunjuk fungsi yang sesuai dalam paket pendaftaran adalah NULL), metode GPIO_CLX_RegisterClient gagal.

Driver pengontrol GPIO tidak diperlukan untuk mendukung membaca dari atau menulis ke pin I/O GPIO, yang merupakan pin yang dikonfigurasi sebagai input data atau output data. (Pengontrol GPIO tanpa pin I/O masih dapat menyampaikan permintaan interupsi dari perangkat periferal.) Namun, jika paket pendaftaran menyertakan salah satu fungsi panggilan balik terkait I/O berikut, paket harus menyertakan kedua fungsi panggilan balik berikut:

CLIENT_ConnectIoPinsCLIENT_DisconnectIoPins Selain itu, jika paket pendaftaran menyertakan dua fungsi panggilan balik dalam daftar sebelumnya, driver juga harus mendukung pembacaan dari pin I/O GPIO, menulis ke pin I/O GPIO, atau keduanya. Secara khusus, paket pendaftaran harus menyertakan setidaknya satu fungsi panggilan balik dalam daftar berikut:

CLIENT_ReadGpioPins atau CLIENT_ReadGpioPinsUsingMaskCLIENT_WriteGpioPins atau CLIENT_WriteGpioPinsUsingMask Driver yang mendukung bacaan harus mengimplementasikan salah satu dari dua fungsi panggilan balik Xxx CLIENT_ReadGpioPinsdalam daftar sebelumnya. Driver yang mendukung penulisan harus mengimplementasikan salah satu dari dua fungsi panggilan balik Xxx CLIENT_WriteGpioPinsdalam daftar sebelumnya.

Driver yang mengimplementasikan CLIENT_ReadGpioPinsUsingMask, CLIENT_WriteGpioPinsUsingMask, atau keduanya, harus mengatur bit bendera FormatIoRequestsAsMasks dalam informasi perangkat yang disediakan oleh fungsi panggilan balik CLIENT_QueryControllerBasicInformation . Driver yang mengimplementasikan CLIENT_ReadGpioPins, CLIENT_WriteGpioPins, atau keduanya, tidak boleh mengatur bit bendera ini. Untuk informasi selengkapnya, lihat deskripsi anggota Bendera di CLIENT_CONTROLLER_BASIC_INFORMATION.

Driver pengontrol GPIO tidak diperlukan untuk mendukung gangguan GPIO. Namun, jika paket pendaftaran menyertakan salah satu fungsi panggilan balik terkait gangguan berikut, paket harus menyertakan semua fungsi panggilan balik berikut:

CLIENT_EnableInterruptCLIENT_DisableInterruptCLIENT_MaskInterruptsCLIENT_QueryActiveInterruptsCLIENT_UnmaskInterrupt Driver yang mendukung penyelubungan gangguan harus menerapkan fungsi panggilan balik CLIENT_MaskInterrupts . Driver yang mendukung kueri gangguan aktif harus mengimplementasikan fungsi panggilan balik CLIENT_QueryActiveInterrupts .

Fungsi panggilan balik CLIENT_ClearActiveInterrupts adalah kasus khusus. Jika perangkat keras pengontrol GPIO secara otomatis menghapus gangguan aktif saat dibaca, fungsi CLIENT_ClearActiveInterrupts tidak diperlukan dan penunjuk fungsi yang sesuai dalam paket pendaftaran harus diatur ke NULL. Namun, jika gangguan aktif tidak secara otomatis dihapus ketika dibaca, dan jika fungsi panggilan balik terkait interupsi dalam daftar sebelumnya disediakan dalam paket pendaftaran, fungsi CLIENT_ClearActiveInterrupts harus disertakan dalam paket. Untuk menunjukkan bahwa perangkat keras secara otomatis menghapus gangguan aktif saat dibaca, driver mengatur bit bendera ActiveInterruptsAutoClearOnRead dalam informasi perangkat yang disediakan oleh fungsi panggilan balik CLIENT_QueryControllerBasicInformation . Untuk informasi selengkapnya, lihat deskripsi anggota Bendera di CLIENT_CONTROLLER_BASIC_INFORMATION.

Jika driver pengontrol GPIO mendukung gangguan GPIO, paket pendaftaran dapat, sebagai opsi, sertakan fungsi panggilan balik berikut:

CLIENT_QueryEnabledInterrupts GpioClx mendukung fungsi CLIENT_QueryEnabledInterrupts yang dimulai dengan Windows 8.1.

Driver yang mendukung manajemen daya tingkat komponen harus menerapkan kedua fungsi panggilan balik berikut:

CLIENT_RestoreBankHardwareContextCLIENT_SaveBankHardwareContext Untuk menunjukkan bahwa perangkat keras mendukung manajemen daya tingkat komponen, driver menetapkan bit bendera BankIdlePowerMgmtSupported dalam informasi perangkat yang disediakan oleh fungsi panggilan balik CLIENT_QueryControllerBasicInformation . Untuk informasi selengkapnya, lihat deskripsi anggota Bendera di CLIENT_CONTROLLER_BASIC_INFORMATION.

Fungsi panggilan balik CLIENT_PreProcessControllerInterrupt, CLIENT_ReconfigureInterrupt, dan CLIENT_ControllerSpecificFunction bersifat opsional dan didukung oleh GpioClx untuk mengatasi masalah khusus perangkat keras dalam beberapa implementasi pengontrol GPIO. Hanya driver pengontrol GPIO dengan persyaratan khusus yang menerapkan fungsi-fungsi ini.