// fltkernel.h
FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockFsctrlEx(
[in] POPLOCK Oplock,
[in] PFLT_CALLBACK_DATA CallbackData,
[in] ULONG OpenCount,
[in] ULONG Flags
);
View the official Windows Driver Kit DDI referenceNo description available.
The FltOplockFsctrlEx routine performs various opportunistic lock (oplock) operations on behalf of a minifilter driver.
Oplock [in]Opaque oplock pointer for the file. This pointer must have been initialized by a previous call to FltInitializeOplock.
CallbackData [in]Pointer to the FLT_CALLBACK_DATA structure for the I/O operation. This parameter is required and cannot be NULL.
OpenCount [in]Number of user handles for the file, if an exclusive oplock is being requested. Setting a nonzero value for a level 2, R, or RH oplock request indicates that there are byte-range locks on the file. For information about oplock types, see Oplock Overview.
Flags [in]A bitmask for the associated oplock operations. A minifilter driver sets bits to specify the behavior of FltOplockFsctrlEx. The Flags parameter has the following options:
| Value | Meaning |
|---|---|
| OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) | The file system verified that all oplock keys on any handles that are currently open match. By specifying this flag, you allow the oplock package to grant an oplock of level RW or RWH when more than one open handle to the file exists. For more information about oplock types, see Oplock Overview. |
FltOplockFsctrlEx returns FLT_PREOP_PENDING for some FSCTL operations. For more information, see the reference pages for the FSCTL codes listed in the following Remarks section. Otherwise, FltOplockFsctrlEx returns FLT_PREOP_COMPLETE.
A minifilter driver calls FltOplockFsctrlEx to perform various opportunistic lock operations for a create operation or file system control I/O operation.
The FLT_CALLBACK_DATA structure pointed to by the CallbackData parameter must represent an IRP-based IRP_MJ_FILE_SYSTEM_CONTROL or IRP_MJ_CREATE operation.
If the operation is an IRP_MJ_FILE_SYSTEM_CONTROL operation, FltOplockFsctrlEx can be used with the following FSCTL codes:
The FSCTL code is set in the FsControlCode member of the FLT_PARAMETERS structure for the operation. For more information about FsControlCode and other IRP_MJ_FILE_SYSTEM_CONTROL parameters, see FLT_PARAMETERS for IRP_MJ_FILE_SYSTEM_CONTROL.
For more information about opportunistic locks, see the Microsoft Windows SDK documentation.
If the operation is an IRP_MJ_CREATE request, FltOplockFsctrl can be used to request a pending filter opportunistic lock if all of the following conditions are true:
Filters and file systems that call this function must synchronize calls into the system-supplied oplock package. See Oplock synchronization for more information.
FLT_PARAMETERS for IRP_MJ_CREATE
FLT_PARAMETERS for IRP_MJ_FILE_SYSTEM_CONTROL
FSCTL_OPBATCH_ACK_CLOSE_PENDING
FSCTL_OPLOCK_BREAK_ACKNOWLEDGE