Condividi tramite


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 include le opzioni seguenti:

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 CompletionRoutine e PostIrpRoutine parametri.

[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 a FsRtlOplockBreakH.

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 a FsRtlOplockBreakH.

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
STATUS_CANCELLED
L'IRP è stato annullato. STATUS_CANCELLED è un codice di errore.
STATUS_PENDING
L'IRP è stato inserito in una coda di lavoro. STATUS_PENDING è un codice riuscito.
STATUS_CANNOT_BREAK_OPLOCK
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 , FsRtlOplockBreakH interrompe tutti gli oplock CACHE_HANDLE_LEVEL, indipendentemente dalla chiave oplock. Il comportamento predefinito di FsRtlOplockBreakH consiste nell'interrompere gli oplock le cui chiavi non corrispondono alla chiave nell'oggetto file del chiamante.

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

Vedere anche

FltOplockBreakH

FsRtlInitializeOplock