FsRtlCheckUpperOplock 함수(ntifs.h)
FsRtlCheckUpperOplock 루틴은 변경 상태를 보유하는 oplock이 있을 때 보조 또는 계층화된 파일 시스템에서 기회 잠금(oplock) 검사를 제공합니다. 보조 파일 시스템(예: 네트워크 리디렉터 및 클러스터링 파일 서비스)은 보조 파일 시스템에 의해 낮은 파일 시스템에서 oplock이 유지되면 FsRtlCheckUpperOplock 호출하여 상태를 변경합니다. 중단 또는 업그레이드를 통해 상태 변경이 발생할 수 있습니다. FsRtlCheckUpperOplock 필요한 경우 상위 파일 시스템의 oplock을 끊어 새 하위 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 | W(oplock Write) 형식을 나타냅니다. |
OPLOCK_LEVEL_CACHE_HANDLE | oplock 핸들(H) 형식을 나타냅니다. |
[in, optional] CompletionRoutineContext
CompletionRoutine 및 PrePendIrpRoutine 매개 변수가 가리키는 콜백 루틴에 전달될 호출자 정의 컨텍스트 정보에 대한 포인터입니다.
[in, optional] CompletionRoutine
호출자가 제공한 콜백 루틴에 대한 포인터입니다. 기회 잠금 중단이 진행 중인 경우 중단이 완료되면 이 루틴이 호출됩니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다. NULL인 경우 호출자는 기회 잠금 중단이 완료될 때까지 대기 상태로 전환됩니다.
이 루틴의 선언 및 매개 변수 설명은 다음과 같습니다.
typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
_In_ PVOID Context,
_In_opt_ PIRP Irp
);
매개 변수 | 묘사 |
---|---|
컨텍스트 |
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
);
매개 변수 | 묘사 |
---|---|
컨텍스트 |
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) 위쪽 오프록만 중단하고 R 소유자에게 R을 다시 요청할 수 있음을 알립니다. 다른 모든 위쪽 oplock 검사는 STATUS_CANNOT_BREAK_OPLOCK 반환합니다. |
반환 값
FsRtlCheckUpperOplock 다음 중 하나와 같은 적절한 NTSTATUS 코드를 반환합니다.
반환 코드 | 묘사 |
---|---|
STATUS_SUCCESS | oplock 중단이 필요하지 않거나 중단이 승인되었습니다. CompletionRoutine NULL이면 FsRtlCheckUpperOplock은 STATUS_PENDING 반환하지 않고 oplock 중단이 처리되는 동안 차단할 있습니다. |
STATUS_CANNOT_BREAK_OPLOCK | oplock 중단을 수행할 수 없습니다. 중단을 제한하는 조건은 플래그 참조하세요. |
STATUS_PENDING | 기회 잠금 중단이 진행 중입니다. 제공된 경우 PrePendIrpRoutine 보류 중인 작업의 알림으로 호출됩니다. oplock 중단이 완료되면 CompletionRoutine 호출됩니다. STATUS_PENDING 성공 코드입니다. |
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8.1 |
대상 플랫폼 | 보편적 |
헤더 | ntifs.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL |
IRQL <= APC_LEVEL |
참고 항목
FsRtlUpperOplockFsctrl