Funzione FsRtlUpperOplockFsctrl (ntifs.h)

La routine FsRtlUpperOplockFsctrl elabora richieste di blocco opportunistico (oplock) e riconoscimenti per i file system secondari o a livelli. Il file system superiore invia lo stato del blocco mantenuto nel file system inferiore. FsRtlUpperOplockFsctrl determina se concedere o negare l'oplock del file system superiore.

Sintassi

NTSTATUS FsRtlUpperOplockFsctrl(
  [in] POPLOCK Oplock,
  [in] PIRP    Irp,
  [in] ULONG   OpenCount,
  [in] ULONG   LowerOplockState,
  [in] ULONG   Flags
);

Parametri

[in] Oplock

Puntatore oplock opaco per il file. Questo puntatore deve essere stato inizializzato da una chiamata precedente a FsRtlInitializeOplock.

[in] Irp

Puntatore all'IRP per l'operazione di I/O.

[in] OpenCount

Numero di handle utente per il file, se viene richiesto un oplock esclusivo. L'impostazione di un valore diverso da zero per una richiesta di 2, R o RH oplock indica che nel file sono presenti blocchi di intervallo di byte. Per altre informazioni sui tipi di oplock, vedere Tipi di oplock.

[in] LowerOplockState

Valore del livello di oplock inferiore mantenuto dal file system superiore. Questa combinazione OR bit per bit dei seguenti elementi:

Valore Significato
OPLOCK_LEVEL_CACHE_READ Indica un tipo oplock Read (R).
OPLOCK_LEVEL_CACHE_WRITE Indica un tipo di scrittura oplock (W).
OPLOCK_LEVEL_CACHE_HANDLE Indica un tipo di handle di blocco (H).

[in] Flags

Maschera di bit per le operazioni di oplock associate. Un file system o un driver di filtro imposta bit per specificare il comportamento di FsRtlUpperOplockFsctrl. Il parametro Flags include le opzioni seguenti:

Valore Significato
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) Il file system ha verificato che tutte le chiavi di oplock in qualsiasi corrispondenza di handle attualmente aperti corrispondano. Specificando questo flag, è possibile concedere al pacchetto oplock un blocco di livello RW o RWH quando esiste più di un handle aperto al file.

Valore restituito

FsRtlUpperOplockFsctrl restituisce uno dei valori NTSTATUS seguenti:

Codice restituito Descrizione
STATUS_SUCCESS Per una richiesta di IRP_MJ_CREATE, STATUS_SUCCESS indica che è stato concesso il blocco opportunistico del filtro richiesto (oplock). Per un'operazione FSCTL, il significato di STATUS_SUCCESS dipende dal codice FSCTL. Per altre informazioni, vedere la sezione Osservazioni in FsRtlOplockFsctrlEx.
STATUS_CANCELLED L'operazione di I/O è stata annullata. STATUS_CANCELLED è un codice di errore.
STATUS_INVALID_PARAMETER Il codice FSCTL per l'operazione di I/O non era una richiesta di oplock dei valori validi. I tipi di richiesta validi sono elencati nella sezione Osservazioni di FsRtlOplockFsctrlEx. STATUS_INVALID_PARAMETER è un codice di errore.
STATUS_OPLOCK_NOT_GRANTED Impossibile concedere il blocco. Il livello dell'oplock del file system superiore richiesto non è valido per l'oplock concesso per il file system inferiore. STATUS_OPLOCK_NOT_GRANTED è un codice di errore.
STATUS_PENDING Usato solo per le operazioni FSCTL. Il significato di STATUS_PENDING dipende dal codice FSCTL. Per altre informazioni, vedere la sezione Osservazioni in FsRtlOplockFsctrlEx. STATUS_PENDING è un codice riuscito.
STATUS_CANNOT_GRANT_REQUESTED_OPLOCK Non è consentito un riconoscimento di oplock per un nuovo oplock. Il livello del file system superiore del blocco non è valido per il blocco del file system inferiore.

Requisiti

Requisito Valore
Client minimo supportato Windows 8.1
Piattaforma di destinazione Universale
Intestazione ntifs.h (include Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= APC_LEVEL

Vedi anche

FsRtlCheckUpperOplock

FsRtlOplockFsctrlEx