Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die FsRtlOplockBreakH Routine bricht CACHE_HANDLE_LEVEL opportunistische Sperren (Oplocks).
Syntax
NTSTATUS FsRtlOplockBreakH(
[in] 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] Oplock
Ein undurchsichtiger opportunistischer Sperrzeiger 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 FsRtlOplockBreakHanzugeben. 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.
OPLOCK_FLAG_IGNORE_OPLOCK_KEYS (0x00000008)
Unterstützt in Windows 7 und höheren Versionen.
Gibt an, dass CACHE_HANDLE_LEVEL Oplockunterbrechungen unabhängig von der Oplocktaste fortgesetzt werden können.
[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 FsRtlOplockBreakHü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 FsRtlOplockBreakHübergeben wurde.
Irp
Ein Zeiger auf das IRP für den E/A-Vorgang.
Rückgabewert
FsRtlOplockBreakH gibt STATUS_SUCCESS oder einen geeigneten NTSTATUS-Code zurück, z. B. einen der folgenden:
Rückgabecode | Beschreibung |
---|---|
|
Das IRP wurde abgebrochen. STATUS_CANCELLED ist ein Fehlercode. |
|
Das IRP wurde in eine Arbeitswarteschlange gepostet. STATUS_PENDING ist ein Erfolgscode. |
|
Die opportunistische Sperre (Oplock) kann nicht erreicht werden. Das IRP ist eine IRP_MJ_CREATE Anforderung. FILE_OPEN_REQUIRING_OPLOCK wurde im Parameter "Create options" für den Vorgang angegeben, und es ist ein gewährter Oplock vorhanden. STATUS_CANNOT_BREAK_OPLOCK ist ein Fehlercode. |
Bemerkungen
Wenn ein Vorgang CACHE_HANDLE_LEVEL Oplocks unterbrechen muss, ruft der Vorgang FsRtlOplockBreakHauf.
Wenn der Aufrufer das OPLOCK_FLAG_IGNORE_OPLOCK_KEYS Flag im parameter Flags angibt, FsRtlOplockBreakH alle CACHE_HANDLE_LEVEL Oplocks unabhängig von der Oplock-Taste umbricht. Das Standardverhalten von FsRtlOplockBreakH besteht darin, Oplocks zu unterbrechen, deren Schlüssel nicht mit dem Schlüssel im Dateiobjekt des Aufrufers übereinstimmen.
Minifilter sollten FltOplockBreakH- anstelle von FsRtlOplockBreakHaufrufen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Die FsRtlOplockBreakH-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 |