FsRtlOplockBreakToNoneEx-Funktion (ntifs.h)
Die FsRtlOplockBreakToNoneEx Routine bricht alle opportunistischen Sperren (Oplocks) sofort ohne Rücksicht auf oplock-Taste auf.
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 Oplockzeiger für die Datei. Dieser Zeiger muss durch einen vorherigen Aufruf von FsRtlInitializeOplockinitialisiert worden sein.
[in] Irp
Ein Zeiger auf das 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 FsRtlOplockBreakToNoneExanzugeben. Der parameter Flags verfügt über die folgenden Optionen:
OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)
Gibt an, dass ein Oplock-Unterbrechung fortgesetzt werden kann, ohne den Vorgang zu blockieren oder ausstehend, der den Oplock-Unterbrechung verursacht hat. In der Regel wird dieses Flag nur verwendet, wenn der IRP, auf den der Irp Parameter verweist, einen IRP_MJ_CREATE Vorgang deklariert.
[in, optional] Context
Ein Zeiger zum Aufrufen definierter Kontextinformationen, die an die Rückrufroutinen übergeben werden sollen, auf die die parameter CompletionRoutine und PostIrpRoutine Parameter verweisen.
[in, optional] CompletionRoutine
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
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
IN PVOID Context,
IN PIRP Irp
);
Diese Routine hat die folgenden Parameter:
Zusammenhang
Ein Kontextinformationspunkt, der im parameter Context an FsRtlOplockBreakToNoneExübergeben wurde.
Irp
Ein Zeiger auf das IRP für den E/A-Vorgang.
[in, optional] PostIrpRoutine
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
(*POPLOCK_FS_PREPOST_IRP) (
IN PVOID Context,
IN PIRP Irp
);
Zusammenhang
Ein Kontextinformationspunkt, der im parameter Context an FsRtlOplockBreakToNoneExübergeben wurde.
Irp
Ein Zeiger auf das IRP für den E/A-Vorgang.
Rückgabewert
FsRtlOplockBreakToNoneEx gibt STATUS_SUCCESS oder einen entsprechenden NTSTATUS-Code wie einen der folgenden zurück:
Rückgabecode | Beschreibung |
---|---|
|
Das IRP wurde abgebrochen. STATUS_CANCELLED ist ein Fehlercode. |
|
Eine Oplockpause ist im Gange. Daher wurde die IRP angestiftet. STATUS_PENDING ist ein Erfolgscode. |
|
Eine opportunistische Sperrpause (Oplock) ist im Gange. STATUS_OPLOCK_BREAK_IN_PROGRESS ist ein Erfolgscode, der FsRtlOplockBreakToNoneEx- zurückgibt, wenn der Aufrufer im parameter Flags festgelegt OPLOCK_FLAG_COMPLETE_IF_OPLOCKED und ein Oplock unterbrochen werden muss. |
Bemerkungen
Weitere Informationen zu opportunistischen Sperren finden Sie in der Microsoft Windows SDK-Dokumentation.
Minifilter sollten FltOplockBreakToNoneEx- anstelle von FsRtlOplockBreakToNoneEx-aufrufen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Die FsRtlOplockBreakToNoneEx-Routine ist ab Windows 7 verfügbar. |
Zielplattform- | Universal |
Header- | ntifs.h (einschließlich Ntifs.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | <= APC_LEVEL |