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