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 | クライアント・ドライバーは、インターフェースを代替設定に変更するときにこの関数を呼び出します。 |