Compartilhar via


estrutura OPLOCK_KEY_ECP_CONTEXT (ntifs.h)

A estrutura OPLOCK_KEY_ECP_CONTEXT é usada para anexar uma chave oplock a um arquivo. Essa estrutura é obsoleta para o Windows 8 e versões posteriores; em vez disso, os filtros devem usar DUAL_OP_LOCK_KEY_ECP_CONTEXT.

Sintaxe

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

Membros

OplockKey

Um GUID para a chave oplock. Esse GUID é compartilhado entre diferentes identificadores e os identifica como pertencentes ao mesmo cache de cliente. Quando dois identificadores compartilham a mesma chave oplock, uma solicitação executada em um identificador não interromperá um oplock pendente no outro identificador.

Reserved

Reservado. Deve ser definido como zero.

Observações

Para obter informações sobre como usar ECPs para associar informações extras a um arquivo quando o arquivo for criado, consulte Usando parâmetros de criação extra com uma operação IRP_MJ_CREATE.

Um minifiltro não deve alterar o conteúdo da estrutura de OPLOCK_KEY_ECP_CONTEXT quando ele vê o ECP de baixo acima. Você deve usá-la para recuperar informações somente sobre a chave oplock ECP. Para obter mais informações sobre esse problema, consulte System-Defined ECPs.

A chave oplock permite que um aplicativo abra várias alças no mesmo fluxo sem quebrar o oplock do próprio aplicativo. A quebra de oplock só ocorre depois que o aplicativo recebe uma violação de compartilhamento (STATUS_SHARING_VIOLATION).

Oplocks são concedidos em identificadores de fluxo quando um fluxo é aberto. Esse identificador de fluxo pode ser associado a uma chave oplock. Um chamador pode fornecer explicitamente a chave oplock para a rotina de IoCreateFileEx para criar o identificador de fluxo. Se o chamador não especifica explicitamente uma chave oplock quando o chamador cria o identificador, o sistema operacional trata o identificador como tendo uma chave oplock exclusiva associada ao identificador, de modo que a chave do identificador difere de qualquer outra chave em qualquer outro identificador. Se uma operação de arquivo for recebida em um identificador diferente daquele em que o oplock foi concedido, e a chave oplock associada ao identificador do oplock for diferente da chave associada ao identificador da operação e essa operação for incompatível com o oplock atualmente concedido, esse oplock será interrompido. O oplock é interrompido mesmo que seja o mesmo processo ou thread que executa a operação incompatível. Por exemplo, se um processo abrir um fluxo para o qual um oplock exclusivo é concedido e o mesmo processo abrir o mesmo fluxo novamente, usando uma chave oplock diferente (ou não), o oplock exclusivo será interrompido imediatamente.

As chaves oplock são associadas a identificadores quando as alças são criadas. Você pode associar um identificador a uma chave oplock mesmo se nenhum oplocks for concedido.

Para obter mais informações sobre oplocks e chaves oplock, consulte Visão geral da Semântica oplock.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 7; obsoleto a partir do Windows 8
cabeçalho ntifs.h

Consulte também

DUAL_OP_LOCK_KEY_ECP_CONTEXT

IoCreateFileEx