Freigeben über


FsRtlUpperOplockFsctrl-Funktion (ntifs.h)

Die FsRtlUpperOplockFsctrl Routineprozesse opportunistische Sperranforderungen (Oplock)-Anforderungen und Bestätigungen für sekundäre oder layerierte Dateisysteme.The FsRtlOplockFsctrl routine processes opportunistic lock (oplock) requests and acknowledgments for secondary, or layered file systems. Das obere Dateisystem sendet den Zustand des oplock im unteren Dateisystem. FsRtlUpperOplockFsctrl bestimmt, ob das oplock des oberen Dateisystems gewährt oder verweigert werden soll.

Syntax

NTSTATUS FsRtlUpperOplockFsctrl(
  [in] POPLOCK Oplock,
  [in] PIRP    Irp,
  [in] ULONG   OpenCount,
  [in] ULONG   LowerOplockState,
  [in] ULONG   Flags
);

Parameter

[in] 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] OpenCount

Anzahl der Benutzerhandles für die Datei, wenn ein exklusiver Oplock angefordert wird. Wenn Sie einen Wert ungleich Null für eine Oplockanforderung der Ebene 2, R oder RH festlegen, wird angegeben, dass die Datei über Bytebereichssperren verfügt. Weitere Informationen zu Oplock-Typen finden Sie unter Typen von Oplocks.

[in] LowerOplockState

Der Wert der unteren Oplock-Ebene, die vom oberen Dateisystem gehalten wird. Dies ist eine bitweise OR-Kombination der folgenden:

Wert Bedeutung
OPLOCK_LEVEL_CACHE_READ Gibt einen Oplock Read (R)-Typ an.
OPLOCK_LEVEL_CACHE_WRITE Gibt einen Oplock Write -Typ (W) an.
OPLOCK_LEVEL_CACHE_HANDLE Gibt einen Oplock Handle (H)-Typ an.

[in] Flags

Eine Bitmaske für die zugeordneten Oplock-Vorgänge. Ein Dateisystem oder Filtertreiber legt Bits fest, um das Verhalten von FsRtlUpperOplockFsctrlanzugeben. Der parameter Flags verfügt über die folgenden Optionen:

Wert Bedeutung
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) Das Dateisystem hat überprüft, ob alle Oplock-Schlüssel auf allen aktuell geöffneten Handles übereinstimmen. Wenn Sie dieses Kennzeichen angeben, können Sie dem Oplock-Paket ein Oplock der Ebene RW oder RWH gewähren, wenn mehr als ein geöffnetes Handle für die Datei vorhanden ist.

Rückgabewert

FsRtlUpperOplockFsctrl gibt einen der folgenden NTSTATUS-Werte zurück:

Rückgabecode Beschreibung
STATUS_SUCCESS Für eine IRP_MJ_CREATE Anforderung gibt STATUS_SUCCESS an, dass die angeforderte opportunistische Sperre (Oplock) des Filters gewährt wurde. Bei einem FSCTL-Vorgang hängt die Bedeutung von STATUS_SUCCESS vom FSCTL-Code ab. Weitere Informationen finden Sie im Abschnitt "Hinweise" in FsRtlOplockFsctrlEx.
STATUS_CANCELLED Der E/A-Vorgang wurde abgebrochen. STATUS_CANCELLED ist ein Fehlercode.
STATUS_INVALID_PARAMETER Der FSCTL-Code für den E/A-Vorgang war keine gültige Oplock-Anforderung. Gültige Anforderungstypen werden im Abschnitt "Hinweise" von FsRtlOplockFsctrlExaufgeführt. STATUS_INVALID_PARAMETER ist ein Fehlercode.
STATUS_OPLOCK_NOT_GRANTED Der Oplock konnte nicht gewährt werden. Die Ebene des angeforderten oplock des oberen Dateisystems ist für das oplock ungültig, das für das untere Dateisystem gewährt wurde. STATUS_OPLOCK_NOT_GRANTED ist ein Fehlercode.
STATUS_PENDING Wird nur für FSCTL-Vorgänge verwendet. Die Bedeutung von STATUS_PENDING hängt vom FSCTL-Code ab. Weitere Informationen finden Sie im Abschnitt "Hinweise" in FsRtlOplockFsctrlEx. STATUS_PENDING ist ein Erfolgscode.
STATUS_CANNOT_GRANT_REQUESTED_OPLOCK Eine Oplock-Bestätigung für einen neuen Oplock ist nicht zulässig. Die Ebene des oberen Dateisystems der Sperre ist für das niedrigere Dateisystem-Oplock ungültig.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 8.1
Zielplattform- Universal
Header- ntifs.h (einschließlich Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- IRQL-<= APC_LEVEL

Siehe auch

FsRtlCheckUpperOplock

FsRtlOplockFsctrlEx