estrutura FILE_ID_FULL_DIR_INFORMATION (ntifs.h)

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

Sintaxe

typedef struct _FILE_ID_FULL_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;
  LARGE_INTEGER FileId;
  WCHAR         FileName[1];
} FILE_ID_FULL_DIR_INFORMATION, *PFILE_ID_FULL_DIR_INFORMATION;

Membros

NextEntryOffset

Deslocamento de bytes da próxima entrada de FILE_ID_FULL_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

Última vez em que o arquivo foi acessado.

LastWriteTime

Última vez em que as informações foram gravadas no arquivo.

ChangeTime

Última vez em que o arquivo foi alterado.

EndOfFile

Nova posição absoluta de fim de arquivo como um deslocamento de bytes do início do arquivo. EndOfFile especifica o deslocamento de bytes até 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 tamanho do setor ou 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_NORMAL
  • FILE_ATTRIBUTE_TEMPORARY
  • FILE_ATTRIBUTE_COMPRESSED

FileNameLength

Especifica o comprimento da cadeia de caracteres de nome de arquivo.

EaSize

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

FileId

O número de referência do arquivo de 8 bytes para o arquivo. (Observe que isso não é o mesmo que a "ID do objeto de arquivo" de 16 bytes que foi adicionada ao NTFS para Microsoft Windows 2000.)

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 uma das seguintes maneiras:

  • Chame ZwQueryDirectoryFile, passando FileIdFullDirectoryInformation como o valor de FileInformationClass e passando um buffer alocado pelo chamador FILE_ID_FULL_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.

Os números de referência de arquivo, também chamados de IDs de arquivo, têm a garantia de serem exclusivos somente dentro de um sistema de arquivos estático. Não há garantia de que eles sejam exclusivos ao longo do tempo, pois os sistemas de arquivos são livres para reutilizá-los. Também não há garantia de que permaneçam constantes. Por exemplo, o sistema de arquivos FAT gera o número de referência de arquivo para um arquivo do deslocamento de bytes do registro de entrada de diretório do arquivo (DIRENT) no disco. A desfragmentação pode alterar esse deslocamento de bytes. Portanto, um número de referência de arquivo FAT pode ser alterado ao longo do tempo.

Todas as datas e horas estão no formato absoluto de hora do sistema. A hora absoluta do sistema é o número de intervalos de 100 nanossegundos desde o início do ano 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 a última, se enquadra em um limite de 8 bytes.

Requisitos

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

Confira também

FsRtlNotifyFullChangeDirectory

IRP_MJ_DIRECTORY_CONTROL

ZwQueryDirectoryFile