estrutura FS_FILTER_CALLBACK_DATA (ntifs.h)

FS_FILTER_CALLBACK_DATA é a estrutura de dados de retorno de chamada para a operação de FS_FILTER_CALLBACK ou FS_FILTER_COMPLETION_CALLBACK de um FS_FILTER_CALLBACKS.

Sintaxe

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;

Membros

SizeOfFsFilterCallbackData

Tamanho dessa estrutura, em bytes. Defina como sizeof(FS_FILTER_CALLBACK_DATA).

Operation

Operação do sistema de arquivos para a qual a rotina de retorno de chamada deve ser invocada. Essa operação pode ser uma das seguintes:

  • 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 do sistema.

DeviceObject

Objeto de dispositivo para esta operação.

FileObject

Objeto de arquivo para esta operação.

Parameters

União que contém parâmetros específicos da operação. Consulte Observações.

Comentários

é um membro da estrutura FS_FILTER_CALLBACKS , que é passada para FsRtlRegisterFileSystemFilterCallbacks em um sistema de arquivos ou a rotina DriverEntry do driver de filtro.

A união Parâmetros é definida da seguinte maneira:


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;

Os membros da estrutura da união FS_FILTER_PARAMETERS são descritos da seguinte maneira.

  • AcquireForModifiedPageWriter

    • EndingOffset: deslocamento do último byte que está sendo gravado mais um.
    • ResourceToRelease: recurso a ser liberado. Esse parâmetro não deve ter um valor NULL .
  • ReleaseForModifiedPageWriter

    • ResourceToRelease: recurso a ser liberado. Esse parâmetro não deve ter um valor NULL .
  • AcquireForSectionSynchronization

    • SyncType: tipo de sincronização solicitado para a seção. Defina como SyncTypeCreateSection se uma seção estiver sendo criada; Caso contrário, SyncTypeOther .

    • PageProtection: tipo de proteção de página solicitada para a seção. Deve ser zero se SyncType for SyncTypeOther. Caso contrário, um dos seguintes sinalizadores, possivelmente ORed com 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: uma estrutura FS_FILTER_SECTION_SYNC_OUTPUT que contém as informações de saída estendidas da seção.

    • Sinalizadores: quando SyncType é SyncTypeCreateSection, Flags pode ser um dos seguintes valores:

      • FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_ACCESS (0x00000001): o sistema de arquivos não deve atualizar a hora do último acesso ao arquivo por meio da seção que está sendo criada.
      • FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_WRITE (0x00000002): o sistema de arquivos não deve atualizar o último tempo de gravação para modificações no arquivo por meio da seção que está sendo criada.
  • QueryOpen

    • Irp: ponteiro para o IRP associado a essa operação.

    • FileInformation: ponteiro para um buffer alocado pelo chamador no qual a rotina grava as informações solicitadas sobre o objeto de arquivo. O membro FileInformationClass especifica o tipo de informação que o chamador solicita.

    • Comprimento: o tamanho, em bytes, do buffer apontado por FileInformation.

    • CompletionStatus: um valor NTSTATUS que recebe a conclusão final status e informações sobre a operação. CompletionStatus pode ser definido pelo retorno de chamada PostQueryOpen para falhar na operação, pois os retornos de chamada pós não têm nenhum valor retornado. Isso é usado principalmente para que o retorno de chamada postQueryOpen possa retornar STATUS_FLT_DISALLOW_FSFILTER_IO para solicitar fallback para o caminho lento. Isso faz com que o gerenciador de E/S ate a solicitação executando uma abertura/consulta/fechamento do arquivo. Da mesma forma, o retorno de chamada PreQueryOpen pode retornar STATUS_FLT_DISALLOW_FSFILTER_IO para solicitar fallback para o caminho lento.

    • FileInformationClass: tipo de informação a ser retornado sobre o arquivo, no buffer para o qual FileInformation aponta. Os drivers intermediários e de dispositivo podem especificar qualquer um dos seguintes valores de FILE_INFORMATION_CLASS . Outros valores causam falha na chamada e não devem ser passados para chamadas PreQueryOpen/PostQueryOpen.

    FILE_INFORMATION_CLASS valor Tipo de informação retornada
    FileStatInformation Uma estrutura FILE_STAT_INFORMATION . Essa estrutura contém uma máscara de acesso. Para obter mais informações sobre máscaras de acesso, consulte ACCESS_MASK.
    FileStatLxInformation Uma estrutura FILE_STAT_LX_INFORMATION . Essa estrutura contém uma máscara de acesso. Para obter mais informações sobre máscaras de acesso, consulte ACCESS_MASK.
    FileCaseSensitiveInformation Uma estrutura FILE_CASE_SENSITIVE_INFORMATION .
  • Others

    • 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
Cabeçalho ntifs.h

Confira também

FS_FILTER_CALLBACKS

FsRtlRegisterFileSystemFilterCallbacks