Función FltOplockFsctrlEx (fltkernel.h)

La rutina FltOplockFsctrlEx realiza varias operaciones de bloqueo oportunista (oplock) en nombre de un controlador de minifiltro.

Sintaxis

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

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.

[in] Flags

Máscara de bits para las operaciones de interbloqueo asociadas. Un controlador de minifiltro establece bits para especificar el comportamiento de FltOplockFsctrlEx. El parámetro Flags tiene las siguientes opciones:

Valor Significado
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) El sistema de archivos comprobó que todas las claves de interbloqueo de los identificadores que están abiertos actualmente coinciden. Al especificar esta marca, se permite que el paquete de oplock conceda un interbloqueo de nivel RW o RWH cuando exista más de un identificador abierto para el archivo. Para obtener más información sobre los tipos de oplock, vea Información general sobre Oplock.

Valor devuelto

FltOplockFsctrlEx 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, FltOplockFsctrlEx devuelve FLT_PREOP_COMPLETE.

Comentarios

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

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, FltOplockFsctrlEx 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
Cliente mínimo compatible Esta rutina está disponible a partir de Windows 8.
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

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplockEx

FltInitializeOplock

FsRtlOplockFsctrlEx

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL