Condividi tramite


Funzione FsRtlUpperOplockFsctrl (ntifs.h)

Il FsRtlUpperOplockFsctrl routine elabora richieste di blocco opportunistico (oplock) e riconoscimenti per file system secondari o a più livelli. Il file system superiore invia lo stato dell'oplock mantenuto nel file system inferiore. FsRtlUpperOplockFsctrl determinerà 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 oplock di livello 2, R o RH indica che sono presenti blocchi di intervallo di byte nel file. 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 di lettura oplock (R).
OPLOCK_LEVEL_CACHE_WRITE Indica un tipo di scrittura oplock (W).
OPLOCK_LEVEL_CACHE_HANDLE Indica un tipo di handle oplock (H).

[in] Flags

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

Valore Significato
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) Il file system ha verificato che tutte le chiavi oplock in qualsiasi handle aperto corrispondano. Specificando questo flag, si consente al pacchetto oplock di concedere un oplock di livello RW o RWH quando sono presenti più handle aperti per il 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 oplock di 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 l'oplock. 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 Utilizzato 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 acknowledgement di oplock per un nuovo oplock. Il livello del file system superiore del blocco non è valido per l'oplock del file system inferiore.

Fabbisogno

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

Vedere anche

FsRtlCheckUpperOplock

FsRtlOplockFsctrlEx