Compartir a través de


estructura FS_FILTER_CALLBACKS (ntifs.h)

La estructura FS_FILTER_CALLBACKS contiene los puntos de entrada de las rutinas de devolución de llamada proporcionadas por el autor de la llamada.

Sintaxis

typedef struct _FS_FILTER_CALLBACKS {
  ULONG                          SizeOfFsFilterCallbacks;
  ULONG                          Reserved;
  PFS_FILTER_CALLBACK            PreAcquireForSectionSynchronization;
  PFS_FILTER_COMPLETION_CALLBACK PostAcquireForSectionSynchronization;
  PFS_FILTER_CALLBACK            PreReleaseForSectionSynchronization;
  PFS_FILTER_COMPLETION_CALLBACK PostReleaseForSectionSynchronization;
  PFS_FILTER_CALLBACK            PreAcquireForCcFlush;
  PFS_FILTER_COMPLETION_CALLBACK PostAcquireForCcFlush;
  PFS_FILTER_CALLBACK            PreReleaseForCcFlush;
  PFS_FILTER_COMPLETION_CALLBACK PostReleaseForCcFlush;
  PFS_FILTER_CALLBACK            PreAcquireForModifiedPageWriter;
  PFS_FILTER_COMPLETION_CALLBACK PostAcquireForModifiedPageWriter;
  PFS_FILTER_CALLBACK            PreReleaseForModifiedPageWriter;
  PFS_FILTER_COMPLETION_CALLBACK PostReleaseForModifiedPageWriter;
  PFS_FILTER_CALLBACK            PreQueryOpen;
  PFS_FILTER_COMPLETION_CALLBACK PostQueryOpen;
} FS_FILTER_CALLBACKS, *PFS_FILTER_CALLBACKS;

Miembros

SizeOfFsFilterCallbacks

Tamaño de esta estructura, en bytes. Establezca en sizeof(FS_FILTER_CALLBACKS). sizeOfFsFilterCallbacks no debe establecerse en cero.

Reserved

Reservado. No use.

PreAcquireForSectionSynchronization

Puntero a una rutina de FS_FILTER_CALLBACK PreAcquireForSectionSynchronization.

PostAcquireForSectionSynchronization

Puntero a una rutina de FS_FILTER_CALLBACK PostAcquireForSectionSynchronization.

PreReleaseForSectionSynchronization

Puntero a una rutina de FS_FILTER_CALLBACK preReleaseForSectionSynchronization.

PostReleaseForSectionSynchronization

Puntero a una rutina de FS_FILTER_CALLBACK PostReleaseForSectionSynchronization.

PreAcquireForCcFlush

Puntero a una rutina de FS_FILTER_CALLBACK PreAcquireForCcFlush.

PostAcquireForCcFlush

Puntero a una rutina de FS_FILTER_CALLBACK PostAcquireForCcFlush.

PreReleaseForCcFlush

Puntero a una rutina de FS_FILTER_CALLBACK PreReleaseForCcFlush.

PostReleaseForCcFlush

Puntero a una rutina de FS_FILTER_CALLBACK PostReleaseForCcFlush.

PreAcquireForModifiedPageWriter

Puntero a una rutina de FS_FILTER_CALLBACK PreAcquireForModifiedPageWriter.

PostAcquireForModifiedPageWriter

Puntero a una rutina de postAcquireForModifiedPageWriter FS_FILTER_CALLBACK.

PreReleaseForModifiedPageWriter

Puntero a una rutina preReleaseForModifiedPageWriter de FS_FILTER_CALLBACK.

PostReleaseForModifiedPageWriter

Puntero a una rutina de FS_FILTER_CALLBACK PostReleaseForModifiedPageWriter.

PreQueryOpen

Puntero a una rutina de FS_FILTER_CALLBACK PreQueryOpen.

PostQueryOpen

Puntero a una rutina de FS_FILTER_CALLBACK PostQueryOpen.

Observaciones

Los controladores de filtro del sistema de archivos y los sistemas de archivos llaman a la rutina de FsRtlRegisterFileSystemFilterCallback s para registrar rutinas de devolución de llamada de notificación que se invocarán cuando el sistema de archivos subyacente realiza determinadas operaciones.

Todos los puntos de entrada de devolución de llamada son opcionales y se pueden NULL.

La rutina de devolución de llamada de filtro FS_FILTER_CALLBACK y sus parámetros se definen de la siguiente manera:


typedef
NTSTATUS (*PFS_FILTER_CALLBACK) (
    IN PFS_FILTER_CALLBACK_DATA Data,
    OUT PVOID *CompletionContext
);

Parámetro Significado
data Puntero a la estructura de FS_FILTER_CALLBACK_DATA para esta operación.
completionContext Información de contexto que se va a pasar a la rutina de devolución de llamada de finalización del filtro. Establézcalo en null si no se pasa información de contexto o si no hay ninguna rutina de devolución de llamada de finalización de filtros correspondiente.

