次の方法で共有


USB driver

USB バス用のカーネル モードの静止画像ドライバーは、複数の割り込み、一括 IN、および一括 OUT エンドポイントと共に、1 つの制御エンドポイントをサポートします。 The control and interrupt endpoints are accessible using I/O control codes and DeviceIoControl. The bulk endpoints are accessible using ReadFile and WriteFile.

Before calling DeviceIoControl, ReadFile, or WriteFile, you must call CreateFile (all described in the Microsoft Windows SDK documentation) to obtain a device handle. For devices that support no more than one of each endpoint type (control, interrupt, bulk IN, bulk OUT), a single call to CreateFile opens transfer pipes to each endpoint.

For devices that support multiple interrupt or bulk endpoints, a single call to CreateFile opens transfer pipes to the highest-numbered endpoint of each type. 別のエンドポイントを使用する場合は、次の操作を行う必要があります。

  1. Call DeviceIoControl, specifying an I/O control code of IOCTL_GET_PIPE_CONFIGURATION, to determine a port's endpoint index numbers (that is, indexes into the returned USBSCAN_PIPE_INFORMATION structure array). Note that these index numbers are not the endpoint numbers described in the Universal Serial Bus Specification.

  2. Append a backslash and the endpoint's index number to the port name returned by IStiDeviceControl::GetMyDevicePortName when calling CreateFile.

たとえば、(ポート名が "usbscan0" の) デバイスに、次のようなインデックス番号を持つ各種類 (割り込み、一括 IN、一括 OUT) の 2 つのエンドポイントがあるとします。

Index タイプ Endpoint#
0 Interrupt 0x01
1 Bulk IN 0x82
2 Bulk IN 0x83
3 Bulk OUT 0x04
4 Bulk OUT 0x05
5 Interrupt 0x06

If you call CreateFile with a port name of "usbscan0", the function opens transfer pipes to endpoints with index values of 2, 4, and 5, as well as the control endpoint.

If you call CreateFile with a port name of "usbscan0\1", the function opens transfer pipes to endpoints with index values of 1, 4, and 5, as well as the control endpoint.

For this device, if you want to use interrupt endpoint 0, bulk IN endpoint 1, and bulk OUT endpoint 3, call CreateFile three times, specifying port names of "usbscan0\0", "usbscan0\1", and "usbscan0\3". これにより、3 つのデバイス ハンドルが作成されます。 Whenever a subsequent call to DeviceIoControl, ReadFile, or WriteFile is made, the device handle associated with the desired pipe should be specified.

Because only one control endpoint is supported, specifying any I/O control code that uses the control pipe causes the driver to use the proper endpoint, regardless of which endpoint (if any) was specified to CreateFile.

すべての I/O コントロール コードの説明については、「 USB Still Image I/O コントロール コード」を参照してください。

カーネル モード USB ドライバーは、パッケージまたはメッセージ プロトコルを実装していません。 読み取り操作では特定のパケットアラインメントは必要ありませんが、読み取り要求が最大パケット サイズ境界にアラインされている場合は、パフォーマンスを向上させることができます。 The maximum packet size can be obtained using the IOCTL_GET_CHANNEL_ALIGN_RQST I/O control code.