FltOplockBreakToNoneEx 함수(fltkernel.h)

FltOplockBreakToNoneEx 루틴은 oplock 키와 관계없이 모든 기회 잠금(oplock)을 즉시 중단합니다.

구문

FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockBreakToNoneEx(
  [in]           POPLOCK                                 Oplock,
  [in]           PFLT_CALLBACK_DATA                      CallbackData,
  [in]           ULONG                                   Flags,
  [in, optional] PVOID                                   Context,
  [in, optional] PFLTOPLOCK_WAIT_COMPLETE_ROUTINE        WaitCompletionRoutine,
  [in, optional] PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE PrePostCallbackDataRoutine
);

매개 변수

[in] Oplock

파일에 대한 불투명 불투명 포인터입니다. 이 포인터는 FltInitializeOplock에 대한 이전 호출에 의해 초기화되어야 합니다.

[in] CallbackData

I/O 작업에 대한 콜백 데이터(FLT_CALLBACK_DATA) 구조체에 대한 포인터입니다.

[in] Flags

연결된 파일 I/O 작업에 대한 비트 마스크입니다. 미니필터 드라이버는 비트를 설정하여 FltOplockBreakToNoneEx의 동작을 지정합니다. Flags 매개 변수에는 다음과 같은 옵션이 있습니다.

OPLOCK_FLAG_COMPLETE_IF_OPLOCKED(0x00000001)

oplock 중단을 발생시킨 작업을 차단하거나 보류하지 않고 oplock 중단이 계속 진행되도록 허용합니다. 일반적으로 이 플래그는 CallbackData 매개 변수가 가리키는 콜백 데이터로 표현되는 I/O 작업이 IRP_MJ_CREATE 작업인 경우에만 사용됩니다.

[in, optional] Context

WaitCompletionRoutinePrePostCallbackDataRoutine 매개 변수가 가리키는 콜백 루틴에 전달될 호출자 정의 컨텍스트 정보에 대한 포인터입니다.

[in, optional] WaitCompletionRoutine

호출자가 제공한 콜백 루틴에 대한 포인터입니다. oplock 중단이 진행 중인 경우 중단이 완료되면 이 루틴이 호출됩니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다. NULL인 경우 호출자는 oplock 중단이 완료될 때까지 대기 상태로 전환됩니다.

이 루틴은 다음과 같이 선언됩니다.

typedef VOID
(*PFLTOPLOCK_WAIT_COMPLETE_ROUTINE) (
    __in PFLT_CALLBACK_DATA CallbackData,
 __in_opt PVOID Context
      );

이 루틴에는 다음과 같은 매개 변수가 있습니다.

CallbackData

I/O 작업의 콜백 데이터 구조에 대한 포인터입니다.

Context

Context 매개 변수에서 FltOplockBreakToNoneEx에 전달된 컨텍스트 정보 포인터입니다.

[in, optional] PrePostCallbackDataRoutine

I/O 작업이 보류될 경우 호출자가 제공한 콜백 루틴에 대한 포인터입니다. oplock 패키지가 IRP를 보류하기 전에 루틴이 호출됩니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

이 루틴은 다음과 같이 선언됩니다.

typedef VOID
(*PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE) (
    __in PFLT_CALLBACK_DATA CallbackData,
 __in_opt PVOID Context
      );

이 루틴에는 다음과 같은 매개 변수가 있습니다.

CallbackData

I/O 작업의 콜백 데이터 구조에 대한 포인터입니다.

Context

Context 매개 변수에서 FltOplockBreakToNoneEx에 전달된 컨텍스트 정보 포인터입니다.

반환 값

FltOplockBreakToNoneEx 는 다음 FLT_PREOP_CALLBACK_STATUS 코드 중 하나를 반환합니다.

반환 코드 설명
FLT_PREOP_COMPLETE
FltOplockBreakToNoneEx 에서 풀 할당 오류가 발생하거나 FsRtlOplockBreakToNoneEx 함수에 대한 호출에서 오류가 반환되었습니다. FltOplockBreakToNoneExIO_STATUS_BLOCK 구조체의 Status 멤버에 오류 코드를 설정합니다. IO_STATUS_BLOCK 구조체는 FLT_CALLBACK_DATA 콜백 데이터 구조의 IoStatus 멤버에 지정됩니다. CallbackData 매개 변수는 이 FLT_CALLBACK_DATA 가리킵니다.
FLT_PREOP_PENDING
Oplock 중단이 시작되어 필터 관리자가 I/O 작업을 작업 큐에 게시했습니다. I/O 작업은 CallbackData 매개 변수가 가리키는 콜백 데이터로 표시됩니다.
FLT_PREOP_SUCCESS_WITH_CALLBACK
CallbackData 매개 변수가 가리키는 콜백 데이터가 보류되지 않았으며 I/O 작업이 즉시 수행되었습니다. 호출자가 Flags 매개 변수에서 OPLOCK_FLAG_COMPLETE_IF_OPLOCKED 지정한 경우 I/O 작업이 보류되지 않았더라도 oplock 중단이 실제로 진행 중일 수 있습니다. 이것이 상황인지 여부를 확인하려면 호출자는 IO_STATUS_BLOCK 구조의 Status 멤버에서 STATUS_OPLOCK_BREAK_IN_PROGRESS 대해 검사 합니다. IO_STATUS_BLOCK 구조체는 FLT_CALLBACK_DATA 콜백 데이터 구조의 IoStatus 멤버에 지정됩니다.

설명

기회 잠금에 대한 자세한 내용은 Microsoft Windows SDK 설명서를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 FltOplockBreakToNoneEx 루틴은 Windows 7부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 fltkernel.h(Fltkernel.h 포함)
라이브러리 FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

추가 정보

FLT_CALLBACK_DATA

FltInitializeOplock

FsRtlOplockBreakToNoneEx

IO_STATUS_BLOCK