次の方法で共有


IOCTL_GPIO_WRITE_PINS IOCTL (gpio.h)

IOCTL_GPIO_WRITE_PINS I/O 制御コードを使用すると、汎用 I/O (GPIO) コントローラーのクライアントは、出力として構成されている一連の GPIO ピンに書き込みます。 通常、GPIO コントローラーのクライアントは、GPIO ピンに接続する周辺機器のドライバーです。

メジャー コード

IRP_MJ_DEVICE_CONTROL

入力バッファー

入力バッファー。

入力バッファーの長さ

入力バッファーは、クライアントが要求を送信するターゲット接続の一部であるすべての GPIO ピンのデータを格納するのに十分な大きさにする必要があります。 たとえば、GPIO コントローラー ハードウェアが 64 個の GPIO ピンを実装し、クライアントが 3 つの GPIO ピンへの接続を開いた場合、1 バイト バッファーには、接続の 3 つのピンに書き込むための 3 つの 1 ビット値を格納するのに十分な大きさがあります。

出力バッファー

出力バッファーには、入力バッファーと同じデータが含まれています (この IOCTL の TransferType がMETHOD_BUFFEREDされているため)。

出力バッファーの長さ

入力バッファーと同じです。

状態ブロック

操作が成功した場合、コントローラー ドライバーは、状態 メンバーをSTATUS_SUCCESSに設定し、要求された操作中に転送された合計バイト数に 情報 メンバーを設定します。 操作が N ビットを転送する場合、転送されるバイト数は (N + 7) / 8 になります。 (つまり、N に 7 が追加され、整数除算の前の次のバイト境界に 8 で切り上げられます)。

この要求が失敗した場合、Status メンバーはエラー コードに設定され、GPIO ピンからデータは読み取われません。 要求された操作は、さまざまな理由で失敗する可能性があります。これには、無効なクライアント入力、リソースの不足、デバイスの誤動作が含まれる可能性があります。

入力バッファーがターゲット接続の GPIO ピンごとに 1 ビットのデータを格納するのに十分な大きさでない場合、Status メンバーはSTATUS_BUFFER_TOO_SMALLに設定されます。 ターゲット接続の GPIO ピンが入力として構成されている場合、Status メンバーはSTATUS_GPIO_OPERATION_DENIEDに設定されます。

備考

この要求は、クライアントが要求を送信するターゲット接続の一部であるすべての GPIO ピンに書き込みます。 たとえば、接続に 3 つのピンがある場合、入力バッファーからのビット 0、1、2 はこれら 3 つのピンに書き込まれます。 この例の接続の 3 つのピンは、GPIO コントローラー ハードウェアの GPIO ピン 7、8、および 23 にマップされる場合があります。 その場合、バッファー内のビット 0 (下位ビット) が GPIO ピン 7 に書き込まれ、バッファー内のビット 1 が GPIO ピン 8 に書き込まれ、バッファー内のビット 2 が GPIO ピン 23 に書き込まれます。

クライアントがターゲット GPIO デバイスへの接続を開くと、この接続内のすべての GPIO ピンが入力または出力として構成されます。 IOCTL_GPIO_WRITE_PINS 要求は、ターゲット ピンが出力されている場合にのみ成功します。

クライアントは、この I/O 制御要求をターゲット デバイスのファイル オブジェクトに送信します。 ファイル オブジェクトは、ターゲットへの論理接続を表す FILE_OBJECT 構造体です。 カーネル モード ドライバー フレームワーク (KMDF) ドライバーは、WdfIoTargetCreate メソッドを呼び出して、この接続を開きます。 ユーザー モード ドライバー フレームワーク (UMDF) ドライバーIWDFRemoteTarget::OpenFileByName メソッドを呼び出して接続を開きます。

IOCTL_GPIO_WRITE_PINS 要求を使用して一連の GPIO I/O ピンに書き込む方法を示すコード例については、次のトピックを参照してください。

KMDF ドライバーを GPIO I/O ピンに接続する

必要条件

要件 価値
サポートされる最小クライアント Windows 8 以降でサポートされています。
ヘッダー gpio.h

関連項目

FILE_OBJECT

IWDFRemoteTarget::OpenFileByName

WdfIoTargetCreate