struttura OPLOCK_KEY_ECP_CONTEXT (ntifs.h)
La struttura OPLOCK_KEY_ECP_CONTEXT viene utilizzata 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;
Membri
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 interrompe un blocco operativo in sospeso sull'altro handle.
Reserved
Riservato. Deve essere impostato su zero.
Osservazioni
Per informazioni su come usare gli ECP per associare informazioni aggiuntive a un file quando viene creato il file, vedere Using Extra Create Parameters with an IRP_MJ_CREATE Operation.For information about how to use ECP to associate extra information with a file when the file is created, see Using Extra Create Parameters with an IRP_MJ_CREATE Operation.
Un minifiltro non deve modificare il contenuto della struttura OPLOCK_KEY_ECP_CONTEXT quando vede l'ECP in uscita dall'alto. È consigliabile usarlo per recuperare informazioni solo sulla chiave oplock ECP. Per altre informazioni su questo problema, vedere System-Defined ECP.
La chiave oplock 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 sugli handle di flusso all'apertura di un flusso. Un handle di flusso di questo tipo può essere associato a una chiave oplock. Un chiamante può fornire in modo esplicito la chiave oplock all'routine IoCreateFileEx per creare l'handle di flusso. Se il chiamante non specifica in modo esplicito una chiave oplock quando il chiamante crea l'handle, il sistema operativo considera l'handle come una chiave di oplock univoca associata all'handle, in modo che la chiave dell'handle differisca da qualsiasi altra chiave su 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 oplock associata all'handle dell'oplock è diversa dalla chiave associata all'handle dell'operazione e tale operazione non è compatibile con l'oplock attualmente concesso, tale oplock viene interrotto. L'oplock 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 il quale viene concesso un oplock esclusivo e lo stesso processo apre di nuovo lo stesso flusso, usando una chiave di oplock diversa (o no), l'oplock esclusivo viene interrotto immediatamente.
Le chiavi oplock sono associate agli handle quando vengono creati gli handle. È possibile associare un handle a una chiave oplock anche se non viene concesso alcun oplock.
Per altre informazioni sugli oplock e sulle chiavi oplock, vedere panoramica della semantica oplock .
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 7; obsoleto a partire da Windows 8 |
intestazione |
ntifs.h |