USB システム・デバイス・ドライバー・プログラミング・インターフェース

USB プロトコル・ドライバ(USBD)は、open( )close( )、ioctl( )などの標準 UNIX I/O 関数をサポートしています。read()write()poll() 関数はサポートしていません。

標準の UNIX インターフェースに加えて、ドライバーは呼び出しベクトルを使用して直接インターフェースを提供します。 コール・ベクトルは、USB クライアント・ドライバーが USBD と対話するために使用します。 呼び出しベクトルは、以下のマクロを使用して開始されます。
マクロ 説明
usbdCloseDevice クライアント・ドライバーは、この関数を呼び出して、オープンしている USB 論理デバイスをクローズします。
usbdResetDevice クライアント・ドライバーはこの関数を呼び出して、オープン USB 論理デバイスをリセットします。
usbdPipeConnect クライアント・ドライバーは、パイプで入出力を開始する前に、この関数を呼び出して、パイプのリソースを割り振り、初期化します。
usbdPipeDisconnect クライアント・ドライバーは、この関数を呼び出して装置をクローズします。
usbdPipeIO クライアント・ドライバーは、入出力を実行するときにこの関数を呼び出します。 この機能は、列挙、トポロジー・ディスカバリー、およびデバイス構成時に USB システム・ドライバーによって内部的に呼び出されることもあります。
usbdPipeIOWait 呼び出し元が未解決の入出力を待機すると、クライアント・ドライバーと USB システム・ドライバーがこの機能を呼び出します。
usbdPipeStatus クライアント・ドライバーはこの関数を呼び出して、パイプの状況を取得します。 パイプの状況は、パイプが停止しているか、パイプがアクティブであるかのいずれかです。
usbdPipeAbort クライアント・ドライバーはこの関数を呼び出して、以前に開始された入出力の一部を停止します。 割り込み環境から呼び出された場合、特定の入出力を停止する要求が 構成プロシージャー 関数に送信され、制御は即時に呼び出し元に戻されます。
usbdPipeClear クライアント・ドライバーはこの関数を呼び出して、以前に停止したパイプをホスト・パースペクティブから活動化します。 このサービスは、デバイスの観点からエンドポイントの停止をクリアするために CLEAR FEATURE コマンドを発行した後にのみ開始できます。
usbdMapMemory クライアント・ドライバーはこの機能を使用してホスト・メモリーをマップし、ホスト・コントローラーがバス・マスター DMA を使用してメモリーの読み取りまたは書き込みを行えるようにします。 マップするメモリーがユーザー・アドレス・スペースにあるかどうかを示す USBDMAP_USER (SBDMAP_USER) フラグを指定する必要があります。
usbdUnmapMemory クライアント・ドライバーはこの関数を使用して、以前にマップされたメモリーをマップ解除します。 この関数を呼び出す前に、メモリー・ブロックを参照するすべての入出力を完了する必要があります。 この関数は、プロセス環境からのみ呼び出すことができます。
usbdGetDescriptors クライアント・ドライバーはこの関数を使用して、装置から記述子のリストを読み取ります。 記述子のリストを含むバッファーへのポインターが戻されます。
usbdGetDevselector 再接続後、切断する前に、デバイスの HCDEVNO 値と アドレス 値が前の値から変更される可能性があります。 これは、 クラスサブクラスプロトコル、および devtype の値が同一の複数の USB 論理デバイスが使用されている場合に発生する可能性があります。 この関数は、プロセス環境からのみ呼び出すことができます。
usbdGetFrame この関数は、装置が接続されているホスト・コントローラーから現行フレーム番号を取得するために、クライアント・ドライバーによって呼び出されます。 この関数は、等分パイプにのみ使用されます。
usbdSetInterface クライアント・ドライバーは、インターフェースを代替設定に変更するときにこの関数を呼び出します。