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 |