FsRtlOplockBreakToNoneEx-Funktion (ntifs.h)

Die FsRtlOplockBreakToNoneEx-Routine unterbricht alle opportunistischen Sperren (Oplocks) sofort ohne Rücksicht auf einen oplock-Schlüssel.

Syntax

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
);

Parameter

[in, out] Oplock

Ein undurchsichtiger Oplock-Zeiger für die Datei. Dieser Zeiger muss durch einen vorherigen Aufruf von FsRtlInitializeOplock initialisiert worden sein.

[in] Irp

Ein Zeiger auf den IRP für den E/A-Vorgang.

[in] Flags

Eine Bitmaske für den zugeordneten Datei-E/A-Vorgang. Ein Dateisystem oder Filtertreiber legt Bits fest, um das Verhalten von FsRtlOplockBreakToNoneEx anzugeben. Der Flags-Parameter verfügt über die folgenden Optionen:

OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)

Gibt an, dass ein Oplock-Umbruch fortgesetzt werden kann, ohne den Vorgang zu blockieren oder ausstehen zu lassen, der den Oplock-Umbruch verursacht hat. In der Regel wird dieses Flag nur verwendet, wenn das IRP, auf das der Irp-Parameter verweist, einen IRP_MJ_CREATE Vorgang deklariert.

[in, optional] Context

Ein Zeiger auf vom Aufrufer definierte Kontextinformationen, die an die Rückrufroutine übergeben werden sollen, auf die die CompletionRoutine - und PostIrpRoutine-Parameter verweisen.

[in, optional] CompletionRoutine

Ein Zeiger auf eine vom Anrufer bereitgestellte Rückrufroutine. Wenn ein Oplock-Umbruch ausgeführt wird, wird diese Routine aufgerufen, wenn die Unterbrechung abgeschlossen ist. Dieser Parameter ist optional und kann NULL sein. Wenn es NULL ist, wird der Aufrufer in einen Wartezustand versetzt, bis die Oplock-Umbruch abgeschlossen ist.

Diese Routine wird wie folgt deklariert:

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

Diese Routine hat die folgenden Parameter:

Kontext

Ein Kontextinformationszeiger, der im Context-Parameter an FsRtlOplockBreakToNoneEx übergeben wurde.

Irp

Ein Zeiger auf den IRP für den E/A-Vorgang.

[in, optional] PostIrpRoutine

Ein Zeiger auf eine vom Anrufer bereitgestellte Rückrufroutine, die aufgerufen werden soll, wenn der E/A-Vorgang geschrieben werden soll. Die Routine wird aufgerufen, bevor das oplock-Paket den IRP aufgibt. Dieser Parameter ist optional und kann NULL sein.

Diese Routine wird wie folgt deklariert:

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

Kontext

Ein Kontextinformationszeiger, der im Context-Parameter an FsRtlOplockBreakToNoneEx übergeben wurde.

Irp

Ein Zeiger auf den IRP für den E/A-Vorgang.

Rückgabewert

FsRtlOplockBreakToNoneEx gibt STATUS_SUCCESS oder einen entsprechenden NTSTATUS-Code zurück, z. B. einen der folgenden:

Rückgabecode Beschreibung
STATUS_CANCELLED
Die IRP wurde abgebrochen. STATUS_CANCELLED ist ein Fehlercode.
STATUS_PENDING
Ein Oplock-Break ist im Gange. Daher wurde die IRP geschrieben. STATUS_PENDING ist ein Erfolgscode.
STATUS_OPLOCK_BREAK_IN_PROGRESS
Ein opportunistischer Sperrbruch (Oplock) ist im Gange. STATUS_OPLOCK_BREAK_IN_PROGRESS ist ein Erfolgscode, den FsRtlOplockBreakToNoneEx zurückgibt, wenn der Aufrufer im Flags-Parameter OPLOCK_FLAG_COMPLETE_IF_OPLOCKED festgelegt hat und ein Oplock unterbrochen werden muss.

Hinweise

Weitere Informationen zu opportunistischen Sperren finden Sie in der Microsoft Windows SDK-Dokumentation.

Minifilter sollten FltOplockBreakToNoneEx anstelle von FsRtlOplockBreakToNoneEx aufrufen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Die FsRtlOplockBreakToNoneEx-Routine ist ab Windows 7 verfügbar.
Zielplattform Universell
Header ntifs.h (include Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Weitere Informationen

FltOplockBreakToNoneEx

FsRtlInitializeOplock