Funzione FsRtlOplockBreakToNoneEx (ntifs.h)

La routine FsRtlOplockBreakToNoneEx interrompe immediatamente tutti i blocchi opportunistici (oplock) senza considerare alcuna chiave di oplock.

Sintassi

NTSTATUS FsRtlOplockBreakToNoneEx(
  [in, out]      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, out] 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] Flags

Maschera di bit per l'operazione di I/O del file associato. Un file system o un driver di filtro imposta bit per specificare il comportamento di FsRtlOplockBreakToNoneEx. Il parametro Flags include le opzioni seguenti:

OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)

Specifica per consentire a un'interruzione di oplock di procedere senza bloccare o in sospeso l'operazione che ha causato l'interruzione del blocco. In genere, questo flag viene usato solo se l'IRP che il parametro Irp punta a dichiarare un'operazione di IRP_MJ_CREATE.

[in, optional] Context

Puntatore a informazioni di contesto definite dal chiamante da passare alle routine di callback a cui puntano i parametri CompletionRoutine e PostIrpRoutine .

[in, optional] CompletionRoutine

Puntatore a una routine di callback fornita dal chiamante. Se un'interruzione di oplock è in corso, questa routine viene chiamata al termine 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 di blocco.

Questa routine viene dichiarata come segue:

typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
      IN PVOID Context,
      IN PIRP Irp
      );

Questa routine include i parametri seguenti:

Contesto

Puntatore alle informazioni di contesto passato al parametro Context a FsRtlOplockBreakToNoneEx.

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 pennata. La routine viene chiamata prima che il pacchetto oplock pend 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 al parametro Context a FsRtlOplockBreakToNoneEx.

Irp

Puntatore all'IRP per l'operazione di I/O.

Valore restituito

FsRtlOplockBreakToNoneEx 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
Un'interruzione di oplock è in corso. Pertanto, l'IRP è stato pennato. STATUS_PENDING è un codice riuscito.
STATUS_OPLOCK_BREAK_IN_PROGRESS
È in corso un'interruzione di blocco opportunistica (oplock). STATUS_OPLOCK_BREAK_IN_PROGRESS è un codice di esito positivo che FsRtlOplockBreakToNoneEx restituisce se il chiamante impostato OPLOCK_FLAG_COMPLETE_IF_OPLOCKED nel parametro Flags e deve essere interrotto un oplock.

Commenti

Per altre informazioni sui blocchi opportunistici, vedere la documentazione di Microsoft Windows SDK.

I minifilter devono chiamare FltOplockBreakToNoneEx anziché FsRtlOplockBreakToNoneEx.

Requisiti

Requisito Valore
Client minimo supportato La routine FsRtlOplockBreakToNoneEx è 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

Vedi anche

FltOplockBreakToNoneEx

FsRtlInitializeOplock