Controllo dello stato oplock di un'operazione di IRP_MJ_SET_INFORMATION
Le operazioni di IRP_MJ_SET_INFORMATION seguenti controllano lo stato di oplock:
- FileEndOfFileInformation
- FileAllocationInformation
- FileValidDataLengthInformation
- FileRenameInformation
- FileShortNameInformation
- FileLinkInformation
- FileDispositionInformation
Controllo dello stato di oplock per le operazioni FileEndOfFileInformation, FileAllocationInformation e FileValidDataLengthInformation
Queste informazioni si applicano quando vengono eseguite le operazioni seguenti su un file o un flusso:
Un chiamante tenta di modificare le dimensioni logiche del flusso. Si noti che quando il thread del writer lazy di Gestione cache tenta di impostare una nuova fine del file, non viene eseguito alcun controllo oplock. Ciò è dovuto al fatto che il controllo viene eseguito in precedenza quando viene ricevuta la richiesta di scrittura reale.
Un chiamante tenta di modificare le dimensioni allocate del flusso.
Condizioni per un tipo di richiesta di livello 2
Interrompi sempre su Nessuno.
Non è richiesto alcun riconoscimento; l'operazione procede immediatamente.
Condizioni per tutti gli altri tipi di richiesta
Interrompere il IRP_MJ_SET_INFORMATION (per FileEndOfFileInformation, FileAllocationInformation e FileValidDataLengthInformation) quando l'operazione si verifica su un FILE_OBJECT con una chiave oplock diversa dalla chiave del FILE_OBJECT proprietario dell'oplock. Se l'oplock è interrotto, impostare Nessuno.
I requisiti di riconoscimento variano nel modo seguente:
Richiesta di lettura: non è necessario alcun riconoscimento; l'operazione procede immediatamente.
Read-Handle richiesta: anche se è necessario il riconoscimento dell'interruzione, l'operazione continua immediatamente (ad esempio, senza attendere il riconoscimento).
Richieste di livello 1, batch, filtro, lettura/scrittura e handle di lettura/scrittura: prima che l'operazione continui, è necessario ricevere un riconoscimento.
Controllo dello stato oplock per le operazioni FileRenameInformation, FileShortNameInformation e FileLinkInformation
Queste informazioni si applicano quando vengono eseguite le operazioni seguenti su un file o un flusso:
Il file o il flusso viene rinominato.
Viene impostato un nome breve per il file.
Viene creato un collegamento rigido per il file. Ciò influisce sullo stato oplock se il nuovo collegamento rigido sostituisce un collegamento esistente a un file diverso e il blocco operativo esiste nel collegamento sostituito.
Viene rinominata una directory predecessore del flusso in cui si trova l'oplock oppure viene impostato il nome breve della directory predecessore.
Condizioni per le operazioni di livello 1, livello 2, lettura e Read-Write
L'oplock non è interrotto.
Non è necessario alcun acknowledgement e l'operazione procede immediatamente.
Condizioni per le operazioni batch, filtro, handle di lettura e di lettura/scrittura
Interrompere il IRP_MJ_SET_INFORMATION (per FileRenameInformation, FileShortNameInformation e FileLinkInformation) quando l'operazione si verifica su un FILE_OBJECT con una chiave oplock diversa dalla chiave del FILE_OBJECT proprietario dell'oplock. Se l'oplock è interrotto:
Le richieste batch e filtro si interrompono su Nessuno.
Read-Handle le richieste si interrompono in Lettura.
Le richieste read-Write-Handle si interrompono in lettura/scrittura.
Prima che l'operazione continui, è necessario ricevere un riconoscimento.
Controllo dello stato oplock per le operazioni FileDispositionInformation
Queste informazioni si applicano quando un chiamante tenta di eliminare il file.
Interrompere IRP_MJ_SET_INFORMATION (per FileDispositionInformation) quando l'operazione si verifica su un FILE_OBJECT con una chiave oplock diversa dalla chiave del FILE_OBJECT proprietario dell'oplock e quando FILE_DISPOSITION_INFORMATION. DeleteFile è TRUE**. Se l'oplock è interrotto:
Read-Handle le richieste si interrompono in Lettura.
Le richieste read-Write-Handle si interrompono in lettura/scrittura.
Prima che l'operazione continui, è necessario ricevere un riconoscimento.