Función GetFileInformationByName (winbase.h)
Importante
Cierta información se relaciona con un producto de versión preliminar que puede modificarse sustancialmente antes de su lanzamiento comercial. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Consulta información sobre un archivo o directorio, dada la ruta de acceso al archivo.
Sintaxis
BOOL GetFileInformationByName(
PCWSTR FileName,
FILE_INFO_BY_NAME_CLASS FileInformationClass,
PVOID FileInfoBuffer,
ULONG FileInfoBufferSize
);
Parámetros
FileName
Nombre o ruta de acceso del archivo.
FileInformationClass
Especifica el tipo de información que se debe recuperar.
FileInfoBuffer
Puntero a un búfer donde se almacenarán los datos recuperados.
FileInfoBufferSize
Especifica el tamaño del búfer FileInfoBuffer .
Valor devuelto
Si se produce un error en la función, el valor devuelto es FALSE; de lo contrario, ES TRUE. Para obtener información de error extendida, llame a GetLastError.
Comentarios
Esta rutina devuelve la información solicitada sobre el archivo especificado por FileName. Lo hace sin abrir y devolver un identificador al archivo. La información devuelta viene determinada por fileInformationClass que se especifica y se coloca en el búfer del autor de la llamada.
El argumento FileInformationClass debe ser uno de los valores siguientes de la enumeración FILE_INFO_BY_NAME_CLASS . En la lista siguiente se describe el tipo que se debe usar para el parámetro FileInfoBuffer :
Tipo FileInformationClass | Tipo FileInfoBuffer |
---|---|
FileStatByNameInfo | El búfer de información de archivo debe ser una instancia de FILE_STAT_INFORMATION. |
FileStatLxByNameInfo | El búfer de información de archivo debe ser una instancia de FILE_STAT_LX_INFORMATION. |
FileCaseSensitiveByNameInfo | El búfer de información de archivo debe ser una instancia de FILE_CASE_SENSITIVE_INFORMATION. |
FileStatBasicByNameInfo | El búfer de información de archivo debe ser una instancia de FILE_STAT_BASIC_INFORMATION. |
Ejemplos
A continuación se muestra un ejemplo de consulta de información de archivo de la clase FileStatByNameInfo por ruta de acceso mediante GetFileInformationByName. Consulte FILE_STAT_INFORMATION para obtener más información sobre los resultados de la 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;
}
A continuación se muestra un ejemplo de consulta de información de archivo de la clase FileStatLxByNameInfo por ruta de acceso mediante GetFileInformationByName. Consulte FILE_STAT_LX_INFORMATION para obtener más información sobre los resultados de la 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;
}
A continuación se muestra un ejemplo de consulta de información que distingue mayúsculas de minúsculas para la clase de información de archivo FileCaseSensitiveByNameInfo con una ruta de acceso de archivo mediante GetFileInformationByName. Consulte FILE_CASE_SENSITIVE_INFORMATION para obtener más información sobre los resultados de la 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;
}
A continuación se muestra un ejemplo de consulta de información de archivo de la clase FileStatBasicByNameInfo con una ruta de acceso de archivo mediante GetFileInformationByName. Consulte FILE_STAT_BASIC_INFORMATION para obtener más información sobre los resultados de la 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 |
Encabezado | winbase.h (incluye Windows.h) |
Library | Kernel32.lib |
Archivo DLL | Kernel32.dll |