GPIO デバイス コンテキスト

汎用 I/O (GPIO) コントローラー デバイスは、フレームワーク デバイス オブジェクトによって表されます。 GPIO コントローラー ドライバーは、デバイス コンテキストをこのデバイス オブジェクトに関連付けることができます。 ドライバーは、このデバイス コンテキストを使用して、GPIO コントローラー デバイスの状態に関する情報を永続的に格納します。

GPIO フレームワーク拡張機能 (GpioClx) がドライバーによって実装されるイベント コールバック関数を呼び出すと、GpioClx はデバイス コンテキストをパラメーターとしてこの関数に渡します。 コールバック関数は、デバイスコンテキストを調べて、デバイスの現在の状態を判断します。 関数がこの状態を変更すると、それに応じてデバイス コンテキストが更新されます。

GpioClx は、デバイス オブジェクトのストレージを割り当てます。 GPIO コントローラー ドライバーに複数のデバイス オブジェクトがある場合、これらのオブジェクトそれぞれのデバイス コンテキストのサイズは同じです。 DriverEntry ルーチン時、ドライバーは GPIO_CLX_RegisterClient メソッドを呼び出してコールバック関数を登録し、必要なデバイス コンテキスト サイズを指定します。 その後、EvtDriverDeviceAdd コールバック ルーチン時にドライバーは、GPIO_CLX_ProcessAddDevicePostDeviceCreate メソッドを呼び出して新しいデバイス オブジェクトを GpioClx に渡し、GpioClx はこのオブジェクトのデバイス コンテキストを割り当てます。 それから、GpioClx がドライバーによる実装のコールバック関数を呼び出すと、このデバイス コンテキストがパラメーターとして関数に渡されます。