Compartir a través de


estructura FS_FILTER_CALLBACK_DATA (ntifs.h)

FS_FILTER_CALLBACK_DATA es la estructura de datos de devolución de llamada para una operación de FS_FILTER_CALLBACK o FS_FILTER_COMPLETION_CALLBACK de un FS_FILTER_CALLBACKS.

Sintaxis

typedef struct _FS_FILTER_CALLBACK_DATA {
  ULONG                 SizeOfFsFilterCallbackData;
  UCHAR                 Operation;
  UCHAR                 Reserved;
  struct _DEVICE_OBJECT *DeviceObject;
  struct _FILE_OBJECT   *FileObject;
  FS_FILTER_PARAMETERS  Parameters;
} FS_FILTER_CALLBACK_DATA, *PFS_FILTER_CALLBACK_DATA;

Miembros

SizeOfFsFilterCallbackData

Tamaño de esta estructura, en bytes. Establézcalo en sizeof(FS_FILTER_CALLBACK_DATA).

Operation

Operación del sistema de archivos para la que se va a invocar la rutina de devolución de llamada. Esta operación puede ser una de las siguientes:

  • FS_FILTER_ACQUIRE_FOR_SECTION_SYNCHRONIZATION
  • FS_FILTER_RELEASE_FOR_SECTION_SYNCHRONIZATION
  • FS_FILTER_ACQUIRE_FOR_MOD_WRITE
  • FS_FILTER_RELEASE_FOR_MOD_WRITE
  • FS_FILTER_ACQUIRE_FOR_CC_FLUSH
  • FS_FILTER_RELEASE_FOR_CC_FLUSH FS_FILTER_QUERY_OPEN

Reserved

Reservado para uso del sistema.

DeviceObject

Objeto de dispositivo para esta operación.

FileObject

Objeto de archivo para esta operación.

Parameters

Unión que contiene cualquier parámetro específico de la operación. Vea la sección Comentarios.

Comentarios

es miembro de la estructura FS_FILTER_CALLBACKS , que se pasa a FsRtlRegisterFileSystemFilterCallbacks en un sistema de archivos o en la rutina DriverEntry del controlador de filtro.

La unión de parámetros se define de la siguiente manera:


typedef union _FS_FILTER_PARAMETERS {
    //
    //  AcquireForModifiedPageWriter
    //
    struct {
        PLARGE_INTEGER EndingOffset;
        PERESOURCE *ResourceToRelease;
    } AcquireForModifiedPageWriter;

    //
    //  ReleaseForModifiedPageWriter
    //
    struct {
        PERESOURCE ResourceToRelease;
    } ReleaseForModifiedPageWriter;

    //
    //  AcquireForSectionSynchronization
    //
    struct {
        FS_FILTER_SECTION_SYNC_TYPE SyncType;
        ULONG PageProtection;
        PFS_FILTER_SECTION_SYNC_OUTPUT OutputInformation;
        ULONG Flags;
    } AcquireForSectionSynchronization;

    //
    // QueryOpen
    //
    struct {
        PIRP Irp;
        PVOID FileInformation;
        PULONG Length;
        FILE_INFORMATION_CLASS FileInformationClass;
        NTSTATUS CompletionStatus;
    } QueryOpen;

    //
    //  Other
    //
    struct {
        PVOID Argument1;
        PVOID Argument2;
        PVOID Argument3;
        PVOID Argument4;
        PVOID Argument5;
    } Others;
} FS_FILTER_PARAMETERS, *PFS_FILTER_PARAMETERS;

