Freigeben über


FltOplockFsctrlEx-Funktion (fltkernel.h)

Die FltOplockFsctrlEx Routine führt verschiedene opportunistische Sperrvorgänge (Oplock) im Auftrag eines Minifiltertreibers aus.

Syntax

FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockFsctrlEx(
  [in] POPLOCK            Oplock,
  [in] PFLT_CALLBACK_DATA CallbackData,
  [in] ULONG              OpenCount,
  [in] ULONG              Flags
);

Parameter

[in] Oplock

Opaque oplock pointer for the file. Dieser Zeiger muss durch einen vorherigen Aufruf von FltInitializeOplockinitialisiert worden sein.

[in] CallbackData

Zeiger auf die FLT_CALLBACK_DATA Struktur für den E/A-Vorgang. Dieser Parameter ist erforderlich und kann nicht NULL-werden.

[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. Informationen zu Oplock-Typen finden Sie unter Oplock Overview.

[in] Flags

Eine Bitmaske für die zugeordneten Oplock-Vorgänge. Ein Minifiltertreiber legt Bits fest, um das Verhalten von FltOplockFsctrlExanzugeben. 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. Weitere Informationen zu Oplock-Typen finden Sie unter Oplock Overview.

Rückgabewert

FltOplockFsctrlEx gibt FLT_PREOP_PENDING für einige FSCTL-Vorgänge zurück. Weitere Informationen finden Sie auf den Referenzseiten für die FSCTL-Codes, die im folgenden Abschnitt "Hinweise" aufgeführt sind. Andernfalls gibt FltOplockFsctrlEx FLT_PREOP_COMPLETE zurück.

Bemerkungen

Ein Minifiltertreiber ruft FltOplockFsctrlEx- auf, um verschiedene opportunistische Sperrvorgänge für einen Erstellungs- oder Dateisystemsteuerungs-E/A-Vorgang auszuführen.

Die FLT_CALLBACK_DATA Struktur, auf die der CallbackData--Parameter verweist, muss einen IRP-basierten IRP_MJ_FILE_SYSTEM_CONTROL- oder IRP_MJ_CREATE-Vorgang darstellen.

Wenn es sich bei dem Vorgang um einen IRP_MJ_FILE_SYSTEM_CONTROL Vorgang handelt, können FltOplockFsctrlEx- mit den folgenden FSCTL-Codes verwendet werden:

Der FSCTL-Code wird im FsControlCode Member der FLT_PARAMETERS Struktur für den Vorgang festgelegt. Weitere Informationen zu FsControlCode- und anderen IRP_MJ_FILE_SYSTEM_CONTROL Parametern finden Sie unter FLT_PARAMETERS für IRP_MJ_FILE_SYSTEM_CONTROL.

Weitere Informationen zu opportunistischen Sperren finden Sie in der Microsoft Windows SDK-Dokumentation.

Wenn es sich bei dem Vorgang um eine IRP_MJ_CREATE Anforderung handelt, können FltOplockFsctrl verwendet werden, um eine ausstehende opportunistische Filtersperre anzufordern, wenn alle folgenden Bedingungen zutreffen:

  • Der Wert des OpenCount--Parameters muss 1 sein.
  • Der Wert des DesiredAccess-Parameters für die IRP_MJ_CREATE-Anforderung ist FILE_READ_ATTRIBUTES. Dieser Parameter wird im SecurityContext Member der FLT_PARAMETERS Struktur für den Vorgang festgelegt. Weitere Informationen finden Sie unter FLT_PARAMETERS für IRP_MJ_CREATE.
  • Der Wert des ShareAccess-Parameters für den IRP_MJ_CREATE Vorgang ist FILE_SHARE_READ, FILE_SHARE_WRITE oder FILE_SHARE_DELETE. Dieser Parameter wird im ShareAccess Member der FLT_PARAMETERS Struktur für den Vorgang festgelegt. Weitere Informationen finden Sie unter FLT_PARAMETERS für IRP_MJ_CREATE.

Filter und Dateisysteme, die diese Funktion aufrufen, müssen Aufrufe im vom System bereitgestellten Oplock-Paket synchronisieren. Weitere Informationen finden Sie unter Oplock-Synchronisierungs-.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Diese Routine ist ab Windows 8 verfügbar.
Zielplattform- Universal
Header- fltkernel.h (include Fltkernel.h)
Library FltMgr.lib
DLL- Fltmgr.sys
IRQL- <= APC_LEVEL

Siehe auch

FLT_CALLBACK_DATA

FLT_PARAMETERS für IRP_MJ_CREATE

FLT_PARAMETERS für IRP_MJ_FILE_SYSTEM_CONTROL

FSCTL_OPBATCH_ACK_CLOSE_PENDING

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplockEx

FltInitializeOplock

FsRtlOplockFsctrlEx

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL