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 関数を呼び出す場合、呼び出し元は、IO_BLOCK_EX 構造体のアドレスを関数の lpInBuffer パラメーターとして指定する必要があります。 この 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構造体メンバーに割り当てられた値を示しています。
Structure メンバー | 割り当てられた値 |
---|---|
TransferFlags | 0 |
TransferBufferLength | pIoBlockEx->uLength |
TransferBuffer | lpOutBuffer (読み取り) または pIoBlockEx->pbyData (書き込み) |
TransferBufferMDL | NULL |
RequestTypeReservedBits | 0xC0 (読み取り) または0x40 (書き込み) |
要求 | pIoBlockEx- bRequestの> |
値の | (SHORT)pIoBlockEx->uOffset |
インデックス の | pIoBlockEx- uIndex> |
詳細については、「静止画像デバイスの Kernel-Mode ドライバーへのアクセス」を参照してください。
必要条件
要件 | 価値 |
---|---|
ヘッダー | usbscan.h (Usbscan.h を含む) |