Поделиться через


Функция FltOplockFsctrl (fltkernel.h)

FltOplockFsctrl выполняет различные операции оппортунистической блокировки (oplock) от имени драйвера мини-фильтра.

Синтаксис

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

Параметры

[in] Oplock

Непрозрачный указатель oplock для файла. Этот указатель должен быть инициализирован предыдущим вызовом FltInitializeOplock.

[in] CallbackData

Указатель на структуру FLT_CALLBACK_DATA для операции ввода-вывода. Этот параметр является обязательным и не может быть null.

[in] OpenCount

Количество пользовательских дескрипторов для файла, если запрашивается монопольная блокировка. Задание ненулевого значения для запроса oplock уровня 2, R или RH указывает на наличие блокировок диапазона байтов в файле. Сведения о типах oplock см. в обзоре Oplock.

Возвращаемое значение

FltOplockFsctrl возвращает FLT_PREOP_PENDING для некоторых операций FSCTL. Дополнительные сведения см. на справочных страницах для кодов FSCTL, перечисленных в следующем разделе "Примечания". В противном случае FltOplockFsctrl возвращает FLT_PREOP_COMPLETE.

Замечания

Драйвер минифильтра вызывает FltOplockFsctrl для выполнения различных операций блокировки оппортунистических блокировок для операции создания или ввода-вывода файловой системы.

Структура FLT_CALLBACK_DATA, на которую указывает параметр CallbackData, должен представлять операцию IRP_MJ_FILE_SYSTEM_CONTROL или IRP_MJ_CREATE на основе IRP.

Если операция является операцией IRP_MJ_FILE_SYSTEM_CONTROL, FltOplockFsctrl можно использовать со следующими кодами FSCTL:

Код FSCTL задается в элементе FsControlCode структуры FLT_PARAMETERS для операции. Дополнительные сведения о FsControlCode и других параметрах IRP_MJ_FILE_SYSTEM_CONTROL см. в FLT_PARAMETERS IRP_MJ_FILE_SYSTEM_CONTROL.

Дополнительные сведения о оппортунистических блокировках см. в документации по пакету SDK для Microsoft Windows.

Если операция является запросом IRP_MJ_CREATE, FltOplockFsctrl можно использовать для запроса ожидающей блокировки фильтра оппортунистической блокировки, если все следующие условия верны:

  • Значение параметра OpenCount должно иметь значение 1.
  • Значение параметра DesiredAccess для запроса IRP_MJ_CREATE равно FILE_READ_ATTRIBUTES. Этот параметр задается в элементе SecurityContext структуры FLT_PARAMETERS для операции. Дополнительные сведения см. в FLT_PARAMETERS для IRP_MJ_CREATE.
  • Значение параметра ShareAccess для операции IRP_MJ_CREATE FILE_SHARE_READ, FILE_SHARE_WRITE или FILE_SHARE_DELETE. Этот параметр задается в элементе ShareAccess структуры FLT_PARAMETERS для операции. Дополнительные сведения см. в FLT_PARAMETERS для IRP_MJ_CREATE.

Фильтры и файловые системы, вызывающие эту функцию, должны синхронизировать вызовы в пакет oplock, предоставленный системой. Дополнительные сведения см. в синхронизации Oplock.

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка fltkernel.h (include Fltkernel.h)
библиотеки FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

См. также

FLT_CALLBACK_DATA

FLT_PARAMETERS для IRP_MJ_CREATE

FLT_PARAMETERS для 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