다음을 통해 공유


FsRtlOplockFsctrl 함수(ntifs.h)

FsRtlOplockFsctrl 파일 시스템 또는 필터 드라이버를 대신하여 다양한 oplock(기회 잠금) 작업을 수행합니다.

통사론

NTSTATUS FsRtlOplockFsctrl(
  [in] POPLOCK Oplock,
  [in] PIRP    Irp,
  [in] ULONG   OpenCount
);

매개 변수

[in] Oplock

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

[in] Irp

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

[in] OpenCount

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

반환 값

FsRtlOplockFsctrl 다음 NTSTATUS 값 중 하나를 반환합니다.

반환 코드 묘사
STATUS_SUCCESS IRP_MJ_CREATE 요청의 경우 STATUS_SUCCESS 요청된 필터 oplock이 부여되었음을 나타냅니다. FSCTL 작업의 경우 STATUS_SUCCESS 의미는 FSCTL 코드에 따라 달라집니다. 자세한 내용은 다음 주의 섹션에 나열된 FSCTL 코드에 대한 참조 페이지를 참조하세요.
STATUS_CANCELLED I/O 작업이 취소되었습니다. STATUS_CANCELLED 오류 코드입니다.
STATUS_INVALID_PARAMETER I/O 작업에 대한 FSCTL 코드는 다음 주의 섹션에 나열된 유효한 값 중 하나가 아닙니다. STATUS_INVALID_PARAMETER 오류 코드입니다.
STATUS_OPLOCK_NOT_GRANTED oplock을 부여할 수 없습니다. STATUS_OPLOCK_NOT_GRANTED 오류 코드입니다.
STATUS_PENDING FSCTL 작업에만 사용됩니다. STATUS_PENDING 의미는 FSCTL 코드에 따라 달라집니다. 자세한 내용은 다음 주의 섹션에 나열된 FSCTL 코드에 대한 참조 페이지를 참조하세요. STATUS_PENDING 성공 코드입니다.
STATUS_CANNOT_BREAK_OPLOCK 새 oplock을 부여할 수 없습니다. IRP는 IRP_MJ_CREATE 요청이며 FILE_OPEN_REQUIRING_OPLOCK 작업에 대한 만들기 옵션 매개 변수에 지정되었습니다. STATUS_CANNOT_BREAK_OPLOCK 성공 코드입니다.

발언

파일 시스템 및 레거시 필터 드라이버는 FsRtlOplockFsctrl 호출하여 만들기 또는 파일 시스템 컨트롤 I/O 작업에 대한 다양한 oplock 작업을 수행합니다. 미니 필터는 FsRtlOplockFsctrl대신 FltOplockFsctrl 호출해야 합니다.

Irp 매개 변수가 가리키는 IRP는 IRP_MJ_FILE_SYSTEM_CONTROL 또는 IRP_MJ_CREATE 작업에 유효한 IRP여야 합니다.

IRP가 IRP_MJ_FILE_SYSTEM_CONTROL 요청인 경우 FsRtlOplockFsctrl IrpSp-Parameters.FileSystemControl.FsControlCode설정된 다음 FSCTL 코드 중 하나와 함께 사용할 수 있습니다.

이러한 FSCTL 및 일반적인 기회 잠금에 대한 자세한 내용은 Microsoft Windows SDK 설명서를 참조하세요.

IRP가 IRP_MJ_CREATE 요청인 경우 다음 조건이 모두 충족되면 FsRtlOplockFsctrl 사용하여 보류 중인 필터 oplock을 요청할 수 있습니다.

  • OpenCount 매개 변수의 값은 1이어야 합니다.
  • IRP_MJ_CREATE 요청에 대한 DesiredAccess 매개 변수의 값은 FILE_READ_ATTRIBUTES 합니다.
  • IRP_MJ_CREATE 요청에 대한 ShareAccess 매개 변수의 값은 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE.

보류 중인 필터 oplock에 대한 요청이 부여되면 FsRtlOplockFsctrl STATUS_SUCCESS 반환합니다. 매개 변수 만들기에 대한 자세한 내용은 IRP_MJ_CREATE대한 참조 항목을 참조하세요.

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

요구 사항

요구
대상 플랫폼 보편적
헤더 ntifs.h(Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

참고 항목

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_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

fltOplockFsctrl

FsRtlCheckOplock

FsRtlCurrentBatchOplock

FsRtlInitializeOplock

FsRtlOplockIsFastIoPossible

FsRtlUninitializeOplock

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL