GetOverlappedResult 함수(ioapiset.h)
지정된 파일, 명명된 파이프 또는 통신 디바이스에서 겹치는 작업의 결과를 검색합니다. 시간 제한 간격을 지정하거나 경고 가능한 스레드에서 대기하려면 GetOverlappedResultEx를 사용합니다.
구문
BOOL GetOverlappedResult(
[in] HANDLE hFile,
[in] LPOVERLAPPED lpOverlapped,
[out] LPDWORD lpNumberOfBytesTransferred,
[in] BOOL bWait
);
매개 변수
[in] hFile
파일, 명명된 파이프 또는 통신 디바이스에 대한 핸들입니다. 겹치는 작업이 다음 함수에 대한 호출로 시작되었을 때 지정한 것과 동일한 핸들입니다.
- ReadFile
- WriteFile
- ConnectNamedPipe
- TransactNamedPipe
- DeviceIoControl
- WaitCommEvent
- ReadDirectoryChangesW
- LockFileEx
[in] lpOverlapped
겹치는 작업이 시작될 때 지정된 OVERLAPPED 구조체에 대한 포인터입니다.
[out] lpNumberOfBytesTransferred
읽기 또는 쓰기 작업으로 실제로 전송된 바이트 수를 수신하는 변수에 대한 포인터입니다. TransactNamedPipe 작업의 경우 파이프에서 읽은 바이트 수입니다. DeviceIoControl 작업의 경우 디바이스 드라이버에서 반환하는 출력 데이터의 바이트 수입니다. ConnectNamedPipe 또는 WaitCommEvent 작업의 경우 이 값은 정의되지 않습니다.
[in] bWait
이 매개 변수가 TRUE이고 lpOverlapped 구조체의 내부 멤버가 STATUS_PENDING 경우 작업이 완료될 때까지 함수가 반환되지 않습니다. 이 매개 변수가 FALSE 이고 작업이 보류 중인 경우 함수는 FALSE 를 반환하고 GetLastError 함수는 ERROR_IO_INCOMPLETE 반환합니다.
반환 값
함수가 성공하면 반환 값이 0이 아닙니다.
함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
설명
GetOverlappedResult 함수에서 보고된 결과는 지정된 OVERLAPPED 구조가 제공된 지정된 핸들의 마지막 겹침 작업과 작업의 결과가 보류 중인 결과입니다. 작업을 시작한 함수가 FALSE를 반환하고 GetLastError 함수가 ERROR_IO_PENDING 반환할 때 보류 중인 작업이 표시됩니다. I/O 작업이 보류 중인 경우 작업을 시작한 함수는 OVERLAPPED 구조체의 hEvent 멤버를 서명되지 않은 상태로 다시 설정합니다. 그런 다음 보류 중인 작업이 완료되면 시스템에서 이벤트 개체를 신호 상태로 설정합니다.
bWait 매개 변수가 TRUE이면 GetOverlappedResult는 이벤트 개체가 신호 상태가 될 때까지 대기하여 보류 중인 작업이 완료되었는지 여부를 결정합니다.
OVERLAPPED 구조체의 hEvent 멤버가 NULL인 경우 시스템은 hFile 핸들의 상태를 사용하여 작업이 완료되었을 때 신호를 보냅니다. 이 목적을 위해 파일, 명명된 파이프 또는 통신 디바이스 핸들을 사용하는 것은 권장되지 않습니다. 동일한 파일, 명명된 파이프 또는 통신 디바이스에서 여러 동시 겹치는 작업을 수행할 때 발생할 수 있는 혼동 때문에 이벤트 개체를 사용하는 것이 안전합니다. 이 상황에서는 어떤 연산으로 인해 개체의 상태가 신호를 받을지 알 수 없습니다.
예제
GetOverlappedResult를 사용하는 예제는 파일의 끝에 대한 테스트를 참조하세요.
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | ioapiset.h(Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2의 Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |
참고 항목
CancelIo, CreateEvent, GetOverlappedResultEx, OVERLAPPED, 겹치는 입력 및 출력, 동기화 함수