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 |