FltOplockFsctrlEx-Funktion (fltkernel.h)
Die FltOplockFsctrlEx-Routine führt verschiedene oplock-Vorgänge (Opportunistic Lock) 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
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 Werts ungleich null 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 Übersicht über Oplock.
[in] Flags
Eine Bitmaske für die zugeordneten Oplockvorgänge. Ein Minifiltertreiber legt Bits fest, um das Verhalten von FltOplockFsctrlEx anzugeben. Der Flags-Parameter 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 derzeit geöffneten Handles übereinstimmen. Indem Sie dieses Flag angeben, erlauben Sie dem oplock-Paket, einen Oplock der Ebene RW oder RWH zu gewähren, wenn mehr als ein geöffnetes Handle für die Datei vorhanden ist. Weitere Informationen zu oplock-Typen finden Sie unter Übersicht über Oplock. |
Rückgabewert
FltOplockFsctrlEx 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 folgenden Abschnitt "Hinweise" aufgeführt sind. Andernfalls gibt FltOplockFsctrlEx FLT_PREOP_COMPLETE zurück.
Hinweise
Ein Minifiltertreiber ruft FltOplockFsctrlEx auf, um verschiedene opportunistische Sperrvorgänge für einen Erstellungsvorgang oder einen 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, kann FltOplockFsctrlEx mit den folgenden FSCTL-Codes verwendet werden:
- FSCTL_OPBATCH_ACK_CLOSE_PENDING
- FSCTL_OPLOCK_BREAK_ACK_NO_2
- FSCTL_OPLOCK_BREAK_ACKNOWLEDGE
- FSCTL_OPLOCK_BREAK_NOTIFY
- FSCTL_REQUEST_BATCH_OPLOCK
- FSCTL_REQUEST_FILTER_OPLOCK
- FSCTL_REQUEST_OPLOCK_LEVEL_1
- FSCTL_REQUEST_OPLOCK_LEVEL_2
- FSCTL_REQUEST_OPLOCK
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 Dokumentation zu Microsoft Windows SDK.
Wenn es sich bei dem Vorgang um eine IRP_MJ_CREATE-Anforderung handelt, kann FltOplockFsctrl verwendet werden, um eine ausstehende opportunistische Filtersperre anzufordern, wenn alle der folgenden Bedingungen erfüllt sind:
- 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-Element 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-Element 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 mit dem vom System bereitgestellten oplock-Paket synchronisieren. Weitere Informationen finden Sie unter Oplock-Synchronisierung .
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Diese Routine ist ab Windows 8 verfügbar. |
Zielplattform | Universell |
Header | fltkernel.h (fltkernel.h einschließen) |
Bibliothek | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |
Weitere Informationen
FLT_PARAMETERS für IRP_MJ_CREATE
FLT_PARAMETERS für IRP_MJ_FILE_SYSTEM_CONTROL
FSCTL_OPBATCH_ACK_CLOSE_PENDING