OPLOCK_KEY_ECP_CONTEXT 구조체(ntifs.h)

OPLOCK_KEY_ECP_CONTEXT 구조체는 oplock 키를 파일에 연결하는 데 사용됩니다. 이 구조는 Windows 8 이상 버전에서는 사용되지 않습니다. 필터는 대신 DUAL_OP_LOCK_KEY_ECP_CONTEXT 사용해야 합니다.

구문

typedef struct _OPLOCK_KEY_ECP_CONTEXT {
  GUID  OplockKey;
  ULONG Reserved;
} OPLOCK_KEY_ECP_CONTEXT, *POPLOCK_KEY_ECP_CONTEXT;

멤버

OplockKey

oplock 키에 대한 GUID입니다. 이 GUID는 서로 다른 핸들 간에 공유되며 동일한 클라이언트 캐시에 속하는 것으로 식별합니다. 두 핸들이 동일한 oplock 키를 공유하는 경우 한 핸들에서 수행된 요청은 다른 핸들의 미해결 oplock을 중단하지 않습니다.

Reserved

예약되어 있습니다. 0으로 설정해야 합니다.

설명

ECP를 사용하여 파일을 만들 때 추가 정보를 파일에 연결하는 방법에 대한 자세한 내용은 IRP_MJ_CREATE 작업에서 추가 만들기 매개 변수 사용을 참조하세요.

미니필터는 ECP가 위에서 내려오는 것을 볼 때 OPLOCK_KEY_ECP_CONTEXT 구조체의 내용을 변경해서는 안 됩니다. oplock 키 ECP에 대한 정보만 검색하는 데 사용해야 합니다. 이 문제에 대한 자세한 내용은 시스템 정의 ECP를 참조하세요.

oplock 키를 사용하면 애플리케이션이 애플리케이션의 자체 oplock을 중단하지 않고 동일한 스트림에 대한 여러 핸들을 열 수 있습니다. oplock 중단은 애플리케이션이 공유 위반(STATUS_SHARING_VIOLATION)을 받은 후에만 발생합니다.

스트림이 열릴 때 스트림 핸들에 Oplock이 부여됩니다. 이러한 스트림 핸들은 oplock 키와 연결할 수 있습니다. 호출자는 IoCreateFileEx 루틴에 oplock 키를 명시적으로 제공하여 스트림 핸들을 만들 수 있습니다. 호출자가 핸들을 만들 때 호출자가 oplock 키를 명시적으로 지정하지 않으면 운영 체제는 핸들이 핸들과 연결된 고유한 oplock 키를 갖는 것으로 처리하므로 핸들의 키가 다른 핸들의 다른 키와 다릅니다. oplock이 부여된 핸들 이외의 핸들에서 파일 작업을 수신하고 oplock의 핸들과 연결된 oplock 키가 작업 핸들과 연결된 키와 다르고 해당 작업이 현재 부여된 oplock과 호환되지 않으면 oplock이 끊어집니다. 호환되지 않는 작업을 수행하는 동일한 프로세스 또는 스레드인 경우에도 oplock이 중단됩니다. 예를 들어 프로세스가 배타적 oplock이 부여된 스트림을 열고 동일한 프로세스가 동일한 스트림을 다시 여는 경우 다른(또는 아니요) oplock 키를 사용하여 배타적 oplock이 즉시 끊어집니다.

Oplock 키는 핸들을 만들 때 핸들과 연결됩니다. oplock이 부여되지 않은 경우에도 핸들을 oplock 키와 연결할 수 있습니다.

oplock 및 oplock 키에 대한 자세한 내용은 Oplock 의미 체계 개요를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7; Windows 8 시작하지 않음
머리글 ntifs.h

추가 정보

DUAL_OP_LOCK_KEY_ECP_CONTEXT

IoCreateFileEx