다음을 통해 공유


LPOVERLAPPED_COMPLETION_ROUTINE 콜백 함수(minwinbase.h)

ReadFileExWriteFileEx 함수와 함께 사용되는 애플리케이션 정의 콜백 함수입니다. 비동기 입력 및 출력(I/O) 작업이 완료되거나 취소되고 호출 스레드가 경고 가능한 상태일 때 호출됩니다( SleepEx, MsgWaitForMultipleObjectsEx, WaitForSingleObjectEx 또는 WaitForMultipleObjectsEx 함수를 사용하여 fAlertable 매개 변수가 TRUE로 설정됨).

LPOVERLAPPED_COMPLETION_ROUTINE 형식은 이 콜백 함수에 대한 포인터를 정의합니다. FileIOCompletionRoutine 은 애플리케이션 정의 함수 이름의 자리 표시자입니다.

구문

LPOVERLAPPED_COMPLETION_ROUTINE LpoverlappedCompletionRoutine;

void LpoverlappedCompletionRoutine(
  [in]      DWORD dwErrorCode,
  [in]      DWORD dwNumberOfBytesTransfered,
  [in, out] LPOVERLAPPED lpOverlapped
)
{...}

매개 변수

[in] dwErrorCode

I/O 완료 상태. 이 매개 변수는 시스템 오류 코드 중 하나일 수 있습니다.

[in] dwNumberOfBytesTransfered

전송된 바이트 수 입니다. 오류가 발생하면 이 매개 변수는 0입니다.

[in, out] lpOverlapped

비동기 I/O 함수에서 지정한 OVERLAPPED 구조체에 대한 포인터입니다.

시스템은 완료 루틴이 호출 된 후 OVERLAPPED 구조를 사용하지 않으므로 완료 루틴은 겹친 구조체에서 사용하는 메모리의 할당을 취소할 수 있습니다.

반환 값

없음

설명

작업이 성공적으로 완료되거나 작업이 경고와 함께 완료된 경우 비동기 작업의 반환 값은 0(ERROR_SUCCESS)입니다. I/O 작업이 성공적으로 완료되었는지 확인하려면 dwErrorCode가 0인 검사 GetOverlappedResult를 호출한 다음 GetLastError를 호출합니다. 예를 들어 버퍼가 ReadFileEx 호출에서 모든 데이터를 수신할 만큼 크지 않은 경우 dwErrorCode 가 0으로 설정되고 GetOverlappedResult가 실패하고 GetLastErrorERROR_MORE_DATA 반환합니다.

이 함수에서 반환하면 보류 중인 다른 I/O 완료 루틴을 호출할 수 있습니다. 경고 가능한 스레드의 대기가 WAIT_IO_COMPLETION 반환 코드와 함께 완료되기 전에 모든 대기 완료 루틴이 호출됩니다. 시스템은 대기 완료 루틴을 순서대로 호출할 수 있습니다. I/O 함수가 완료된 순서대로 호출될 수도 있고 호출되지 않을 수도 있습니다.

시스템은 완료 루틴을 호출할 때마다 애플리케이션의 스택 중 일부를 사용합니다. 완료 루틴이 추가 비동기 I/O를 수행하고 경고 가능한 대기를 수행하는 경우 스택이 증가할 수 있습니다.

자세한 내용은 비동기 프로시저 호출을 참조하세요.

예제

예제 코드는 완료 루틴을 사용하여 명명된 파이프 서버를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 minwinbase.h(Windows.h 포함)

추가 정보

BindIoCompletionCallback

파일 관리 함수

OVERLAPPED

ReadFileEx

SleepEx

동기 및 비동기 I/O

WaitForMultipleObjectsEx

WaitForSingleObjectEx

WriteFileEx