FltCancelFileOpen 함수(fltkernel.h)
미니필터 드라이버는 FltCancelFileOpen 루틴을 사용하여 새로 열거나 만든 파일을 닫을 수 있습니다.
구문
VOID FLTAPI FltCancelFileOpen(
[in] PFLT_INSTANCE Instance,
[in] PFILE_OBJECT FileObject
);
매개 변수
[in] Instance
호출자에 대한 불투명 instance 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.
[in] FileObject
파일에 대한 파일 개체 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.
반환 값
없음
설명
미니필터 드라이버가 파일 시스템이 이미 STATUS_SUCCESS 같은 성공 NTSTATUS 값으로 작업을 완료한 후 파일 열기 또는 파일 만들기(IRP_MJ_CREATE) 작업이 실패해야 한다고 판단하는 경우 미니필터 드라이버는 생성 후 콜백 루틴에서 FltCancelFileOpen 을 호출하여 파일을 닫을 수 있습니다.
FltCancelFileOpen은 파일에 대한 수정을 실행 취소하지 않습니다. 예를 들어 FltCancelFileOpen 은 새로 만든 파일을 삭제하거나 덮어쓰거나 이전 상태로 대체된 파일을 복원하지 않습니다.
파일에 대한 핸들을 만들기 전에 FltCancelFileOpen 을 호출해야 합니다. 호출자는 FileObject 매개 변수가 가리키는 FILE_OBJECT 구조의 Flags 멤버를 검사 수 있습니다. FO_HANDLE_CREATED 플래그가 설정된 경우 파일에 대해 하나 이상의 핸들이 만들어졌으므로 FltCancelFileOpen을 호출하는 것이 안전하지 않습니다.
FltCancelFileOpen은FileObject가 가리키는 파일 개체의 Flags 멤버에 FO_FILE_OPEN_CANCELLED 플래그를 설정합니다. 이 플래그는 만들기 작업이 취소되었으며 이 파일 개체에 대해 닫기(IRP_MJ_CLOSE) 요청이 실행됨을 나타냅니다.
만들기 작업이 취소되면 다시 실행할 수 없습니다. 자세한 내용은 FltReissueSynchronousIo를 참조하세요.
FltCancelFileOpen은 미니필터 드라이버의 생성 후 콜백 루틴에서만 호출할 수 있습니다. 다른 유형의 I/O 작업에 대해 PFLT_POST_OPERATION_CALLBACK(사후 콜백) 루틴에서 FltCancelFileOpen을 호출하거나 PFLT_PRE_OPERATION_CALLBACK(사전 운용 콜백) 루틴에서 호출하는 것은 프로그래밍 오류입니다.
FltCancelFileOpen의 호출자는 IRQL PASSIVE_LEVEL 실행 중이어야 합니다. 그러나 만들기 후 콜백 루틴은 IRP_MJ_CREATE 요청을 시작한 스레드의 컨텍스트에서 IRQL PASSIVE_LEVEL 호출되도록 보장되므로 미니필터 드라이버가 사후 생성 콜백 루틴에서 이 루틴을 호출하는 것이 안전합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | fltkernel.h(Fltkernel.h 포함) |
라이브러리 | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | PASSIVE_LEVEL(설명 섹션 참조) |