FltProcessFileLock 함수(fltkernel.h)

FltProcessFileLock 루틴은 파일 잠금 작업을 처리하고 완료합니다.

구문

FLT_PREOP_CALLBACK_STATUS FLTAPI FltProcessFileLock(
  [in]           PFILE_LOCK         FileLock,
  [in]           PFLT_CALLBACK_DATA CallbackData,
  [in, optional] PVOID              Context
);

매개 변수

[in] FileLock

파일의 FILE_LOCK 구조체에 대한 포인터입니다. 이 구조체는 FltAllocateFileLock 또는 FltInitializeFileLock에 대한 이전 호출에 의해 초기화되어야 합니다.

[in] CallbackData

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

[in, optional] Context

작업을 완료할 때 사용할 컨텍스트 포인터입니다. 이 컨텍스트 포인터는 이전 FltAllocateFileLock 호출에서 미니필터 드라이버가 등록한 CompleteLockCallbackDataRoutineUnlockRoutine 콜백 루틴에 전달됩니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

반환 값

FltProcessFileLock 은 다음 중 하나를 반환합니다.

반환 코드 설명
FLT_PREOP_COMPLETE 필터 관리자는 이제 완료할 수 있는 CallbackData를 사용하여 수행됩니다.
FLT_PREOP_DISALLOW_FASTIO CallbackData는 빠른 I/O 작업을 나타내며 스택의 미니필터 드라이버는 이 작업에 사용할 빠른 I/O를 허용하지 않았습니다. 필터 관리자는 작업을 허용하지 않는 미니필터 드라이버에 작업을 보내지 않습니다. 이 경우 필터 관리자는 빠른 I/O 작업을 허용하지 않는 미니필터 드라이버 위에 있는 미니필터 드라이버의 사후 콜백 루틴(및 CompleteLockCallbackDataRoutine 콜백)만 호출합니다.
FLT_PREOP_PENDING 잠금 작업이 보류되었습니다.

설명

FltProcessFileLock 은 파일 잠금(IRP_MJ_LOCK_CONTROL) 작업을 처리합니다. 잠금 작업은 빠른 I/O 또는 IRP 기반 작업일 수 있습니다.

잠금 해제 작업의 경우 필터 관리자는 FltAllocateFileLock에 대한 이전 호출에서 호출자가 FILE_LOCK 구조에 등록한 UnlockRoutine 콜백 루틴을 호출합니다.

잠금 작업이 완료되면 Filter Manager는 FltAllocateFileLock에 대한 이전 호출에서 호출자가 FILE_LOCK 구조에 등록한 CompleteLockCallbackDataRoutine(PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE) 완료 콜백 루틴을 호출합니다.

FltProcessFileLock에 전달된 CallbackData 매개 변수가 빠른 I/O 작업을 나타내는 경우 FltAllocateFileLock 루틴의 CompleteLockCallbackDataRoutine 매개 변수에 지정된 콜백이 호출되지 않습니다. CallbackData의 I/O 작업이 IRP이고 CompleteLockCallbackDataRoutine이 NULL이 아닌 경우에만 콜백 루틴이 호출됩니다.

CallbackData가 빠른 I/O 작업을 나타내는지 여부를 확인하려면 FLT_IS_FASTIO_OPERATION 매크로를 사용합니다.

새 파일 잠금 구조를 할당하고 초기화하려면 FltAllocateFileLock을 호출합니다.

초기화된 FILE_LOCK 구조를 해제하려면 FltFreeFileLock을 호출합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP SP2
지원되는 최소 서버 Windows Server 2003 SP1
대상 플랫폼 유니버설
헤더 fltkernel.h(Fltkernel.h 포함)
라이브러리 FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

추가 정보

FILE_LOCK

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FltAllocateFileLock

FltCheckLockForReadAccess

FltCheckLockForWriteAccess

FltFreeFileLock

FltInitializeFileLock

FltUninitializeFileLock

FsRtlProcessFileLock

IRP_MJ_LOCK_CONTROL

PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE

[PUNLOCK_ROUTINE] (.. /ntifs/nc-ntifs-punlock_routine.md