GetFinalPathNameByHandle 是 Windows 作業系統提供的 API 函式,用於通過檔案句柄檢索檔案或目錄的最終路徑。該函式屬於 WinAPI 的檔案管理系統,支持返回規範化路徑或原始設備路徑,適用於處理符號連結、掛載點及長路徑等場景。
該函式接收檔案句柄、緩衝區、緩衝區大小及路徑格式標誌四個參數。通過 dwFlags 參數可選擇路徑格式(如 VOLUME_NAME_DOS 返回驅動器號路徑,VOLUME_NAME_GUID 返回卷 GUID 路徑),返回值包含路徑字元串的實際長度,若緩衝區不足則返回所需大小以便動態分配。錯誤時返回零,需配合 GetLastError 處理錯誤代碼。
該函式自 Windows Vista 系統引入,旨在解決早期路徑解析的局限性,增強對複雜檔案系統結構的支持。其實現與 NT 核心的路徑處理邏輯緊密關聯,後續版本(如 Windows 10 1709)擴展了對 SMB 協定下規範化路徑的支持。
基本介紹
- 中文名:檢索指定檔案的最終路徑
- 外文名:GetFinalPathNameByHandle
- hFile:檔案或目錄的句柄
- lpszFilePath:指向一個接收路徑的快取區
函式,參數,返回類型,返回值,
函式
語法
DWORD WINAPI Get Final Path Name By Handle(__in HANDLE hFile,__out LPTSTR lpszFilePath,
__in DWORD cchFilePath,__in DWORD dwFlags);
參數
hFile
檔案或目錄的句柄
lpszFilePath
只想一個接收路徑或hFile的快取區。
cchFilePath
lpszFilePath 的大小,以位元組為單位。該值不包含空字元
dwFlags
返回類型
此參數可以是下列值之一。
FILE_NAME_NORMALIZED 返回標準驅動器名。這是默認值。
FILE_NAME_OPENED 返回打開檔案名稱稱(非標準)。
此參數,還可以包含下列值之一。
VOLUME_NAME_DOS 返回的路徑與驅動器號。這是默認值。
VOLUME_NAME_GUID 返回帶有卷GUID路徑而不是驅動器名稱的路徑。
VOLUME_NAME_NONE 返回的路徑沒有驅動器的信息。
VOLUME_NAME_NT 返回的路徑的卷設備路徑。
返回值
如果函式成功,返回值為接受到的字元串長度(以位元組為單位),此函式的返回值包括終止 null 字元的大小。
如果函式失敗,因為lpszFilePath是太小,無法容納該字元串加終止空字元,返回值是所需的緩衝區大小。此值包括終止 null 字元的大小。
