Compartir a través de


Función FltOplockFsctrl (fltkernel.h)

FltOplockFsctrl realiza varias operaciones de bloqueo oportunista (oplock) en nombre de un controlador de minifiltro.

Sintaxis

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

Parámetros

[in] Oplock

Puntero oplock oppac para el archivo. Este puntero debe haberse inicializado mediante una llamada anterior a FltInitializeOplock.

[in] CallbackData

Puntero a la estructura de FLT_CALLBACK_DATA para la operación de E/S. Este parámetro es obligatorio y no puede ser NULL.

[in] OpenCount

Número de identificadores de usuario para el archivo, si se solicita un interbloqueo exclusivo. Establecer un valor distinto de cero para una solicitud de interbloqueo de nivel 2, R o RH indica que hay bloqueos de intervalo de bytes en el archivo. Para obtener información sobre los tipos de interbloqueo, consulte Información general sobre Oplock.

Valor devuelto

FltOplockFsctrl devuelve FLT_PREOP_PENDING para algunas operaciones FSCTL. Para obtener más información, vea las páginas de referencia de los códigos FSCTL enumerados en la siguiente sección Comentarios. De lo contrario, FltOplockFsctrl devuelve FLT_PREOP_COMPLETE.

Comentarios

Un controlador de minifiltro llama a FltOplockFsctrl para realizar varias operaciones de bloqueo oportunistas para una operación de E/S de control de sistema de archivos o de creación.

La estructura de FLT_CALLBACK_DATA a la que apunta el parámetro CallbackData debe representar una operación de IRP_MJ_FILE_SYSTEM_CONTROL o IRP_MJ_CREATE basada en IRP.

Si la operación es una operación de IRP_MJ_FILE_SYSTEM_CONTROL, FltOplockFsctrl se puede usar con los siguientes códigos FSCTL:

El código FSCTL se establece en el miembro FsControlCode de la estructura FLT_PARAMETERS para la operación. Para obtener más información sobre FsControlCode y otros parámetros de IRP_MJ_FILE_SYSTEM_CONTROL, consulte FLT_PARAMETERS para IRP_MJ_FILE_SYSTEM_CONTROL.

Para obtener más información sobre bloqueos oportunistas, consulte la documentación de Microsoft Windows SDK.

Si la operación es una solicitud de IRP_MJ_CREATE , FltOplockFsctrl se puede usar para solicitar un bloqueo oportunista de filtro pendiente si se cumplen todas las condiciones siguientes:

  • El valor del parámetro OpenCount debe ser 1.
  • El valor del parámetro DesiredAccess para la solicitud de IRP_MJ_CREATE es FILE_READ_ATTRIBUTES. Este parámetro se establece en el miembro SecurityContext de la estructura FLT_PARAMETERS para la operación. Para obtener más información, consulte FLT_PARAMETERS para IRP_MJ_CREATE.
  • El valor del parámetro ShareAccess para la operación de IRP_MJ_CREATE es FILE_SHARE_READ, FILE_SHARE_WRITE o FILE_SHARE_DELETE. Este parámetro se establece en el miembro shareAccess de la estructura de FLT_PARAMETERS para la operación. Para obtener más información, consulte FLT_PARAMETERS para IRP_MJ_CREATE.

Los filtros y los sistemas de archivos que llaman a esta función deben sincronizar las llamadas al paquete de oplock proporcionado por el sistema. Consulte Sincronización de oplock para obtener más información.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado fltkernel.h (incluya Fltkernel.h)
Library FltMgr.lib
Archivo DLL Fltmgr.sys
IRQL <= APC_LEVEL

Consulte también

FLT_CALLBACK_DATA

FLT_PARAMETERS para IRP_MJ_CREATE

FLT_PARAMETERS para 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