2009年3月27日 星期五

Win32 下面如何normalize path

很多人在win32開發程式
常常需要組合兩個路徑為一個完整的路徑
自己寫API 要寫得好 其實不容易
最大的問題在於相對路徑的問題以及win32 路徑的規則
有處理過win32 file system的人會有很深刻的體驗
就是 路徑的處理 真的非常的複雜

在User mode底下 其實很簡單 [不適用Kernel mode]
Microsoft 本身有提供一個API 可以很方便 組合出一個normalized以及完整的路徑
這個API 會處理相對路徑
就是 GetFullPathName 這個API
http://msdn.microsoft.com/en-us/library/aa364963(VS.85).aspx

DWORD WINAPI GetFullPathName(
__in LPCTSTR lpFileName,
__in DWORD nBufferLength,
__out LPTSTR lpBuffer,
__out LPTSTR *lpFilePart
);


如何使用:
1. 先把base path 跟 expand path 組合成一個string
2. call GetFullPathName 會回傳一個normalized 的路徑
PS. 詳細的說明請上MSDN 會有詳細的說明
http://msdn.microsoft.com/en-us/library/aa364963(VS.85).aspx