다음을 통해 공유


WinUsb_Initialize 함수(winusb.h)

WinUsb_Initialize 함수는 파일 핸들로 지정된 디바이스에 대한 WinUSB 핸들을 만듭니다.

구문

BOOL WinUsb_Initialize(
  [in]  HANDLE                   DeviceHandle,
  [out] PWINUSB_INTERFACE_HANDLE InterfaceHandle
);

매개 변수

[in] DeviceHandle

CreateFile이 반환한 디바이스에 대한 핸들입니다. WinUSB는 겹치는 I/O를 사용하므로 WinUsb_Initialize 제대로 작동하는 데 필요한 특성을 갖도록 DeviceHandle에 대한 CreateFile 호출의 dwFlagsAndAttributes 매개 변수에 FILE_FLAG_OVERLAPPED 지정해야 합니다.

[out] InterfaceHandle

디바이스의 첫 번째(기본) 인터페이스에 대한 불투명 핸들을 받습니다. 이 핸들은 기본 인터페이스에서 작업을 수행하는 다른 WinUSB 루틴에 필요합니다. 핸들을 해제하려면 WinUSB_Free 함수를 호출합니다.

반환 값

WinUsb_Initialize 작업이 성공하면 TRUE 를 반환합니다. 그렇지 않으면 이 루틴은 FALSE를 반환하고 호출자는 GetLastError를 호출하여 기록된 오류를 검색할 수 있습니다.

GetLastError 는 다음 오류 코드를 반환할 수 있습니다.

반환 코드 설명
ERROR_INVALID_HANDLE
호출자가 DeviceHandle 매개 변수에서 NULL 또는 잘못된 핸들을 전달했습니다. FILE_FLAG_OVERLAPPED 파일 핸들에 설정되지 않았습니다.
ERROR_NOT_ENOUGH_MEMORY
작업을 수행할 메모리가 부족했음을 나타냅니다.
ERROR_BAD_DEVICE
디바이스에 대한 기본 인터페이스 설명자를 찾을 수 없음을 나타냅니다.

설명

WinUsb_Initialize 호출되면 인터페이스의 정책 설정이 기본값으로 다시 설정됩니다.

WinUsb_Initialize 호출은 기본 USB 스택에서 다양한 설명자를 쿼리하고 검색된 설명자 데이터를 저장하기에 충분한 메모리를 할당합니다.

WinUsb_Initialize 먼저 디바이스 설명자를 검색한 다음 연결된 구성 설명자를 가져옵니다. 구성 설명자에서 호출은 연결된 인터페이스 설명자를 파생시키고 배열에 저장합니다. 배열의 인터페이스는 0부터 시작하는 인덱스로 식별됩니다. 인덱스 값 0은 첫 번째 인터페이스(기본 인터페이스)를 나타내고, 값 1은 두 번째 연결된 인터페이스 등을 나타냅니다. WinUsb_Initialize 엔드포인트 설명자에 대한 기본 인터페이스 설명자를 구문 분석하고 연결된 파이프 또는 상태별 데이터와 같은 정보를 캐시합니다. InterfaceHandle 매개 변수에서 받은 핸들은 배열의 첫 번째 인터페이스에 할당된 메모리 블록에 대한 포인터입니다.

애플리케이션이 디바이스에서 다른 인터페이스를 사용하려는 경우 WinUsb_GetAssociatedInterface 호출하고, 인터페이스의 인덱스를 지정하고, 지정된 인터페이스에 할당된 메모리 블록에 대한 핸들을 검색해야 합니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 winusb.h(Winusb.h 포함)
라이브러리 Winusb.lib
DLL Winusb.dll

추가 정보

WinUSB

WinUSB 함수

WinUSB_Free