Los miembros de estructura de la unión FS_FILTER_PARAMETERS se describen de la siguiente manera.

  • AcquireForModifiedPageWriter

    • EndingOffset: desplazamiento del último byte que se escribe más uno.
    • ResourceToRelease: recurso que se va a liberar. Este parámetro no debe tener un valor NULL .
  • ReleaseForModifiedPageWriter

    • ResourceToRelease: recurso que se va a liberar. Este parámetro no debe tener un valor NULL .
  • AcquireForSectionSynchronization

    • SyncType: tipo de sincronización solicitada para la sección. Establézcalo en SyncTypeCreateSection si se crea una sección; SyncTypeOther otherwise.

    • PageProtection: tipo de protección de página solicitada para la sección. Debe ser cero si SyncType es SyncTypeOther. De lo contrario, una de las siguientes marcas, posiblemente ORed con PAGE_NOCACHE:

      • PAGE_NOACCESS
      • PAGE_READONLY
      • PAGE_READWRITE
      • PAGE_WRITECOPY
      • PAGE_EXECUTE
      • PAGE_EXECUTE_READ
      • PAGE_EXECUTE_READWRITE
      • PAGE_EXECUTE_WRITECOPY
      • PAGE_GUARD
      • PAGE_NOCACHE
      • PAGE_WRITECOMBINE
    • OutputInformation: estructura FS_FILTER_SECTION_SYNC_OUTPUT que contiene la información de salida extendida de la sección.

    • Marcas: cuando SyncType es SyncTypeCreateSection, las marcas pueden ser uno de los siguientes valores:

      • FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_ACCESS (0x00000001): el sistema de archivos no debe actualizar la última hora de acceso para el acceso al archivo a través de la sección que se está creando.
      • FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_WRITE (0x00000002): el sistema de archivos no debe actualizar la última hora de escritura para las modificaciones en el archivo a través de la sección que se está creando.
  • QueryOpen

    • Irp: puntero al IRP asociado a esta operación.

    • FileInformation: puntero a un búfer asignado por el autor de la llamada en el que la rutina escribe la información solicitada sobre el objeto de archivo. El miembro FileInformationClass especifica el tipo de información que solicita el autor de la llamada.

    • Longitud: tamaño, en bytes, del búfer al que apunta FileInformation.

    • CompletionStatus: valor NTSTATUS que recibe el estado de finalización final e información sobre la operación. CompletionStatus se puede establecer mediante la devolución de llamada PostQueryOpen para que se produzca un error en la operación, ya que las devoluciones de llamada posteriores no tienen ningún valor devuelto. Esto se usa principalmente para que la devolución de llamada PostQueryOpen pueda devolver STATUS_FLT_DISALLOW_FSFILTER_IO para solicitar la reserva a la ruta de acceso lenta. Al hacerlo, el administrador de E/S atenderá la solicitud realizando una apertura, consulta o cierre del archivo. Del mismo modo, la devolución de llamada PreQueryOpen puede devolver STATUS_FLT_DISALLOW_FSFILTER_IO para solicitar reserva a la ruta de acceso lenta.

    • FileInformationClass: tipo de información a la que se va a devolver el archivo, en el búfer al que apunta FileInformation . Los controladores intermedios y de dispositivo pueden especificar cualquiera de los siguientes valores de FILE_INFORMATION_CLASS . Otros valores provocan un error en la llamada y no se deben pasar a las llamadas PreQueryOpen/PostQueryOpen.

    FILE_INFORMATION_CLASS valor Tipo de información devuelta
    FileStatInformation Estructura FILE_STAT_INFORMATION . Esta estructura contiene una máscara de acceso. Para obtener más información sobre las máscaras de acceso, consulte ACCESS_MASK.
    FileStatLxInformation Estructura FILE_STAT_LX_INFORMATION . Esta estructura contiene una máscara de acceso. Para obtener más información sobre las máscaras de acceso, consulte ACCESS_MASK.
    FileCaseSensitiveInformation Estructura de FILE_CASE_SENSITIVE_INFORMATION .
  • Otros

    • Argument1: reservado para uso futuro.
    • Argument2: reservado para uso futuro.
    • Argument3: reservado para uso futuro.
    • Argumento4: reservado para uso futuro.
    • Argumento5: reservado para uso futuro.

Requisitos

Requisito Valor
Header ntifs.h

Consulte también

FS_FILTER_CALLBACKS

FsRtlRegisterFileSystemFilterCallbacks