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のインスタンスである必要があります。 |
FileStatLxByNameInfo | ファイル情報バッファーは 、FILE_STAT_LX_INFORMATIONのインスタンスである必要があります。 |
FileCaseSensitiveByNameInfo | ファイル情報バッファーは 、FILE_CASE_SENSITIVE_INFORMATIONのインスタンスである必要があります。 |
FileStatBasicByNameInfo | ファイル情報バッファーは 、FILE_STAT_BASIC_INFORMATIONのインスタンスである必要があります。 |
例
次に、GetFileInformationByName を使用して filepath を使用してファイル情報クラス 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 を使用して filepath を使用してファイル情報クラス 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 を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |