OPLOCK_KEY_ECP_CONTEXT struttura (ntifs.h)

La struttura OPLOCK_KEY_ECP_CONTEXT viene usata per collegare una chiave oplock a un file. Questa struttura è obsoleta per Windows 8 e versioni successive. I filtri devono invece usare DUAL_OP_LOCK_KEY_ECP_CONTEXT.

Sintassi

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

Members

OplockKey

GUID per la chiave oplock. Questo GUID viene condiviso tra handle diversi e li identifica come appartenenti alla stessa cache client. Quando due handle condividono la stessa chiave di oplock, una richiesta eseguita su un handle non interromperà un oplock in sospeso sull'altro handle.

Reserved

Riservato. Deve essere impostato su zero.

Commenti

Per informazioni su come usare gli ECP per associare informazioni aggiuntive a un file quando viene creato il file, vedere Uso di parametri di creazione aggiuntivi con un'operazione di IRP_MJ_CREATE.

Un minifilter non deve modificare il contenuto della struttura OPLOCK_KEY_ECP_CONTEXT quando vede che ECP scende da sopra. È consigliabile usarlo per recuperare informazioni solo sulla chiave di blocco ECP. Per altre informazioni su questo problema, vedere ECP definiti dal sistema.

La chiave di blocco consente a un'applicazione di aprire più handle allo stesso flusso senza interrompere il proprio oplock dell'applicazione. L'interruzione di oplock si verifica solo dopo che l'applicazione riceve una violazione di condivisione (STATUS_SHARING_VIOLATION).

Gli oplock vengono concessi nei handle di flusso quando viene aperto un flusso. Tale handle di flusso può essere associato a una chiave di blocco. Un chiamante può fornire in modo esplicito la chiave oplock alla routine IoCreateFileEx per creare l'handle di flusso. Se il chiamante non specifica in modo esplicito una chiave di blocco quando il chiamante crea l'handle, il sistema operativo considera l'handle come una chiave di blocco univoca associata all'handle, in modo che la chiave dell'handle sia diversa da qualsiasi altra chiave in qualsiasi altro handle. Se viene ricevuta un'operazione di file su un handle diverso da quello in cui è stato concesso l'oplock e la chiave di oplock associata all'handle di oplock differisce dalla chiave associata all'handle dell'operazione e tale operazione non è compatibile con l'oplock attualmente concesso, quindi tale operazione è interrotta. Il blocco si interrompe anche se si tratta dello stesso processo o thread che esegue l'operazione incompatibile. Ad esempio, se un processo apre un flusso per cui viene concesso un oplock esclusivo e lo stesso processo apre di nuovo lo stesso flusso, usando una chiave di oplock diversa (o nessuna), l'esclusivo oplock viene interrotto immediatamente.

Le chiavi oplock sono associate agli handle quando vengono creati gli handle. È possibile associare un handle a una chiave di oplock anche se non vengono concessi oplock.

Per altre informazioni sugli oplock e sulle chiavi di oplock, vedere Panoramica della semantica di Oplock.

Requisiti

Requisito Valore
Client minimo supportato Windows 7; obsoleto a partire da Windows 8
Intestazione ntifs.h

Vedi anche

DUAL_OP_LOCK_KEY_ECP_CONTEXT

IoCreateFileEx