Freigeben über


FltOplockFsctrl-Funktion (fltkernel.h)

FltOplockFsctrl führt verschiedene oplock-Vorgänge (Opportunistic Lock) im Auftrag eines Minifiltertreibers aus.

Syntax

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

Parameter

[in] Oplock

Undurchsichtiger Oplockzeiger für die Datei. Dieser Zeiger muss durch einen vorherigen Aufruf von FltInitializeOplock initialisiert worden sein.

[in] CallbackData

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

[in] OpenCount

Anzahl der Benutzerhandles für die Datei, wenn ein exklusiver Oplock angefordert wird. Das Festlegen eines nonzero-Werts für eine Oplockanforderung der Ebene 2, R oder RH gibt an, dass für die Datei Bytebereichssperren vorhanden sind. Informationen zu Oplock-Typen finden Sie unter Oplock Overview.

Rückgabewert

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

Hinweise

Ein Minifiltertreiber ruft FltOplockFsctrl auf, um verschiedene opportunistische Sperrvorgänge für einen E/A-Vorgang zur Erstellung oder Dateisystemsteuerung 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, kann FltOplockFsctrl mit den folgenden FSCTL-Codes verwendet werden:

Der FSCTL-Code wird im FsControlCode-Element 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, kann FltOplockFsctrl verwendet werden, um eine ausstehende filteroprtunistische Sperre 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 in das vom System bereitgestellte oplock-Paket synchronisieren. Weitere Informationen finden Sie unter Oplock-Synchronisierung .

Anforderungen

Anforderung Wert
Zielplattform Universell
Header fltkernel.h (include Fltkernel.h)
Bibliothek FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Weitere Informationen

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_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplock

FltCurrentBatchOplock

FltInitializeOplock

FltOplockIsFastIoPossible

FltUninitializeOplock

FsRtlOplockFsctrl

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL