다음을 통해 공유


WinUsb_GetOverlappedResult 함수(winusb.h)

WinUsb_GetOverlappedResult 함수는 지정된 파일에서 겹치는 작업의 결과를 검색합니다.

구문

BOOL WinUsb_GetOverlappedResult(
  [in]  WINUSB_INTERFACE_HANDLE InterfaceHandle,
  [in]  LPOVERLAPPED            lpOverlapped,
  [out] LPDWORD                 lpNumberOfBytesTransferred,
  [in]  BOOL                    bWait
);

매개 변수

[in] InterfaceHandle

WinUsb_Initialize 반환되는 디바이스의 첫 번째 인터페이스에 대한 불투명 핸들입니다.

[in] lpOverlapped

겹치는 작업이 시작될 때 지정된 OVERLAPPED 구조체에 대한 포인터입니다.

[out] lpNumberOfBytesTransferred

읽기 또는 쓰기 작업으로 실제로 전송된 바이트 수를 수신하는 변수에 대한 포인터입니다.

[in] bWait

이 매개 변수가 TRUE이면 작업이 완료될 때까지 함수가 반환되지 않습니다. 이 매개 변수가 FALSE 이고 작업이 보류 중인 경우 함수는 FALSE 를 반환하고 GetLastError 함수는 ERROR_IO_INCOMPLETE 반환합니다.

반환 값

함수가 성공하면 반환 값은 0 이외의 숫자입니다. 함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

이 함수는 CreateFile에서 반환된 파일 핸들을 전달하는 대신 한 가지 차이점이 있는 Win32 API 루틴 GetOverlappedResult와 유사합니다. 호출자는 WinUsb_Initialize 반환되는 인터페이스 핸들을 전달합니다. 적절한 핸들이 전달된 경우 호출자는 API 루틴 중 하나를 사용할 수 있습니다. WinUsb_GetOverlappedResult 함수는 인터페이스 핸들에서 파일 핸들을 추출한 다음 GetOverlappedResult를 호출합니다.

WinUsb_GetOverlappedResult 함수에서 보고되는 결과는 지정된 OVERLAPPED 구조체가 제공된 지정된 핸들의 마지막 겹침 작업과 작업의 결과가 보류 중인 결과입니다. 보류 중인 작업은 작업을 시작한 함수가 FALSE를 반환하고 GetLastError 루틴이 ERROR_IO_PENDING 반환할 때 표시됩니다. I/O 작업이 보류 중인 경우 작업을 시작한 함수는 OVERLAPPED 구조체의 hEvent 멤버를 서명되지 않은 상태로 다시 설정합니다. 그런 다음 보류 중인 작업이 완료되면 시스템은 이벤트 개체를 신호 상태로 설정합니다.

호출자는 이벤트 개체가 OVERLAPPED 구조에서 수동으로 다시 설정되도록 지정할 수 있습니다. 자동 재설정 이벤트 개체를 사용하는 경우 겹치는 작업을 시작하고 WinUsb_GetOverlappedResult 호출 사이의 간격으로 다른 대기 작업에서 이벤트 핸들을 지정해서는 안 됩니다. 예를 들어 이벤트 개체는 작업이 완료될 때까지 대기 루틴 중 하나에 지정되기도 합니다. 대기 루틴이 반환되면 시스템은 자동 재설정 이벤트의 상태를 서명되지 않은 상태로 설정하고, bWait 매개 변수가 TRUE로 설정된 WinUsb_GetOverlappedResult 연속적으로 호출하면 함수가 무기한 차단됩니다.

bWait 매개 변수가 TRUE이면 WinUsb_GetOverlappedResult 이벤트 개체가 신호 상태가 될 때까지 대기하여 보류 중인 작업이 완료되었는지 여부를 결정합니다.

OVERLAPPED 구조체의 hEvent 멤버가 NULL인 경우 시스템은 파일 핸들의 상태를 사용하여 작업이 완료되었을 때 신호를 보냅니다. 이 용도로 파일 핸들을 사용하지 마세요. 동일한 파일에서 여러 개의 동시 겹치는 작업이 수행될 때 발생할 수 있는 혼동 때문에 이벤트 개체를 사용하는 것이 좋습니다. 이 경우 어떤 작업으로 인해 개체의 상태가 신호를 받을지 알 수 없습니다.

요구 사항

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

추가 정보

WinUSB

WinUSB 함수

WinUsb_Initialize

_URB_CONTROL_DESCRIPTOR_REQUEST