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 opque 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 necesario y no se puede null.
[in] OpenCount
Número de identificadores de usuario para el archivo, si se solicita un interbloqueo exclusivo. Si se establece un valor distinto de cero para una solicitud de interbloqueo de nivel 2, R o RH, se indica que hay bloqueos de intervalo de bytes en el archivo. Para obtener información sobre los tipos de interbloqueo, vea Información general de 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.
Observaciones
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 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:
- 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
El código FSCTL se establece en el FsControlCode miembro 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 los bloqueos oportunistas, consulte la documentación del SDK de Microsoft Windows.
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 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 de
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 de sincronización de Oplock para obtener más información.
Requisitos
Requisito | Valor |
---|---|
de la plataforma de destino de |
Universal |
encabezado de |
fltkernel.h (incluya Fltkernel.h) |
biblioteca de |
FltMgr.lib |
DLL de |
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