[c++] libusb를 사용한 USB 디바이스 모니터링

libusb는 USB 디바이스와 상호 작용하기 위한 C 라이브러리이다. 이 라이브러리를 사용하여 USB 디바이스를 검색하고 모니터링하는 간단한 예제를 살펴보겠다.

libusb 설치

libusb를 사용하기 위해서는 먼저 시스템에 libusb 라이브러리를 설치해야 한다. 대부분의 리눅스 배포판은 기본 레포지토리에서 libusb를 제공하므로 패키지 관리자를 통해 간단하게 설치할 수 있다. 윈도우나 macOS에서는 libusb의 공식 웹사이트에서 바이너리 또는 소스 코드를 다운로드하여 직접 빌드할 수 있다.

libusb를 사용한 USB 디바이스 모니터링 예제

아래는 libusb를 사용하여 USB 디바이스를 검색하고 디바이스 정보를 출력하는 간단한 C++ 예제이다.

#include <libusb-1.0/libusb.h>
#include <iostream>

int main() {
    libusb_context *ctx = NULL;
    libusb_init(&ctx);

    libusb_device **devs;
    ssize_t count = libusb_get_device_list(ctx, &devs);
    if (count < 0) {
        std::cerr << "Failed to get device list" << std::endl;
        return 1;
    }

    for (ssize_t i = 0; i < count; i++) {
        libusb_device_descriptor desc;
        libusb_get_device_descriptor(devs[i], &desc);
        std::cout << "Vendor ID: " << std::hex << desc.idVendor << ", Product ID: " << desc.idProduct << std::dec << std::endl;
    }

    libusb_free_device_list(devs, 1);
    libusb_exit(ctx);
    return 0;
}

이 예제는 먼저 libusb를 초기화한 다음, 시스템에 연결된 모든 USB 디바이스의 목록을 가져와 각 디바이스의 벤더 ID와 제품 ID를 출력한다.

결론

libusb를 사용하여 USB 디바이스를 모니터링하는 것은 매우 간단하다. 이를 통해 시스템에서 연결된 USB 디바이스의 정보를 읽거나 상호 작용할 수 있는 기초를 마련할 수 있다.

참고 자료