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:
- 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
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_PARAMETERS para IRP_MJ_CREATE
FLT_PARAMETERS para IRP_MJ_FILE_SYSTEM_CONTROL
FSCTL_OPBATCH_ACK_CLOSE_PENDING