FLT_PARAMETERS para IRP_MJ_DIRECTORY_CONTROL união

Componente union usado quando o campo MajorFunction da estrutura FLT_IO_PARAMETER_BLOCK para a operação é IRP_MJ_DIRECTORY_CONTROL.

Sintaxe

typedef union _FLT_PARAMETERS {
  ...   ;
  union {
    struct {
      ULONG                   Length;
      PUNICODE_STRING         FileName;
      FILE_INFORMATION_CLASS  FileInformationClass;
      ULONG POINTER_ALIGNMENT FileIndex;
      PVOID                   DirectoryBuffer;
      PMDL                    MdlAddress;
    } QueryDirectory;
    struct {
      ULONG                   Length;
      ULONG POINTER_ALIGNMENT CompletionFilter;
      ULONG                   Spare1;
      ULONG POINTER_ALIGNMENT Spare2;
      PVOID                   DirectoryBuffer;
      PMDL                    MdlAddress;
    } NotifyDirectory;
  } DirectoryControl;
  ...   ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

Membros

  • DirectoryControl: estrutura que contém os seguintes membros.

  • QueryDirectory: componente union usado para operações de IRP_MN_QUERY_DIRECTORY.

  • Comprimento: comprimento, em bytes, do buffer para o qual o membro QueryDirectory.DirectoryBuffer aponta.

  • FileName: ponteiro para uma estrutura UNICODE_STRING que contém o nome de um arquivo dentro do diretório especificado.

  • FileInformationClass: especifica um dos valores descritos abaixo.

    Valor Significado
    FileBothDirectoryInformation Retornar uma estrutura de FILE_BOTH_DIR_INFORMATION para cada arquivo.
    FileDirectoryInformation Retornar uma estrutura de FILE_DIRECTORY_INFORMATION para cada arquivo.
    FileFullDirectoryInformation Retornar uma estrutura de FILE_FULL_DIR_INFORMATION para cada arquivo.
    FileIdBothDirectoryInformation Retornar uma estrutura FILE_ID_BOTH_DIR_INFORMATION para cada arquivo.
    FileIdFullDirectoryInformation Retornar uma estrutura de FILE_ID_FULL_DIR_INFORMATION para cada arquivo.
    FileNamesInformation Retornar uma estrutura de FILE_NAMES_INFORMATION para cada arquivo.
    FileObjectIdInformation Retornar uma estrutura de FILE_OBJECTID_INFORMATION para cada arquivo.
    FileReparsePointInformation Retornar uma única estrutura de FILE_REPARSE_POINT_INFORMATION para o diretório.
  • FileIndex: índice do arquivo em que a verificação de diretório começa. Ignorado se o sinalizador SL_INDEX_SPECIFIED não estiver definido. Esse parâmetro não pode ser especificado em nenhuma função win32 ou rotina de suporte do modo kernel. Atualmente, ele é usado apenas pela máquina virtual NT DOS (NTVDM), que existe apenas em sistemas operacionais baseados em NT de 32 bits. Observe que o índice de arquivo é indefinido para sistemas de arquivos, como o NTFS, no qual a posição de um arquivo dentro do diretório pai não é fixa e pode ser alterada a qualquer momento para manter a ordem de classificação.

  • DirectoryBuffer: ponteiro para um buffer de saída fornecido pelo chamador que recebe as informações solicitadas sobre o conteúdo do diretório. Esse membro é opcional e pode ser NULL se um MDL for fornecido em QueryDirectory.MdlAddress. Veja os Comentários.

  • MdlAddress: endereço de uma MDL (lista de descritores de memória) que descreve o buffer para o qual o membro QueryDirectory.DirectoryBuffer aponta. Esse membro é opcional e pode ser NULL se um buffer for fornecido em QueryDirectory.DirectoryBuffer. Veja os Comentários.

  • NotifyDirectory: componente union usado para operações de IRP_MN_NOTIFY_CHANGE_DIRECTORY.

  • Comprimento: comprimento, em bytes, do buffer para o qual o membro NotifyDirectory.DirectoryBuffer aponta.

  • CompletionFilter: bitmask de sinalizadores que especificam os tipos de alterações em arquivos ou diretórios que devem fazer com que os IRPs na lista de notificação sejam concluídos. Os possíveis valores de sinalizador são descritos a seguir.

    Sinalizador Significado
    FILE_NOTIFY_CHANGE_FILE_NAME Um arquivo foi adicionado, excluído ou renomeado neste diretório.
    FILE_NOTIFY_CHANGE_DIR_NAME Um subdiretório foi criado, removido ou renomeado.
    FILE_NOTIFY_CHANGE_NAME O nome desse diretório foi alterado.
    FILE_NOTIFY_CHANGE_ATTRIBUTES O valor de um atributo desse arquivo, como a hora do último acesso, foi alterado.
    FILE_NOTIFY_CHANGE_SIZE O tamanho desse arquivo foi alterado.
    FILE_NOTIFY_CHANGE_LAST_WRITE A hora da última modificação desse arquivo foi alterada.
    FILE_NOTIFY_CHANGE_LAST_ACCESS A hora do último acesso desse arquivo foi alterada.
    FILE_NOTIFY_CHANGE_CREATION O tempo de criação desse arquivo foi alterado.
    FILE_NOTIFY_CHANGE_EA Os atributos estendidos desse arquivo foram modificados.
    FILE_NOTIFY_CHANGE_SECURITY As informações de segurança desse arquivo foram alteradas.
    FILE_NOTIFY_CHANGE_STREAM_NAME Um fluxo de arquivos foi adicionado, excluído ou renomeado neste diretório.
    FILE_NOTIFY_CHANGE_STREAM_SIZE O tamanho desse fluxo de arquivos foi alterado.
    FILE_NOTIFY_CHANGE_STREAM_WRITE Os dados desse fluxo de arquivos foram alterados.
  • Spare1: não usado no momento.

  • Spare2: não usado no momento.

  • DirectoryBuffer: ponteiro para um buffer de saída fornecido pelo chamador que recebe as informações solicitadas sobre o conteúdo do diretório. Esse membro é opcional e pode ser NULL se um MDL for fornecido em NotifyDirectory.MdlAddress. Veja os Comentários.

  • MdlAddress: endereço de um MDL que descreve o buffer para o qual o membro NotifyDirectory.DirectoryBuffer aponta. Esse membro é opcional e pode ser NULL se um buffer for fornecido em NotifyDirectory.DirectoryBuffer. Veja os Comentários.

Comentários

A estrutura FLT_PARAMETERS para operações de IRP_MJ_DIRECTORY_CONTROL contém os parâmetros de uma operação de controle de controle de diretório baseada em IRP representada por uma estrutura de dados de retorno de chamada (FLT_CALLBACK_DATA). Ele está contido em uma estrutura FLT_IO_PARAMETER_BLOCK.

Se um buffer DirectoryBuffer e MdlAddress for fornecido, é recomendável que os minifiltros usem o MDL. A memória para a qual o DirectoryBuffer aponta é válida quando é um endereço de modo de usuário que está sendo acessado dentro do contexto do processo de chamada ou se é um endereço no modo kernel.

Se um minifiltro alterar o valor de MdlAddress, depois de seu retorno de chamada pós-operação, o Gerenciador de Filtros liberará o MDL armazenado atualmente em MdlAddress e restaurará o valor anterior de MdlAddress.

IRP_MJ_DIRECTORY_CONTROL é uma operação baseada em IRP.

Requisitos

Tipo de Requisito Requisito
parâmetro Fltkernel.h (inclua Fltkernel.h)

Confira também

FILE_BOTH_DIR_INFORMATION

FILE_DIRECTORY_INFORMATION

FILE_FULL_DIR_INFORMATION

FILE_ID_BOTH_DIR_INFORMATION

FILE_ID_FULL_DIR_INFORMATION

FILE_NAMES_INFORMATION

FILE_OBJECTID_INFORMATION

FILE_REPARSE_POINT_INFORMATION

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS

FltNotifyFilterChangeDirectory

FsRtlNotifyFilterChangeDirectory

FsRtlNotifyFilterReportChange

FsRtlNotifyFullChangeDirectory

FsRtlNotifyFullReportChange

IRP_MJ_DIRECTORY_CONTROL

ZwQueryDirectoryFile