2012-01-20 1 views
2

USB拡張カードまたはSDカードリーダーの存在を検出できるC++プログラムを書いてみたいと思います。これは可能ですか? Linuxでは?LinuxでUSB拡張カードの存在を検出することはできますか?

+1

あなたは 'lsusb'と' udev'プログラムに興味があるかもしれません。私は彼らが実際に行っているシステムコールを正確には知らない。あなたは 'strace'を使って調べることができます。 –

答えて

3

あなたは、正確なベンダーIDおよび/または製品IDを知っていればあなたはこのように、それを検索できます。

for (bus = busses; bus; bus = bus->next) 
for (dev = bus->devices; dev; dev = dev->next) 
    if ((dev->descriptor.idVendor == vendor) && (dev->descriptor.idProduct == product)) 
    return dev; 

libusb tutorial

0

はい、あなたは簡単なdmesgによってidVendorとidProductを得ることができます。そして、知識のある人によって上に示されたそれのための検索条件を入れてください。もっと深く掘り下げたい場合や、Linuxをお持ちの場合は、<kernel_source>/drivers/usb/coreusb.hを見つけることができます。 構造体:struct usb_device{}があります。 さらに詳しく調べたい場合はannounce_device()のような方法でdriver.chub.cをチェックし、dmesgの後にUSBデバイスの詳細を表示する必要があります。それを探検してください。 :)

関連する問題