FSCTL_REQUEST_OPLOCK codice di controllo
Il codice di controllo FSCTL_REQUEST_OPLOCK richiede un blocco opportunistico (oplock) in un file o riconosce che si è verificata un'interruzione di oplock.
Per altre informazioni sui blocchi opportunistici, vedere Blocchi opportunistici nella documentazione di Windows Desktop. Per altre informazioni sui controlli OPLOCK in modalità utente, vedere Codici di controllo di gestione file nella documentazione di Windows Desktop.
Per elaborare questo codice di controllo, un file system o un driver di filtro chiama FsRtlOplockFsctrlEx con i parametri seguenti.
Parametri
Oplock: puntatore a oggetti oplock opaco per il file.
Irp: puntatore all'IRP per una richiesta IRP_MJ_FILE_SYSTEM_CONTROL FSCTL. Il parametro FsControlCode per l'operazione deve essere FSCTL_REQUEST_OPLOCK.
OpenCount: numero di handle utente per il file se la richiesta è per un oplock esclusivo. Se la richiesta è per un oplock che può essere condiviso, OpenCount è zero se nel file non esistono blocchi byte-range. In caso contrario, OpenCount è diverso da zero. Il chiamante può chiamare la routine FsRtlOplockIsSharedRequest in IRP per determinare se la richiesta è per un oplock che può essere condiviso.
Flag: maschera di bit per le operazioni di oplock associate. Un file system o un driver di filtro imposta bit per specificare il comportamento di FsRtlOplockFsctrlEx. Il parametro Flags include le opzioni seguenti:
Valore Significato OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) Specifica che il file system ha verificato che tutte le chiavi di blocco opportunistiche corrispondano a qualsiasi handle attualmente aperto. Specificando questo flag, il pacchetto oplock può concedere un oplock di livello RW o RWH quando esiste più di un handle aperto al file. Per altre informazioni sui tipi di oplock, vedere Panoramica.
Blocco dello stato
FsRtlOplockFsctrlEx restituisce uno dei valori NTSTATUS seguenti per questa operazione:
Codice | Significato |
---|---|
STATUS_PENDING | Il blocco è stato concesso. Si tratta di un codice riuscito. |
STATUS_CANCELLED | L'IRP è stato annullato prima del completamento dell'operazione di FSCTL_REQUEST_OPLOCK. Si tratta di un codice di errore. |
STATUS_OPLOCK_NOT_GRANTED | Impossibile concedere il blocco. Si tratta di un codice di errore. |
Requisiti
Tipo di requisito | Requisito |
---|---|
Intestazione | Ntifs.h (include Ntifs.h o Fltkernel.h) |