UMDF 1.x 드라이버에서 USB 인터페이스 작업

경고

UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에 새 기능이 추가되지 않으며 최신 버전의 Windows 10 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다.

보관된 UMDF 1 샘플은 Windows 11 버전 22H2 - 2022년 5월 드라이버 샘플 업데이트에서 찾을 수 있습니다.

자세한 내용은 UMDF를 사용하여 시작 참조하세요.

프레임워크는 각 USB 인터페이스를 프레임워크 USB 인터페이스 개체로 나타냅니다. UMDF 드라이버가 프레임워크 USB 디바이스 개체를 만들 때 프레임워크는 디바이스가 지원하는 각 USB 인터페이스에 대한 프레임워크 USB 인터페이스 개체를 만듭니다.

대부분의 USB 디바이스에는 하나의 인터페이스만 있으며 인터페이스에는 하나의 대체 설정만 있습니다. 이러한 디바이스의 드라이버는 일반적으로 프레임워크의 USB 인터페이스 개체가 정의하는 개체 메서드를 사용할 필요가 없습니다.

UMDF 드라이버가 여러 인터페이스 또는 대체 설정을 제공하는 USB 디바이스를 지원하는 경우 인터페이스 개체 메서드를 사용하면 드라이버에서 다음을 수행할 수 있습니다.

UMDF-USB 인터페이스 정보 가져오기

UMDF 드라이버가 IWDFUsbTargetFactory::CreateUsbTargetDevice 메서드를 호출하여 UMDF-USB 대상 디바이스 개체를 만든 후 드라이버는 IWDFUsbTargetDevice::GetNumInterfaces 메서드를 호출하여 디바이스에서 지원하는 USB 인터페이스 수를 가져올 수 있습니다. 다음으로, 드라이버는 IWDFUsbTargetDevice::RetrieveUsbInterface 메서드를 호출하여 디바이스가 지원하는 USB 인터페이스를 노출하는 IWDFUsbInterface 인터페이스에 대한 포인터를 가져올 수 있습니다. 그런 다음 드라이버는 각 USB 인터페이스 개체가 USB 인터페이스에 대한 정보를 얻기 위해 정의하는 다음 메서드를 호출할 수 있습니다.

IWDFUsbInterface::GetInterfaceNumber
USB 인터페이스 개체와 연결된 USB 인터페이스 번호를 가져옵니다.

IWDFUsbInterface::GetInterfaceDescriptor
USB 인터페이스의 대체 설정 중 하나와 연결된 USB 인터페이스 설명자를 가져옵니다.

IWDFUsbInterface::GetNumEndPoints
USB 인터페이스의 대체 설정 중 하나와 연결된 엔드포인트(파이프라고도 함)의 수를 가져옵니다.

IWDFUsbInterface::GetConfiguredSettingIndex
현재 USB 인터페이스에 대해 선택된 대체 설정을 식별하는 인덱스 값을 가져옵니다.

IWDFUsbInterface::RetrieveUsbPipeObject
지정된 USB 디바이스 인터페이스 및 파이프 인덱스와 연결된 프레임워크 파이프 개체를 노출하는 IWDFUsbTargetPipe 인터페이스에 대한 포인터를 검색합니다.

IWDFUsbInterface::GetWinUsbHandle
USB 인터페이스와 연결된 WinUsb 인터페이스 핸들을 가져옵니다.

UMDF-USB 인터페이스에 대한 대체 설정 선택

UMDF 드라이버는 IWDFUsbInterface::SelectSetting 메서드를 호출하여 디바이스가 지원하는 USB 인터페이스 중 하나에 대한 대체 설정을 선택할 수 있습니다.

디바이스의 대체 설정은 0부터 시작하여 연속적으로 번호가 매겨져야 합니다.

중요 설정을 선택하면 인터페이스 및 엔드포인트에 대한 정보가 무효화됩니다. 따라서 드라이버는 이 정보를 다시 가져와야 합니다. 또한 드라이버는 이전에 검색한 USB 파이프 개체를 삭제하고 다시 만들어야 합니다.