私は、OS X システムからプラグが差し込まれたり取り外されたりする USB および firewire デバイスの自動検出を含むプロジェクトに取り組んでいます。特定のデバイスの場合、システムはデバイスが接続されたときにデバイスを認識し (ポートに関係なく)、デバイス固有のバンドルをロードして処理する必要があります。
これを機能させるための鍵は、明らかに各デバイスの一意の識別です。USB デバイスはベンダー ID フィールドと製品 ID フィールドの組み合わせによって識別されることは知っていますが、これは一意の ID ではなく、デバイスの「種類」のみを提供します。同じデバイスが 2 つあり、両方をコンピューターに接続している場合、それらを区別する方法が必要です。おそらくUSB記述子の他のフィールドを使用して、これを行うための一般的で信頼できる方法はありますか?
関連する質問ですが、これは USB シリアル ポートではどのように機能しますか? 同じメーカー/モデルの 2 つの USB シリアル ポートを差し込んだとします。OS X は、/dev ツリーで一意の inode を提供する必要があります。ただし、それらを /dev/usbserial1 および /dev/usbserial2 と呼ぶとします。次に、ポートを取り外してそのうちの 1 つだけを差し込んだ場合、そのポートには以前と同じ名前が付けられますか、それとも /dev/usbserial1 (唯一のポートであるため) が差し込まれるだけですか?
firewire デバイスについても同じ質問ですが、firewire デバイスには 64 ビットの GUID が必要だと思います。この場合、firewire デバイスの識別に GUID を使用することが信頼できるかどうかを検証する人を探しています。言い換えれば、同じメーカーとモデルの 2 台の別々のカメラを接続した場合、それらの GUID が異なると思いますか?
適切なハードウェアでこれらのいくつかをテストできることはわかっていますが、現時点では複数のハードウェアを持っていないため、誰かが上記の質問に対する答えの少なくともいくつかを知っていることを願っています.