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 Windows 8 e versões posteriores; 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.
Comentários
Para obter informações sobre como usar ECPs para associar informações extras a um arquivo quando o arquivo é criado, consulte Usando parâmetros de criação extra com uma operação de IRP_MJ_CREATE.
Um minifiltro não deve alterar o conteúdo da estrutura OPLOCK_KEY_ECP_CONTEXT quando vê o ECP descendo de cima. Você deve usá-lo para recuperar informações apenas sobre a chave oplock ECP. Para obter mais informações sobre esse problema, consulte ECPs definidos pelo sistema.
A chave oplock permite que um aplicativo abra vários identificadores para o mesmo fluxo sem quebrar o próprio oplock do aplicativo. A interrupção do oplock só ocorre depois que o aplicativo recebe uma violação de compartilhamento (STATUS_SHARING_VIOLATION).
Os 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 IoCreateFileEx para criar o identificador de fluxo. Se o chamador não especificar explicitamente uma chave oplock quando o chamador criar o identificador, o sistema operacional tratará 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 no qual 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á quebrado. O oplock é interrompido mesmo que seja o mesmo processo ou thread executando 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á quebrado imediatamente.
As chaves oplock são associadas a identificadores quando os identificadores são criados. Você pode associar um identificador a uma chave oplock mesmo que nenhum oplock seja concedido.
Para obter mais informações sobre oplocks e chaves oplock, consulte Visão geral da Semântica do Oplock.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 7; obsoleto começando no Windows 8 |
Cabeçalho | ntifs.h |