BindIoCompletionCallback 함수(winbase.h)

스레드 풀이 소유한 I/O 완성 포트를 지정된 파일 핸들과 연결합니다. 이 파일과 관련된 I/O 요청이 완료되면 비 I/O 작업자 스레드가 지정된 콜백 함수를 실행합니다.

구문

BOOL BindIoCompletionCallback(
  [in] HANDLE                          FileHandle,
  [in] LPOVERLAPPED_COMPLETION_ROUTINE Function,
  [in] ULONG                           Flags
);

매개 변수

[in] FileHandle

겹치는 I/O 완료를 위해 열린 파일에 대한 핸들입니다. 이 핸들은 FILE_FLAG_OVERLAPPED 플래그와 함께 CreateFile 함수에서 반환됩니다.

[in] Function

I/O 작업이 완료되면 비 I/O 작업자 스레드에서 실행할 콜백 함수에 대한 포인터입니다. 이 콜백 함수는 TerminateThread 함수를 호출해서는 안됩니다.

완료 루틴에 대한 자세한 내용은 FileIOCompletionRoutine을 참조하세요.

[in] Flags

이 매개 변수는 0이어야 합니다.

반환 값

함수가 성공하면 반환 값이 0이 아닙니다.

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

설명

프로세스가 FileHandle 매개 변수로 지정된 파일에 대해 비동기 요청을 실행하지만 요청이 ERROR_IO_PENDING 이외의 오류 코드로 즉시 반환되는 경우 콜백 함수가 실행되지 않을 수 있습니다.

비동기 I/O 요청을 시작하는 스레드는 요청이 완료되기 전에 종료되지 않는지 확인합니다. 또한 DLL의 함수가 작업자 스레드에 큐에 대기 중인 경우 DLL이 언로드되기 전에 DLL의 함수 실행이 완료되었는지 확인합니다.

스레드 풀은 I/O 완료 포트를 유지 관리합니다. BindIoCompletionCallback을 호출하면 지정된 파일을 스레드 풀의 I/O 완료 포트와 연결합니다. 해당 파일 개체에 대한 비동기 요청은 완료 포트에 게시하여 완료됩니다. 여기서 스레드 풀 작업자 스레드에 의해 선택됩니다. 비동기 프로시저 호출로 완료되는 I/O 요청을 실행해야 하는 콜백의 경우 스레드 풀은 I/O 작업자 풀을 제공합니다. I/O 작업자 스레드는 완료 포트에서 기다리지 않습니다. 완료된 I/O 요청 패킷이 절전 모드를 해제할 수 있도록 경고 가능한 대기 상태에서 절전 모드를 유지합니다. 두 유형의 작업자 스레드 모두 보류 중인 I/O가 있는지 여부를 확인하고 있는 경우 종료되지 않습니다. 자세한 내용은 비동기 프로시저 호출을 참조하세요.

이 함수를 사용하는 애플리케이션을 컴파일하려면 _WIN32_WINNT 0x0500 이상으로 정의합니다. 자세한 내용은 Windows 헤더 사용을 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winbase.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

FileIOCompletionRoutine

프로세스 및 스레드 함수

스레드 풀링