estrutura FILE_BOTH_DIR_INFORMATION (ntifs.h)

A estrutura FILE_BOTH_DIR_INFORMATION é usada para consultar informações detalhadas para os arquivos em um diretório.

Sintaxe

typedef struct _FILE_BOTH_DIR_INFORMATION {
  ULONG         NextEntryOffset;
  ULONG         FileIndex;
  LARGE_INTEGER CreationTime;
  LARGE_INTEGER LastAccessTime;
  LARGE_INTEGER LastWriteTime;
  LARGE_INTEGER ChangeTime;
  LARGE_INTEGER EndOfFile;
  LARGE_INTEGER AllocationSize;
  ULONG         FileAttributes;
  ULONG         FileNameLength;
  ULONG         EaSize;
  CCHAR         ShortNameLength;
  WCHAR         ShortName[12];
  WCHAR         FileName[1];
} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;

Membros

NextEntryOffset

Deslocamento de bytes da próxima entrada FILE_BOTH_DIR_INFORMATION, se várias entradas estiverem presentes em um buffer. Esse membro será zero se nenhuma outra entrada seguir esta.

FileIndex

Deslocamento de bytes do arquivo dentro do diretório pai. Esse membro é 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.

CreationTime

Hora que o arquivo foi criado.

LastAccessTime

Da última vez que o arquivo foi acessado.

LastWriteTime

A última vez que as informações foram gravadas no arquivo.

ChangeTime

Da última vez que o arquivo foi alterado.

EndOfFile

Posição absoluta de fim do arquivo como um deslocamento de bytes desde o início do arquivo. EndOfFile especifica o deslocamento de bytes para o final do arquivo. Como esse valor é baseado em zero, ele realmente se refere ao primeiro byte gratuito no arquivo. Em outras palavras, EndOfFile é o deslocamento para o byte imediatamente após o último byte válido no arquivo.

AllocationSize

Tamanho da alocação de arquivo, em bytes. Normalmente, esse valor é um múltiplo do setor ou do tamanho do cluster do dispositivo físico subjacente.

FileAttributes

Atributos de arquivo, que podem ser qualquer combinação válida do seguinte:

  • FILE_ATTRIBUTE_READONLY
  • FILE_ATTRIBUTE_HIDDEN
  • FILE_ATTRIBUTE_SYSTEM
  • FILE_ATTRIBUTE_DIRECTORY
  • FILE_ATTRIBUTE_ARCHIVE
  • FILE_ATTRIBUTE_DEVICE
  • FILE_ATTRIBUTE_NORMAL
  • FILE_ATTRIBUTE_TEMPORARY
  • FILE_ATTRIBUTE_SPARSE_FILE
  • FILE_ATTRIBUTE_REPARSE_POINT
  • FILE_ATTRIBUTE_COMPRESSED
  • FILE_ATTRIBUTE_OFFLINE
  • FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
  • FILE_ATTRIBUTE_ENCRYPTED

FileNameLength

Especifica o comprimento, em bytes, da cadeia de caracteres de nome de arquivo.

EaSize

Comprimento combinado, em bytes, dos atributos estendidos (EA) para o arquivo.

ShortNameLength

Especifica o comprimento, em bytes, da cadeia de caracteres de nome de arquivo curto.

ShortName[12]

Cadeia de caracteres Unicode que contém o nome curto (8.3) do arquivo.

FileName[1]

Especifica o primeiro caractere da cadeia de caracteres de nome de arquivo. Isso é seguido na memória pelo restante da cadeia de caracteres.

Comentários

Essas informações podem ser consultadas de qualquer uma das seguintes maneiras:

  • Chame ZwQueryDirectoryFile, passando FileBothDirectoryInformation como o valor de FileInformationClass e passando um buffer alocado pelo chamador FILE_BOTH_DIR_INFORMATION estruturado como o valor de FileInformation.

  • Crie um IRP com código de função principal IRP_MJ_DIRECTORY_CONTROL e código de função secundária IRP_MN_QUERY_DIRECTORY.

Nenhum direito de acesso específico é necessário para consultar essas informações.

Todas as datas e horas estão em formato absoluto de hora do sistema. O tempo absoluto do sistema é o número de intervalos de 100 nanossegundos desde o início do ano de 1601.

Essa estrutura deve ser alinhada em um limite LONGLONG (8 bytes). Se um buffer contiver duas ou mais dessas estruturas, o valor NextEntryOffset em cada entrada, exceto o último, cairá em um limite de 8 bytes.

Requisitos

Requisito Valor
Cabeçalho ntifs.h (inclua Ntifs.h, Fltkernel.h)

Confira também

FsRtlNotifyFullChangeDirectory

IRP_MJ_DIRECTORY_CONTROL

ZwQueryDirectoryFile