IOCTL_GPIO_READ_PINS IOCTL (gpio.h)
IOCTL_GPIO_READ_PINS I/O コントロール コードを使用すると、汎用 I/O (GPIO) コントローラーのクライアントは、入力として構成されている一連の GPIO ピンから読み取ります。 通常、GPIO コントローラーのクライアントは、GPIO ピンに接続する周辺機器のドライバーです。
メジャー コード
入力バッファー
入力バッファーがありません。
入力バッファーの長さ
何一つ。
出力バッファー
出力バッファー。
出力バッファーの長さ
出力バッファーは、クライアントが要求を送信するターゲット接続の一部であるすべての GPIO ピンからの読み取り値を格納するのに十分な大きさにする必要があります。 たとえば、GPIO コントローラー ハードウェアが 64 個の GPIO ピンを実装し、クライアントが 3 つの GPIO ピンへの接続を開いた場合、1 バイト バッファーは、接続の 3 つのピンから読み取られた 3 つの 1 ビット値を格納するのに十分な大きさです。
状態ブロック
操作が成功した場合、GPIO コントローラー ドライバーは、状態 メンバーをSTATUS_SUCCESSに設定し、情報 メンバーを、要求された操作中に転送された合計バイト数に設定します。 操作が N ビットを転送する場合、転送されるバイト数は (N + 7) / 8 になります。 (つまり、N に 7 が追加され、整数除算の前の次のバイト境界に 8 で切り上げられます)。
この要求が失敗した場合、Status メンバーはエラー コードに設定され、GPIO ピンからデータは読み取われません。 要求された操作は、さまざまな理由で失敗する可能性があります。これには、無効なクライアント入力、リソースの不足、デバイスの誤動作が含まれる可能性があります。
出力バッファーが、ターゲット接続内のすべての GPIO ピンから読み取られたデータを格納するのに十分な大きさでない場合、Status メンバーはSTATUS_BUFFER_TOO_SMALLに設定されます。 ターゲット接続の GPIO ピンが出力として構成されている場合、状態 メンバーはSTATUS_GPIO_OPERATION_DENIEDに設定されます。
備考
この要求は、クライアントが要求を送信するターゲット接続の一部であるすべての GPIO ピンを読み取ります。 たとえば、接続に 3 つのピンがある場合、これらのピンから読み取られた 1 ビット値は、出力バッファーのビット 0、1、および 2 に保存されます。 この例の接続の 3 つのピンは、GPIO コントローラー ハードウェアの GPIO ピン 7、8、および 23 にマップされる場合があります。 その場合、GPIO ピン 7 はバッファーのビット 0 (下位ビット) に保存され、GPIO ピン 8 はバッファーのビット 1 に保存され、GPIO ピン 23 はバッファーのビット 2 に保存されます。
クライアントがターゲット GPIO デバイスへの接続を開くと、この接続内のすべての GPIO ピンが入力または出力として構成されます。 IOCTL_GPIO_READ_PINS 要求は、ターゲット ピンが入力である場合にのみ成功します。
クライアントは、この I/O 制御要求をターゲット デバイスのファイル オブジェクトに送信します。 ファイル オブジェクトは、ターゲットへの論理接続を表す FILE_OBJECT 構造体です。 カーネル モード ドライバー フレームワーク (KMDF) ドライバーは、WdfIoTargetCreate メソッドを呼び出して、この接続を開きます。 ユーザー モード ドライバー フレームワーク (UMDF) ドライバー、IWDFRemoteTarget::OpenFileByName メソッドを呼び出して接続を開きます。
IOCTL_GPIO_READ_PINS 要求を使用して一連の GPIO I/O ピンを読み取る方法を示すコード例については、次のトピックを参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 8 以降でサポートされています。 |
ヘッダー | gpio.h |
関連項目
IWDFRemoteTarget::OpenFileByName
WdfIoTargetCreate の