Função GetFileInformationByName (winbase.h)
Importante
Algumas informações estão relacionadas a um produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Consulta informações sobre um arquivo ou diretório, dado o caminho para o arquivo.
Sintaxe
BOOL GetFileInformationByName(
PCWSTR FileName,
FILE_INFO_BY_NAME_CLASS FileInformationClass,
PVOID FileInfoBuffer,
ULONG FileInfoBufferSize
);
Parâmetros
FileName
O nome/caminho do arquivo.
FileInformationClass
Especifica o tipo de informação que deve ser recuperada.
FileInfoBuffer
Um ponteiro para um buffer em que os dados recuperados serão armazenados.
FileInfoBufferSize
Especifica o tamanho do buffer FileInfoBuffer .
Retornar valor
Se a função falhar, o valor retornado será FALSE; caso contrário, TRUE. Para obter informações de erro estendidas, chame GetLastError.
Comentários
Essa rotina retorna as informações solicitadas sobre o arquivo especificado por FileName. Ele faz isso sem abrir e retornar um identificador para o arquivo. As informações retornadas são determinadas pelo FileInformationClass que é especificado e é colocado no buffer do chamador.
O argumento FileInformationClass deve ser um dos valores a seguir da enumeração FILE_INFO_BY_NAME_CLASS . A lista a seguir descreve o tipo que deve ser usado para o parâmetro FileInfoBuffer :
Tipo FileInformationClass | Tipo FileInfoBuffer |
---|---|
FileStatByNameInfo | O buffer de informações do arquivo deve ser uma instância do FILE_STAT_INFORMATION. |
FileStatLxByNameInfo | O buffer de informações do arquivo deve ser uma instância do FILE_STAT_LX_INFORMATION. |
FileCaseSensitiveByNameInfo | O buffer de informações do arquivo deve ser uma instância do FILE_CASE_SENSITIVE_INFORMATION. |
FileStatBasicByNameInfo | O buffer de informações do arquivo deve ser uma instância do FILE_STAT_BASIC_INFORMATION. |
Exemplos
O exemplo a seguir mostra um exemplo de consulta de informações da classe de informações de arquivo FileStatByNameInfo por filepath usando GetFileInformationByName. Consulte FILE_STAT_INFORMATION para obter detalhes adicionais sobre os resultados da consulta.
#include <windows.h>
#include <winnt.h>
#include <stdio.h>
DWORD
GetFileStatInfoByName(
_In_ PCWSTR FilePath)
{
DWORD Status = ERROR_SUCCESS;
FILE_STAT_INFORMATION FileStatInfo;
if (!GetFileInformationByName(FilePath,
FileStatByNameInfo,
&FileStatInfo,
sizeof(FileStatInfo)))
{
Status = GetLastError();
fwprintf_s(stderr, L"GetFileInformationByName() failed; error %u\n", Status);
}
else
{
fwprintf_s(stdout, L"FileId 0x%I64X\n", FileStatInfo.FileId.QuadPart);
fwprintf_s(stdout, L"CreationTime 0x%I64X\n", FileStatInfo.CreationTime.QuadPart);
fwprintf_s(stdout, L"LastAccessTime 0x%I64X\n", FileStatInfo.LastAccessTime.QuadPart);
fwprintf_s(stdout, L"LastWriteTime 0x%I64X\n", FileStatInfo.LastWriteTime.QuadPart);
fwprintf_s(stdout, L"ChangeTime 0x%I64X\n", FileStatInfo.ChangeTime.QuadPart);
fwprintf_s(stdout, L"AllocationSize 0x%I64X\n", FileStatInfo.AllocationSize.QuadPart);
fwprintf_s(stdout, L"EndOfFile 0x%I64X\n", FileStatInfo.EndOfFile.QuadPart);
fwprintf_s(stdout, L"FileAttributes 0x%08X\n", FileStatInfo.FileAttributes);
fwprintf_s(stdout, L"ReparseTag 0x%08X\n", FileStatInfo.ReparseTag);
fwprintf_s(stdout, L"NumberOfLinks %u\n", FileStatInfo.NumberOfLinks);
fwprintf_s(stdout, L"EffectiveAccess 0x%08X\n", FileStatInfo.EffectiveAccess);
}
return Status;
}
O exemplo a seguir mostra um exemplo de consulta de informações da classe de informações de arquivo FileStatLxByNameInfo por filepath usando GetFileInformationByName. Consulte FILE_STAT_LX_INFORMATION para obter detalhes adicionais sobre os resultados da consulta.
#include <windows.h>
#include <winnt.h>
#include <stdio.h>
DWORD
GetFileStatLxInfoByName(
_In_ PCWSTR FilePath)
{
FILE_STAT_LX_INFORMATION FileStatInfo;
DWORD Status = ERROR_SUCCESS;
if (!GetFileInformationByName(FilePath,
FileStatLxByNameInfo,
&FileStatInfo,
sizeof(FileStatInfo)))
{
Status = GetLastError();
fwprintf_s(stderr, L"GetFileInformationByName() failed; error %u\n", Status);
}
else
{
fwprintf_s(stdout, L"FileId 0x%I64X\n", FileStatInfo.FileId.QuadPart);
fwprintf_s(stdout, L"CreationTime 0x%I64X\n", FileStatInfo.CreationTime.QuadPart);
fwprintf_s(stdout, L"LastAccessTime 0x%I64X\n", FileStatInfo.LastAccessTime.QuadPart);
fwprintf_s(stdout, L"LastWriteTime 0x%I64X\n", FileStatInfo.LastWriteTime.QuadPart);
fwprintf_s(stdout, L"ChangeTime 0x%I64X\n", FileStatInfo.ChangeTime.QuadPart);
fwprintf_s(stdout, L"AllocationSize 0x%I64X\n", FileStatInfo.AllocationSize.QuadPart);
fwprintf_s(stdout, L"EndOfFile 0x%I64X\n", FileStatInfo.EndOfFile.QuadPart);
fwprintf_s(stdout, L"FileAttributes 0x%08X\n", FileStatInfo.FileAttributes);
fwprintf_s(stdout, L"ReparseTag 0x%08X\n", FileStatInfo.ReparseTag);
fwprintf_s(stdout, L"NumberOfLinks %u\n", FileStatInfo.NumberOfLinks);
fwprintf_s(stdout, L"LxFlags 0x%08X\n", FileStatInfo.LxFlags);
fwprintf_s(stdout, L"LxUid 0x%08X\n", FileStatInfo.LxUid);
fwprintf_s(stdout, L"LxGid 0x%08X\n", FileStatInfo.LxGid);
fwprintf_s(stdout, L"LxMode 0x%08X\n", FileStatInfo.LxMode);
fwprintf_s(stdout, L"LxDeviceIdMajor 0x%08X\n", FileStatInfo.LxDeviceIdMajor);
fwprintf_s(stdout, L"LxDeviceIdMinor 0x%08X\n", FileStatInfo.LxDeviceIdMinor);
}
return Status;
}
O exemplo a seguir mostra um exemplo de consulta de informações que diferenciam maiúsculas de minúsculas para a classe de informações de arquivo FileCaseSensitiveByNameInfo com um caminho de arquivo usando GetFileInformationByName. Consulte FILE_CASE_SENSITIVE_INFORMATION para obter detalhes adicionais sobre os resultados da consulta.
#include <windows.h>
#include <winnt.h>
#include <stdio.h>
DWORD
GetFileStatCaseSensitiveInfoByName(
_In_ PCWSTR FilePath)
{
DWORD Status = ERROR_SUCCESS;
FILE_CASE_SENSITIVE_INFORMATION FileStatInfo;
if (!GetFileInformationByName(FilePath,
FileCaseSensitiveByNameInfo,
&FileStatInfo,
sizeof(FileStatInfo)))
{
Status = GetLastError();
fwprintf_s(stderr, L"GetFileStatCaseSensitiveInfoByName() failed; error %u\n", Status);
}
else
{
fwprintf_s(stdout, L"Flags 0x%08X\n", FileStatInfo.Flags);
}
return Status;
}
O exemplo a seguir mostra um exemplo de consulta de informações da classe de informações de arquivo FileStatBasicByNameInfo com um caminho de arquivo usando GetFileInformationByName. Consulte FILE_STAT_BASIC_INFORMATION para obter detalhes adicionais sobre os resultados da consulta.
#include <windows.h>
#include <winnt.h>
#include <stdio.h>
DWORD
GetFileStatBasicInfoByName(
_In_ PCWSTR FilePath)
{
DWORD Status = ERROR_SUCCESS;
FILE_STAT_BASIC_INFORMATION FileStatInfo;
if (!GetFileInformationByName(FilePath,
FileStatBasicByNameInfo,
&FileStatInfo,
sizeof(FileStatInfo)))
{
Status = GetLastError();
fwprintf_s(stderr, L"GetFileInformationByName failed; error %u\n", Status);
}
else
{
fwprintf_s(stdout, L"FileId 0x%I64X\n", FileStatInfo.FileId.QuadPart);
fwprintf_s(stdout, L"CreationTime 0x%I64X\n", FileStatInfo.CreationTime.QuadPart);
fwprintf_s(stdout, L"LastAccessTime 0x%I64X\n", FileStatInfo.LastAccessTime.QuadPart);
fwprintf_s(stdout, L"LastWriteTime 0x%I64X\n", FileStatInfo.LastWriteTime.QuadPart);
fwprintf_s(stdout, L"ChangeTime 0x%I64X\n", FileStatInfo.ChangeTime.QuadPart);
fwprintf_s(stdout, L"AllocationSize 0x%I64X\n", FileStatInfo.AllocationSize.QuadPart);
fwprintf_s(stdout, L"EndOfFile 0x%I64X\n", FileStatInfo.EndOfFile.QuadPart);
fwprintf_s(stdout, L"FileAttributes 0x%08X\n", FileStatInfo.FileAttributes);
fwprintf_s(stdout, L"ReparseTag 0x%08X\n", FileStatInfo.ReparseTag);
fwprintf_s(stdout, L"NumberOfLinks %u\n", FileStatInfo.NumberOfLinks);
}
return Status;
}
Requisitos
Plataforma de Destino | Windows |
Cabeçalho | winbase.h (incluir Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |