CancelIoEx 함수

지정된 파일 핸들에 대해 처리 중인 I/O 작업을 표시합니다. 이 함수는 I/O 작업을 만든 스레드에 관계없이 현재 프로세스의 I/O 작업만 취소합니다.

구문

BOOL WINAPI CancelIoEx(
  _In_     HANDLE       hFile,
  _In_opt_ LPOVERLAPPED lpOverlapped
);

매개 변수

hFile [in]

파일에 대한 핸들입니다.

lpOverlapped [in, optional]

비동기 I/O에 사용되는 데이터를 포함하는 OVERLAPPED 데이터 구조체에 대한 포인터입니다.

이 매개 변수가 NULL이면 hFile 매개 변수에 대한 모든 I/O 요청이 취소됩니다.

이 매개 변수가 NULL이 아니면 지정된 lpOverlapped 겹치는 구조체가 있는 파일에 대해 발급된 특정 I/O 요청만 취소된 것으로 표시됩니다. 즉, CancelIo 함수가 파일 핸들에서 처리 중인 요청을 모두 취소하는 동안 하나 이상의 요청을 취소할 수 있습니다.

반환 값

함수가 성공하면 반환 값이 0이 아닙니다. 지정된 파일 핸들에 대해 호출 프로세스에서 발급한 보류 중인 모든 I/O 작업에 대한 취소 작업이 성공적으로 요청되었습니다. 애플리케이션은 완료될 때까지 취소된 I/O 작업과 연결된 OVERLAPPED 구조체를 해제하거나 다시 사용해서는 안 됩니다. 스레드는 GetOverlappedResult 함수를 사용하여 I/O 작업 자체가 완료된 시기를 확인할 수 있습니다.

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

이 함수에서 취소 요청을 찾을 수 없는 경우 반환 값은 0이고 GetLastErrorERROR_NOT_FOUND를 반환합니다.

설명

CancelIoEx 함수를 사용하면 호출 스레드 이외의 스레드에서 요청을 취소할 수 있습니다. CancelIo 함수는 CancelIo 함수를 호출한 스레드와 동일한 스레드의 요청만 취소합니다. CancelIoEx는 핸들에서 처리 중인 I/O만 취소하고 핸들의 상태는 변경하지 않습니다. 즉, 작업이 성공적으로 완료되었는지 취소되었는지 알 수 없으므로 핸들의 상태에 의존할 수 없습니다.

지정된 파일 핸들에 대해 보류 중인 I/O 작업이 있는 경우 CancelIoEx 함수는 해당 작업을 취소하도록 표시합니다. 대부분의 작업 유형은 즉시 취소할 수 있습니다. 실제로 취소되고 호출자가 알림을 받기 전에 완료될 수 있는 작업 유형도 있습니다. CancelIoEx 함수는 취소된 모든 작업이 완료될 때까지 대기하지 않습니다.

파일 핸들이 완료 포트와 연결된 경우 동기 작업이 성공적으로 취소되면 I/O 완료 패킷이 포트에 대기하지 않습니다. 아직 보류 중인 비동기 작업의 경우에는 취소 작업이 I/O 완료 패킷을 큐에 대기시킵니다.

취소 중인 작업은 세 가지 상태 중 하나로 완료됩니다. 완료 상태를 검사하여 확인해야 합니다. 세 가지 상태는 다음과 같습니다.

  • 작업이 정상적으로 완료되었습니다. 취소 요청이 작업 취소 시점에 제출되지 않았을 수 있으므로 작업이 취소된 경우에도 이 상태가 발생할 수 있습니다.
  • 작업이 취소되었습니다. GetLastError 함수가 ERROR_OPERATION_ABORTED를 반환합니다.
  • 다른 오류가 발생하여 작업이 실패했습니다. GetLastError 함수는 관련 오류 코드를 반환합니다.

Windows 8 및 Windows Server 2012에서 이 함수는 다음 기술을 통해 지원됩니다.

기술 지원됨
SMB(서버 메시지 블록) 3.0 프로토콜
Yes
SMB 3.0 TFO(투명 장애 조치(failover))
Yes
SO(스케일 아웃 파일 공유)를 사용하는 SMB 3.0
Yes
CsvFS(클러스터 공유 볼륨 파일 시스템)
Yes
ReFS(Resilient File System)
Yes

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows Vista [데스크톱 앱 | UWP 앱]
지원되는 최소 서버
Windows Server 2008 [데스크톱 앱 | UWP 앱]
헤더
IoAPI.h(Windows.h 포함);
Windows Server 2008 R2, Windows 7, Windows Server 2008 및 Windows Vista의 WinBase.h(Windows.h 포함)
라이브러리
Kernel32.lib
DLL
Kernel32.dll

참고 항목

CancelIo

CancelSynchronousIo

보류 중인 I/O 작업 취소

파일 관리 함수

동기 및 비동기 I/O