Funzione FsRtlOplockBreakH (ntifs.h)
Il FsRtlOplockBreakH routine interrompe CACHE_HANDLE_LEVEL blocchi opportunistici (oplock).
Sintassi
NTSTATUS FsRtlOplockBreakH(
[in] POPLOCK Oplock,
[in] PIRP Irp,
[in] ULONG Flags,
[in, optional] PVOID Context,
[in, optional] POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
[in, optional] POPLOCK_FS_PREPOST_IRP PostIrpRoutine
);
Parametri
[in] Oplock
Puntatore di blocco opportunistico 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] Flags
Maschera di bit per l'operazione di I/O di file associata. Un file system o un driver di filtro imposta i bit per specificare il comportamento di FsRtlOplockBreakH. Il parametro flag
OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)
Specifica di consentire a un'interruzione di oplock di continuare senza bloccare o in sospeso l'operazione che ha causato l'interruzione di oplock.
OPLOCK_FLAG_IGNORE_OPLOCK_KEYS (0x00000008)
Supportato in Windows 7 e versioni successive.
Specifica di consentire l'esecuzione di CACHE_HANDLE_LEVEL interruzioni di oplock indipendentemente dalla chiave oplock.
[in, optional] Context
Puntatore alle informazioni sul contesto definite dal chiamante da passare alle routine di callback a cui puntano
[in, optional] CompletionRoutine
Puntatore a una routine di callback fornita dal chiamante. Se è in corso un'interruzione di oplock, questa routine viene chiamata al completamento dell'interruzione. Questo parametro è facoltativo e può essere NULL. Se è NULL, il chiamante viene inserito in uno stato di attesa fino al completamento dell'interruzione oplock.
Questa routine viene dichiarata come segue:
typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
IN PVOID Context,
IN PIRP Irp
);
Questa routine presenta i parametri seguenti:
Contesto
Puntatore alle informazioni di contesto passato nel parametro Context
Irp
Puntatore all'IRP per l'operazione di I/O.
[in, optional] PostIrpRoutine
Puntatore a una routine di callback fornita dal chiamante da chiamare se l'operazione di I/O deve essere sospesa. La routine viene chiamata prima che il pacchetto oplock eseprima l'IRP. Questo parametro è facoltativo e può essere NULL.
Questa routine viene dichiarata come segue:
typedef VOID
(*POPLOCK_FS_PREPOST_IRP) (
IN PVOID Context,
IN PIRP Irp
);
Contesto
Puntatore alle informazioni di contesto passato nel parametro Context
Irp
Puntatore all'IRP per l'operazione di I/O.
Valore restituito
FsRtlOplockBreakH restituisce STATUS_SUCCESS o un codice NTSTATUS appropriato, ad esempio uno dei seguenti:
Codice restituito | Descrizione |
---|---|
|
L'IRP è stato annullato. STATUS_CANCELLED è un codice di errore. |
|
L'IRP è stato inserito in una coda di lavoro. STATUS_PENDING è un codice riuscito. |
|
Impossibile eseguire l'interruzione di blocco opportunistico (oplock). L'IRP è una richiesta di IRP_MJ_CREATE. FILE_OPEN_REQUIRING_OPLOCK è stato specificato nel parametro create options per l'operazione e viene concesso un oplock. STATUS_CANNOT_BREAK_OPLOCK è un codice di errore. |
Osservazioni
Quando un'operazione deve interrompere CACHE_HANDLE_LEVEL oplock, l'operazione chiama FsRtlOplockBreakH.
Se il chiamante specifica il flag di OPLOCK_FLAG_IGNORE_OPLOCK_KEYS nel parametro Flag
I minifiltri devono chiamare FltOplockBreakH anziché FsRtlOplockBreakH.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | La routine FsRtlOplockBreakH è disponibile a partire da Windows 7. |
piattaforma di destinazione | Universale |
intestazione |
ntifs.h (include Ntifs.h) |
libreria |
NtosKrnl.lib |
dll | NtosKrnl.exe |
IRQL | <= APC_LEVEL |