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

Vea también