[c++] libusb를 활용한 USB 디바이스 정보 읽기

libusb는 USB 장치와 상호작용하기 위한 C 라이브러리이다. 이 라이브러리를 사용하면 USB 디바이스의 정보를 읽고 제어할 수 있다. 이번에는 libusb를 사용하여 USB 디바이스의 정보를 읽는 방법에 대해 알아보겠다.

libusb 설치

libusb를 사용하기 위해선 먼저 해당 라이브러리를 시스템에 설치해야 한다. 대부분의 리눅스 배포판은 패키지 관리자를 통해 libusb를 쉽게 설치할 수 있다. 예를 들어, Ubuntu에서는 다음과 같이 설치할 수 있다.

sudo apt-get install libusb-1.0-0-dev

Windows에서는 libusb의 드라이버를 설치하고 개발 환경에 맞는 libusb 라이브러리를 다운로드하여 설정해야 한다.

libusb를 사용한 USB 디바이스 조회

libusb를 사용하여 USB 디바이스의 정보를 조회하는 코드를 살펴보자. 아래는 USB 디바이스의 Vendor ID와 Product ID를 사용하여 해당 디바이스를 찾는 코드 예시이다.

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

int main() {
    libusb_device **list;
    libusb_context *context = NULL;
    ssize_t count = 0;

    libusb_init(&context);
    count = libusb_get_device_list(context, &list);

    if (count < 0) {
        printf("Failed to retrieve device list\n");
        return 1;
    }

    for (ssize_t i = 0; i < count; i++) {
        struct libusb_device_descriptor desc;
        libusb_get_device_descriptor(list[i], &desc);
        printf("Vendor ID: %04x, Product ID: %04x\n", desc.idVendor, desc.idProduct);
    }

    libusb_free_device_list(list, 1);
    libusb_exit(context);

    return 0;
}

위 코드는 libusb를 초기화하고 시스템에 연결된 USB 디바이스들의 Vendor ID와 Product ID를 출력하는 간단한 예제이다.

결론

libusb를 사용하여 USB 디바이스의 정보를 읽는 방법에 대해 간단히 살펴보았다. 이를 기반으로 libusb를 통해 USB 디바이스를 조작하고 제어하는 다양한 기능을 구현할 수 있다.

참고 자료