IOCTL_SEND_USB_REQUEST IOCTL (usbscan.h)
コントロール パイプを使用して、ベンダー定義の要求を USB デバイスに送信し、必要に応じて追加のデータを送受信します。
メジャー コード
[入力バッファー]
IO_BLOCK_EX構造体へのポインター。
入力バッファーの長さ
入力バッファーのサイズ。
出力バッファー
識別されたIO_BLOCK_EX構造体の pbyData メンバーと同じバッファーへのポインター。データ転送が要求されていない場合は NULL 。
出力バッファーの長さ
出力バッファーのサイズ。データ転送が要求されていない場合は 0。
ステータス ブロック
Irp->要求が成功した場合、IoStatus.Status はSTATUS_SUCCESSに設定されます。 それ以外の場合は、NTSTATUS コードとして適切なエラー条件の状態。
注釈
DeviceIoControl パラメーター
IOCTL_SEND_USB_REQUEST制御コードを使用して DeviceloControl 関数を呼び出す場合、呼び出し元は関数の lpInBuffer パラメーターとしてIO_BLOCK_EX構造体のアドレスを指定する必要があります。 この I/O 制御コードで指定された要求の種類は、送受信される可能性のある情報の種類とサイズと同様に、デバイス固有およびベンダー定義です。
次の表は、入力引数を指定する方法を示しています。
引数 | 読み取り操作。 | 書き込み操作。 | データ転送なし |
---|---|---|---|
lpInBuffer | ポインター IO_BLOCK_EXします。 | ポインター IO_BLOCK_EXします。 | ポインター IO_BLOCK_EXします。 |
lpOutBuffer | 読み取るデータを受け取るバッファーへのポインター。 | 書き込まれるデータを含むバッファーへのポインター。 | NULL |
lpOutBufferSize | バッファーのサイズ。 | バッファーのサイズ。 | ゼロ |
IO_BLOCK_EX 構造体の bRequest メンバー | デバイス固有の要求コード。 | デバイス固有の要求コード。 | デバイス固有の要求コード。 |
IO_BLOCK_EX 構造体の pbyData メンバー | lpOutBuffer と同じポインター。 | lpOutBuffer と同じポインター。 | NULL |
IO_BLOCK_EX 構造体の uLength メンバー | lpOutBufferSize と同じ値。 | lpOutBufferSize と同じ値。 | ゼロ |
構造体の fTransferDirectionIn メンバー IO_BLOCK_EX | TRUE | FALSE | FALSE |
IO_BLOCK_EX構造体の bmRequestType メンバーは、IOCTL_SEND_USB_REQUESTでは使用されません。
カーネル モード ドライバーは、IO_BLOCK_EX構造体の内容を使用して、URB_CONTROL_VENDOR_OR_CLASS_REQUEST構造体を含む URB を作成します。
次の表は、構造体メンバーに割り当てられた値_URB_CONTROL_VENDOR_OR_CLASS_REQUEST示しています。
構造体メンバー | 割り当てられた値 |
---|---|
TransferFlags | 0 |
TransferBufferLength | pIoBlockEx-uLength> |
TransferBuffer | lpOutBuffer (読み取り) または pIoBlockEx-pbyData> (書き込み) |
TransferBufferMDL | NULL |
RequestTypeReservedBits | 0xC0 (読み取り) または0x40 (書き込み) |
Request | pIoBlockEx-bRequest> |
Value | (SHORT)pIoBlockEx-uOffset> |
Index | pIoBlockEx-uIndex> |
詳細については、「 静止画像デバイスの Kernel-Mode ドライバーへのアクセス」を参照してください。
要件
要件 | 値 |
---|---|
Header | usbscan.h (Usbscan.h を含む) |