2012-01-20 2 views
2

USB 확장 카드 또는 SD 카드 판독기의 존재 여부를 감지 할 수있는 C++ 프로그램을 작성하고 싶습니다. 플러그 인이 필요하지 않습니다. 이것이 가능한가? 리눅스에서?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을 . 그리고 지식을 가진 사람이 위에 표시된 검색 조건을 설정하십시오. 더 깊이 파고 싶으면 리눅스가있는 경우 <kernel_source>/drivers/usb/coreusb.h을 탐색 할 수 있습니다. 구조가 있습니다 : struct usb_device{}. 아직 더 탐구하고 싶다면 dmesg 다음에 USB 장치 세부 사항을 인쇄하는 announce_device()과 같은 방법으로 driver.chub.c을 확인해야합니다. 그것을 위해 탐험해라. :)

관련 문제