La rutina de devolución de llamada de finalización del filtro FS_FILTER_COMPLETION_CALLBACK y sus parámetros se definen de la siguiente manera:


typedef
VOID (*PFS_FILTER_COMPLETION_CALLBACK) (
    IN PFS_FILTER_CALLBACK_DATA Data,
    IN NTSTATUS OperationStatus,
    IN PVOID CompletionContext
);

Parámetro Significado
data Puntero a la estructura de FS_FILTER_CALLBACK_DATA para esta operación.
OperationStatus Estado de la operación. Si el sistema de archivos realizó correctamente la operación, este parámetro se establece en STATUS_SUCCESS. De lo contrario, se establece en un valor de estado de error adecuado.
completionContext Información de contexto establecida en la rutina de devolución de llamada de filtro. Se establece en NULL si no se pasa ninguna información o si no hay ninguna rutina de devolución de llamada de filtro correspondiente.

Las rutinas de devolución de llamada se definen para las siguientes operaciones:

Operación Rutinas de devolución de llamada de notificación
El administrador de memoria adquiere un archivo exclusivamente antes de crear una sección asignada a memoria para una parte del archivo. Para esta operación, SyncType se establece en SyncTypeCreateSection. PreAcquireForSectionSynchronization, PostAcquireForSectionSynchronization
El administrador de memoria libera un archivo después de crear una sección asignada a memoria para una parte del archivo. PreReleaseForSectionSynchronization, PostReleaseForSectionSynchronization
Un componente de kernel (como el administrador de caché) adquiere un archivo exclusivamente antes de deshabilitar temporalmente la creación de secciones para una parte del archivo. Para esta operación, syncType se establece en SyncTypeOther. PreAcquireForSectionSynchronization, PostAcquireForSectionSynchronization. PreAcquireForSectionSynchronization siempre debe devolver un código de estado correcto (como STATUS_SUCCESS) para esta operación.
Un componente de kernel (como el administrador de caché) libera un archivo después de deshabilitar temporalmente la creación de secciones para una parte del archivo. PreReleaseForSectionSynchronization, PostReleaseForSectionSynchronization
El administrador de caché adquiere un archivo exclusivamente antes de vaciar una parte del archivo de la memoria caché. PreAcquireForCcFlush, PostAcquireForCcFlush
El administrador de caché libera un archivo después de vaciar una parte del archivo de la memoria caché. PreReleaseForCcFlush, PostReleaseForCcFlush
El escritor de páginas modificado adquiere un archivo exclusivamente antes de escribir una parte del archivo en el disco. PreAcquireForModifiedPageWriter, PostAcquireForModifiedPageWriter
El escritor de páginas modificado libera un archivo después de escribir una parte del archivo en el disco. PreReleaseForModifiedPageWriter, PostReleaseForModifiedPageWriter
Un componente consulta información de archivo por nombre sin abrir el archivo. Nunca se llamará a los redireccionadores con esta consulta y, por tanto, no es necesario implementar devoluciones de llamada PreQueryOpen o PostQueryOpen. PreQueryOpen, PostQueryOpen

La rutina de devolución de llamada de notificación de filtro se invoca antes de que la solicitud de operación se pase a los controladores de filtro de nivel inferior y al sistema de archivos subyacente. En la rutina de devolución de llamada, el controlador de filtro debe realizar cualquier procesamiento necesario y devolver inmediatamente STATUS_SUCCESS. Si la rutina de devolución de llamada de un controlador de filtro devuelve un valor de estado distinto de STATUS_SUCCESS, esto hace que se produzca un error en la solicitud de operación. El error repetido de determinadas solicitudes, como bloquear las solicitudes, puede detener el progreso del sistema. Por lo tanto, los controladores de filtro deben producir un error en esta solicitud solo cuando sea absolutamente necesario. Cuando se producen errores en estas solicitudes, el controlador de filtro debe devolver un valor de estado de error que describa el error lo más completo y preciso posible.

Nota

Una rutina de devolución de llamada de notificación del controlador de filtro no puede producir un error en una solicitud para liberar un recurso del sistema de archivos. Si un controlador de filtro devuelve un valor de estado distinto de STATUS_SUCCESS de cualquiera de las siguientes rutinas de devolución de llamada de notificación, se omite el valor de estado.

  • PreReleaseForSectionSynchronization
  • PreReleaseForCcFlush
  • PreReleaseForModifiedPageWriter

La rutina de devolución de llamada de finalización del filtro se invoca después de pasar la solicitud de operación a los controladores de filtro de nivel inferior y al sistema de archivos subyacente. En la rutina de devolución de llamada de finalización, el controlador de filtro debe realizar cualquier procesamiento necesario e devolver inmediatamente.

Requisitos

Requisito Valor
encabezado de ntifs.h

Consulte también

FS_FILTER_CALLBACK_DATA

FsRtlRegisterFileSystemFilterCallbacks