FsRtlCheckUpperOplock 함수(ntifs.h)

FsRtlCheckUpperOplock 루틴은 변경 상태를 보유하는 oplock이 있을 때 보조 또는 계층화된 파일 시스템에서 기회 잠금(oplock) 검사를 제공합니다. 보조 파일 시스템(예: 네트워크 리디렉터 및 클러스터링 파일 서비스)은 보조 파일 시스템에 의해 낮은 파일 시스템에 있는 oplock이 상태를 변경하면 FsRtlCheckUpperOplock을 호출합니다. 중단 또는 업그레이드로 인해 상태 변경이 발생할 수 있습니다. FsRtlCheckUpperOplock 은 필요한 경우 상위 파일 시스템의 oplock을 중단하여 새 하한 연산자 상태를 확인합니다. 호출자는 중단 승인 및 보류 중인 상태 알림에 대한 선택적 콜백을 제공할 수도 있습니다.

구문

NTSTATUS FsRtlCheckUpperOplock(
  [in]           POPLOCK                       Oplock,
  [in]           ULONG                         NewLowerOplockState,
  [in, optional] PVOID                         CompletionRoutineContext,
  [in, optional] POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
                 POPLOCK_FS_PREPOST_IRP        PrePendRoutine,
  [in]           ULONG                         Flags
);

매개 변수

[in] Oplock

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

[in] NewLowerOplockState

보조 파일 시스템에서 하위 파일 시스템에 보관된 요청된 oplock을 나타내는 값입니다. 이는 다음의 비트 OR 조합입니다.

의미
OPLOCK_LEVEL_CACHE_READ Oplock 읽기(R) 형식을 나타냅니다.
OPLOCK_LEVEL_CACHE_WRITE oplock 쓰기(W) 형식을 나타냅니다.
OPLOCK_LEVEL_CACHE_HANDLE Oplock 핸들(H) 형식을 나타냅니다.

[in, optional] CompletionRoutineContext

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

[in, optional] CompletionRoutine

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

이 루틴의 선언 및 매개 변수 설명은 다음과 같습니다.

typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
      _In_ PVOID Context,
      _In_opt_ PIRP Irp
      );
매개 변수 Description
컨텍스트 CompletionRoutineContext 매개 변수에서 FsRtlCheckUpperOplock에 전달된 컨텍스트 정보 포인터입니다.
Irp I/O 작업에 대한 IRP에 대한 선택적 포인터입니다. FsRtlCheckUpperOplock 은 항상 NULL로 설정합니다.

PrePendRoutine

FsRtlCheckUpperOplock이 STATUS_PENDING 반환하는 경우 호출자가 제공하는 콜백 루틴에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

이 루틴의 선언 및 매개 변수 설명은 다음과 같습니다.

typedef VOID
(*POPLOCK_FS_PREPOST_IRP) (
      _In_ PVOID Context,
      _in_opt_ PIRP Irp
      );
매개 변수 Description
컨텍스트 CompletionRoutineContext 매개 변수에서 FsRtlCheckUpperOplock에 전달된 컨텍스트 정보 포인터입니다.
Irp I/O 작업에 대한 IRP에 대한 선택적 포인터입니다. FsRtlCheckUpperOplock 은 항상 NULL로 설정합니다.

[in] Flags

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

의미
OPLOCK_UPPER_FLAG_CHECK_NO_BREAK(0x00010000) NewLowerOplockState 값으로 인해 oplock 중단이 발생하는 경우 STATUS_CANNOT_BREAK_OPLOCK 반환합니다.
OPLOCK_UPPER_FLAG_NOTIFY_REFRESH_READ(0x00020000) 읽기(R) 위쪽 oplock만 중단하고 R 소유자에게 R을 다시 요청할 수 있음을 알립니다. 다른 모든 위쪽 oplock 검사는 STATUS_CANNOT_BREAK_OPLOCK 반환합니다.

반환 값

FsRtlCheckUpperOplock 은 다음 중 하나와 같은 적절한 NTSTATUS 코드를 반환합니다.

반환 코드 설명
STATUS_SUCCESS oplock 중단이 필요하지 않거나 중단이 승인되었습니다. CompletionRoutine이 NULL이면 oplock 중단이 STATUS_PENDING 반환하지 않고 처리되는 동안 FsRtlCheckUpperOplock이 차단됩니다.
STATUS_CANNOT_BREAK_OPLOCK oplock 중단을 수행할 수 없습니다. 중단을 제한하는 조건은 플래그 를 참조하세요.
STATUS_PENDING 기회 잠금 중단이 진행 중입니다. 제공된 경우 PrePendIrpRoutine 은 보류 중인 작업의 알림으로 호출됩니다. CompletionRoutine 은 oplock 중단이 완료되면 호출됩니다. STATUS_PENDING 성공 코드입니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8.1
대상 플랫폼 유니버설
헤더 ntifs.h(Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= APC_LEVEL

추가 정보

FsRtlCheckOplockEx

FsRtlUpperOplockFsctrl