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的實例。 |
範例
下列範例顯示使用 GetFileInformationByNameByName 的 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 搭配 filepath 查詢檔案資訊類別 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 檔案資訊類別 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 |