다음을 통해 공유


FSCTL_OPLOCK_BREAK_NOTIFY 제어 코드

FSCTL_OPLOCK_BREAK_NOTIFY 제어 코드를 사용하면 호출 애플리케이션이 기회 잠금(oplock) 중단이 완료될 때까지 기다릴 수 있습니다.

이 작업은 호출자의 핸들을 열 때 이미 시작된 oplock 중단에만 유용합니다. 핸들이 FILE_COMPLETE_IF_OPLOCKED 열려 있어야 합니다. oplock이 현재 유지되고 oplock 중단이 시작되지 않은 경우 이 작업은 의미가 없습니다.

이 제어 코드를 처리하기 위해 미니필터는 다음 매개 변수를 사용하여 FltOplockFsctrl 을 호출합니다. 파일 시스템 또는 레거시 필터 드라이버는 FsRtlOplockFsctrl을 호출합니다.

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

매개 변수

  • Oplock: 파일에 대한 불투명 불투명 개체 포인터입니다.

  • CallbackData: FltOplockFsctrl 만 해당합니다. IRP_MJ_FILE_SYSTEM_CONTROL FSCTL 요청에 대한 콜백 데이터(FLT_CALLBACK_DATA) 구조입니다. 작업에 대한 FsControlCode 매개 변수는 FSCTL_OPLOCK_BREAK_NOTIFY 합니다.

  • Irp: FsRtlOplockFsctrl 만 해당합니다. IRP_MJ_FILE_SYSTEM_CONTROL FSCTL 요청에 대한 IRP입니다. 작업에 대한 FsControlCode 매개 변수는 FSCTL_OPLOCK_BREAK_NOTIFY 합니다.

  • OpenCount: 이 작업에 사용되지 않습니다. 를 0으로 설정합니다.

상태 블록

FltOplockFsctrl 은 oplock 중단이 진행 중인 경우 FLT_PREOP_PENDING 반환하고 oplock 중단이 완료되면 IRP가 완료됩니다. (이 경우 IRP는 결국 STATUS_SUCCESS 또는 STATUS_CANCELLED 완료할 수 있습니다.) 그렇지 않으면 FltOplockFsctrl은 FLT_PREOP_COMPLETE 반환합니다.

FsRtlOplockFsctrl 은 이 작업에 대해 다음 NTSTATUS 값 중 하나를 반환합니다.

코드 의미
STATUS_SUCCESS 이 핸들에 의해 oplock이 유지되지 않았거나 oplock이 유지되고 oplock 중단이 시작되지 않았습니다.
STATUS_INVALID_OPLOCK_PROTOCOL FSCTL_OPLOCK_BREAK_NOTIFY 작업이 완료되기 전에 IRP가 취소되었습니다.
STATUS_PENDING oplock 중단이 진행 중입니다. Oplock 중단이 완료되면 IRP가 완료됩니다. IRP는 결국 STATUS_SUCCESS 또는 STATUS_CANCELLED 완료할 수 있습니다. 성공 코드입니다.

요구 사항

요구 사항 유형 요구 사항
헤더 Ntifs.h ( Ntifs.h 또는 Fltkernel.h 포함)

추가 정보

FLT_CALLBACK_DATA

FLT_PARAMETERS

IRP_MJ_FILE_SYSTEM_CONTROL 대한 FLT_PARAMETERS

FltOplockFsctrl

FSCTL_OPBATCH_ACK_CLOSE_PENDING

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FsRtlOplockFsctrl

IRP_MJ_FILE_SYSTEM_CONTROL