Freigeben über


FltOplockBreakToNoneEx-Funktion (fltkernel.h)

Die FltOplockBreakToNoneEx Routine bricht alle opportunistischen Sperren (Oplocks) sofort ohne Rücksicht auf oplock-Taste auf.

Syntax

FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockBreakToNoneEx(
  [in]           POPLOCK                                 Oplock,
  [in]           PFLT_CALLBACK_DATA                      CallbackData,
  [in]           ULONG                                   Flags,
  [in, optional] PVOID                                   Context,
  [in, optional] PFLTOPLOCK_WAIT_COMPLETE_ROUTINE        WaitCompletionRoutine,
  [in, optional] PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE PrePostCallbackDataRoutine
);

Parameter

[in] Oplock

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

[in] CallbackData

Ein Zeiger auf die Rückrufdatenstruktur (FLT_CALLBACK_DATA) für den E/A-Vorgang.

[in] Flags

Eine Bitmaske für den zugeordneten Datei-E/A-Vorgang. Ein Minifiltertreiber legt Bits fest, um das Verhalten von FltOplockBreakToNoneExanzugeben. Der parameter Flags verfügt über die folgenden Optionen:

OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)

Ermöglicht es einem Oplock-Unterbrechung, den Vorgang fortzusetzen, ohne den Vorgang zu blockieren oder ausstehend, der den Oplock-Unterbrechung verursacht hat. In der Regel wird dieses Flag nur verwendet, wenn der E/A-Vorgang, der durch die Rückrufdaten dargestellt wird, auf die der CallbackData Parameter verweist, ein IRP_MJ_CREATE Vorgang ist.

[in, optional] Context

Ein Zeiger zum Aufrufen definierter Kontextinformationen, die an die Rückrufroutinen übergeben werden sollen, auf die die WaitCompletionRoutine und PrePostCallbackDataRoutine Parameter verweisen.

[in, optional] WaitCompletionRoutine

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

Diese Routine wird wie folgt deklariert:

typedef VOID
(*PFLTOPLOCK_WAIT_COMPLETE_ROUTINE) (
    __in PFLT_CALLBACK_DATA CallbackData,
 __in_opt PVOID Context
      );

Diese Routine hat die folgenden Parameter:

CallbackData

Ein Zeiger auf die Rückrufdatenstruktur für den E/A-Vorgang.

Zusammenhang

Ein Kontextinformationspunkt, der im parameter Context an FltOplockBreakToNoneExübergeben wurde.

[in, optional] PrePostCallbackDataRoutine

Ein Zeiger auf eine vom Aufrufer bereitgestellte Rückrufroutine, die aufgerufen werden soll, wenn der E/A-Vorgang eingestiftet werden soll. Die Routine wird aufgerufen, bevor das Oplock-Paket die IRP übergibt. Dieser Parameter ist optional und kann NULL-werden.

Diese Routine wird wie folgt deklariert:

typedef VOID
(*PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE) (
    __in PFLT_CALLBACK_DATA CallbackData,
 __in_opt PVOID Context
      );

Diese Routine hat die folgenden Parameter:

CallbackData

Ein Zeiger auf die Rückrufdatenstruktur für den E/A-Vorgang.

Zusammenhang

Ein Kontextinformationspunkt, der im parameter Context an FltOplockBreakToNoneExübergeben wurde.

Rückgabewert

FltOplockBreakToNoneEx gibt einen der folgenden FLT_PREOP_CALLBACK_STATUS Codes zurück:

Rückgabecode Beschreibung
FLT_PREOP_COMPLETE
FltOplockBreakToNoneEx ein Poolzuordnungsfehler aufgetreten ist, oder ein Aufruf der FsRtlOplockBreakToNoneEx Funktion hat einen Fehler zurückgegeben. FltOplockBreakToNoneEx legt den Fehlercode im Status Member der IO_STATUS_BLOCK-Struktur fest. Die IO_STATUS_BLOCK Struktur wird im IoStatus- Member der FLT_CALLBACK_DATA Rückrufdatenstruktur angegeben. Der parameter CallbackData verweist auf diesen FLT_CALLBACK_DATA.
FLT_PREOP_PENDING
Es wurde eine Oplockunterbrechung initiiert, was dazu führte, dass der Filter-Manager den E/A-Vorgang in eine Arbeitswarteschlange einfügte. Der E/A-Vorgang wird durch die Rückrufdaten dargestellt, auf die der CallbackData Parameter verweist.
FLT_PREOP_SUCCESS_WITH_CALLBACK
Die Rückrufdaten, auf die der CallbackData Parameter verweist, wurde nicht mit Stift versehen, und der E/A-Vorgang wurde sofort ausgeführt. Beachten Sie folgendes: Wenn der Aufrufer OPLOCK_FLAG_COMPLETE_IF_OPLOCKED im parameter Flags angegeben hat, wird möglicherweise ein Oplock-Umbruch ausgeführt, obwohl der E/A-Vorgang nicht durchgestiftet wurde. Um festzustellen, ob dies die Situation ist, sollte der Aufrufer im Status- Mitglied der IO_STATUS_BLOCK-Struktur nach STATUS_OPLOCK_BREAK_IN_PROGRESS suchen. Die IO_STATUS_BLOCK Struktur wird im IoStatus- Member der FLT_CALLBACK_DATA Rückrufdatenstruktur angegeben.

Bemerkungen

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

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Die FltOplockBreakToNoneEx-Routine ist ab Windows 7 verfügbar.
Zielplattform- Universal
Header- fltkernel.h (include Fltkernel.h)
Library FltMgr.lib
DLL- Fltmgr.sys
IRQL- <= APC_LEVEL

Siehe auch

FLT_CALLBACK_DATA

FltInitializeOplock

FsRtlOplockBreakToNoneEx

IO_STATUS_BLOCK