IRP_MJ_CREATE 작업의 Oplock 상태 확인
다음은 파일의 기존 스트림이 열려 있는 경우에만 적용됩니다(즉, 새로 만든 스트림에 기존 oplock이 있을 수 없음).
참고 모든 oplock에 대한 IRP_MJ_CREATE 처리할 때 원하는 액세스에 FILE_READ_ATTRIBUTES, FILE_WRITE_ATTRIBUTES 또는 SYNCHRONIZE 이외의 항목이 없는 경우 FILE_RESERVE_OPFILTER 지정하지 않으면 oplock이 중단되지 않습니다. FILE_RESERVE_OPFILTER 지정하면 만들기가 성공하면 항상 oplock 중단이 발생합니다. 간결하고 단순하게 하기 위해 다음 표에서는 모든 oplock에 적용되므로 기존을 생략합니다.
요청 유형 | 조건 |
---|---|
수준 1 |
다음과 같은 경우 IRP_MJ_CREATE 손상됨
|
oplock이 끊어진 경우:
|
|
수준 2 |
다음과 같은 경우 IRP_MJ_CREATE 손상됨
|
oplock이 끊어진 경우:
|
|
Batch |
다음과 같은 경우 IRP_MJ_CREATE 손상됨
|
oplock이 끊어진 경우:
|
|
필터 |
다음과 같은 경우 IRP_MJ_CREATE 손상됨
|
oplock이 끊어진 경우:
|
|
읽기 |
다음과 같은 경우 IRP_MJ_CREATE 손상됨
|
oplock이 끊어진 경우:
|
|
Read-Handle |
다음과 같은 경우 IRP_MJ_CREATE 손상됨
|
oplock이 끊어진 경우:
|
|
읽기-쓰기 |
다음과 같은 경우 IRP_MJ_CREATE 손상됨
|
oplock이 끊어진 경우:
|
|
읽기-쓰기-핸들 |
다음과 같은 경우 IRP_MJ_CREATE 손상됨
|
oplock이 끊어진 경우:
|
파일 시스템은 IRP_MJ_CREATE 작업을 처리할 때 Oplock 패키지 자체가 아닌 Batch 및 Filter oplock에 대한 추가 검사를 수행하며, 이는 파일 시스템이 oplock 패키지에 oplock 중단 처리를 수행하도록 요청하는지 여부에 영향을 줍니다. 한 데이터 스트림에 대한 작업이 동일한 파일의 다른 데이터 스트림(즉, 다음 조건 목록의 마지막 두 목록 항목)에 대한 oplock에 영향을 미칠 수 있는 경우입니다. 다음 조건 중 하나 이상이 충족되면 파일 시스템은 oplock 중단 처리를 수행하기 위해 oplock 패키지에 요청을 보냅니다.
네트워크 쿼리가 열려 있고 KTM 트랜잭션이 있는 경우 중단을 요청합니다. 그렇지 않으면 네트워크 쿼리 열기에서 중단을 요청하지 마세요.
SUPERSEDE, OVERWRITE 또는 OVERWRITE_IF 작업이 대체 데이터 스트림에서 수행되고 FILE_SHARE_DELETE 지정되지 않고 주 데이터 스트림에 Batch 또는 Filter oplock이 있는 경우 주 데이터 스트림에서 Batch 또는 Filter oplock의 중단을 요청합니다.
SUPERSEDE, OVERWRITE 또는 OVERWRITE_IF 작업이 기본 데이터 스트림에서 수행되고 DELETE 액세스가 요청되었으며 대체 데이터 스트림에 Batch 또는 Filter oplocks가 있는 경우 배치 또는 필터 연산을 포함하는 모든 대체 데이터 스트림에서 일괄 처리 또는 필터 oplocks의 중단을 요청합니다.
파일 시스템이 oplock 패키지에 oplock 중단 처리를 수행하도록 요청하기로 결정하면 앞의 표에 설명된 규칙이 적용됩니다.
일괄 처리 및 필터 차단을 중단하는 검사 공유 액세스 검사가 수행되기 전에 발생합니다. 즉, 공유 위반으로 인해 열려 있는 요청이 실패하더라도 Batch 또는 Filter oplock이 중단됩니다.