다음을 통해 공유


FltOplockFsctrlEx 함수(fltkernel.h)

FltOplockFsctrlEx 루틴은 미니필터 드라이버를 대신하여 다양한 기회 잠금(oplock) 작업을 수행합니다.

구문

FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockFsctrlEx(
  [in] POPLOCK            Oplock,
  [in] PFLT_CALLBACK_DATA CallbackData,
  [in] ULONG              OpenCount,
  [in] ULONG              Flags
);

매개 변수

[in] Oplock

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

[in] CallbackData

I/O 작업에 대한 FLT_CALLBACK_DATA 구조체에 대한 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.

[in] OpenCount

단독 oplock이 요청되는 경우 파일에 대한 사용자 핸들 수입니다. 수준 2, R 또는 RH oplock 요청에 대해 0이 아닌 값을 설정하면 파일에 바이트 범위 잠금이 있음을 나타냅니다. oplock 형식에 대한 자세한 내용은 Oplock 개요를 참조하세요.

[in] Flags

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

의미
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH(0x00000001) 파일 시스템은 현재 열려 있는 핸들의 모든 oplock 키가 일치하는지 확인했습니다. 이 플래그를 지정하면 파일에 열려 있는 핸들이 둘 이상 있는 경우 oplock 패키지가 수준 RW 또는 RWH의 oplock을 부여할 수 있습니다. oplock 형식에 대한 자세한 내용은 Oplock 개요를 참조하세요.

반환 값

FltOplockFsctrlEx 는 일부 FSCTL 작업에 대한 FLT_PREOP_PENDING 반환합니다. 자세한 내용은 다음 주의 섹션에 나열된 FSCTL 코드에 대한 참조 페이지를 참조하세요. 그렇지 않으면 FltOplockFsctrlEx 는 FLT_PREOP_COMPLETE 반환합니다.

설명

미니필터 드라이버는 FltOplockFsctrlEx 를 호출하여 만들기 작업 또는 파일 시스템 컨트롤 I/O 작업에 대한 다양한 기회 잠금 작업을 수행합니다.

CallbackData 매개 변수가 가리키는 FLT_CALLBACK_DATA 구조체는 IRP 기반 IRP_MJ_FILE_SYSTEM_CONTROL 또는 IRP_MJ_CREATE 작업을 나타내야 합니다.

작업이 IRP_MJ_FILE_SYSTEM_CONTROL 작업인 경우 FltOplockFsctrlEx 를 다음 FSCTL 코드와 함께 사용할 수 있습니다.

FSCTL 코드는 작업에 대한 FLT_PARAMETERS 구조체의 FsControlCode 멤버에 설정됩니다. FsControlCode 및 기타 IRP_MJ_FILE_SYSTEM_CONTROL 매개 변수에 대한 자세한 내용은 IRP_MJ_FILE_SYSTEM_CONTROL 대한 FLT_PARAMETERS 참조하세요.

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

작업이 IRP_MJ_CREATE 요청인 경우 다음 조건이 모두 충족되는 경우 FltOplockFsctrl 을 사용하여 보류 중인 필터 기회 잠금을 요청할 수 있습니다.

  • OpenCount 매개 변수의 값은 1이어야 합니다.
  • IRP_MJ_CREATE 요청에 대한 DesiredAccess 매개 변수 값이 FILE_READ_ATTRIBUTES. 이 매개 변수는 작업에 대한 FLT_PARAMETERS 구조체의 SecurityContext 멤버에서 설정됩니다. 자세한 내용은 IRP_MJ_CREATE 대한 FLT_PARAMETERS 참조하세요.
  • IRP_MJ_CREATE 작업에 대한 ShareAccess 매개 변수의 값은 FILE_SHARE_READ, FILE_SHARE_WRITE 또는 FILE_SHARE_DELETE. 이 매개 변수는 작업에 대한 FLT_PARAMETERS 구조체의 ShareAccess 멤버에서 설정됩니다. 자세한 내용은 IRP_MJ_CREATE 대한 FLT_PARAMETERS 참조하세요.

이 함수를 호출하는 필터 및 파일 시스템은 호출을 시스템 제공 oplock 패키지로 동기화해야 합니다. 자세한 내용은 Oplock 동기화 를 참조하세요.

요구 사항

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

추가 정보

FLT_CALLBACK_DATA

IRP_MJ_CREATE 대한 FLT_PARAMETERS

IRP_MJ_FILE_SYSTEM_CONTROL 대한 FLT_PARAMETERS

FSCTL_OPBATCH_ACK_CLOSE_PENDING

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplockEx

FltInitializeOplock

FsRtlOplockFsctrlEx

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL