다음을 통해 공유


GetFileInformationByName 함수(winbase.h)

중요

일부 정보는 상업적으로 출시되기 전에 실질적으로 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.

파일 경로가 지정된 경우 파일 또는 디렉터리에 대한 정보를 쿼리합니다.

구문

BOOL GetFileInformationByName(
  PCWSTR                  FileName,
  FILE_INFO_BY_NAME_CLASS FileInformationClass,
  PVOID                   FileInfoBuffer,
  ULONG                   FileInfoBufferSize
);

매개 변수

FileName

파일 이름/경로입니다.

FileInformationClass

검색해야 하는 정보의 유형을 지정합니다.

FileInfoBuffer

검색된 데이터가 저장될 버퍼에 대한 포인터입니다.

FileInfoBufferSize

FileInfoBuffer 버퍼의 크기를 지정합니다.

반환 값

함수가 실패하면 반환 값은 FALSE이고, 그렇지 않으면 TRUE입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

이 루틴은 FileName에서 지정한 파일에 대해 요청된 정보를 반환합니다. 파일을 열고 핸들을 반환하지 않고도 이 작업을 수행합니다. 반환되는 정보는 지정된 FileInformationClass 에 의해 결정되며 호출자의 버퍼에 배치됩니다.

FileInformationClass 인수는 FILE_INFO_BY_NAME_CLASS 열거형의 다음 값 중 하나여야 합니다. 다음 목록에서는 FileInfoBuffer 매개 변수에 사용해야 하는 형식에 대해 설명합니다.

FileInformationClass 형식 FileInfoBuffer 형식
FileStatByNameInfo 파일 정보 버퍼는 FILE_STAT_INFORMATION instance 합니다.
FileStatLxByNameInfo 파일 정보 버퍼는 FILE_STAT_LX_INFORMATION instance 합니다.
FileCaseSensitiveByNameInfo 파일 정보 버퍼는 FILE_CASE_SENSITIVE_INFORMATION instance 합니다.
FileStatBasicByNameInfo 파일 정보 버퍼는 FILE_STAT_BASIC_INFORMATION instance 합니다.

예제

다음은 GetFileInformationByName을 사용하여 파일 경로별로 파일 정보 클래스 FileStatByNameInfo의 정보를 쿼리하는 예제를 보여줍니다. 쿼리 결과에 대한 자세한 내용은 FILE_STAT_INFORMATION 참조하세요.

#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;
} 

다음은 GetFileInformationByName을 사용하여 파일 경로별로 파일 정보 클래스 FileStatLxByNameInfo의 정보를 쿼리하는 예제를 보여줍니다. 쿼리 결과에 대한 자세한 내용은 FILE_STAT_LX_INFORMATION 참조하세요.

#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;
}

다음은 GetFileInformationByName을 사용하여 파일 경로로 파일 정보 클래스 FileCaseSensitiveByNameInfo에 대한 대/소문자 구분 정보를 쿼리하는 예제를 보여 줍니다. 쿼리 결과에 대한 자세한 내용은 FILE_CASE_SENSITIVE_INFORMATION 참조하세요.

#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;
}

다음은 GetFileInformationByName을 사용하여 파일 경로를 사용하여 파일 정보 클래스 FileStatBasicByNameInfo의 정보를 쿼리하는 예제를 보여 줍니다. 쿼리 결과에 대한 자세한 내용은 FILE_STAT_BASIC_INFORMATION 참조하세요.

#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;
}

요구 사항

   
대상 플랫폼 Windows
헤더 winbase.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목