如何生成一個 WinCE 下大于 MAX_PATH(260) 字節(jié)的文件路徑?
大家都知道,在 Windows 系統(tǒng)中文件名的路徑最大值是 MAX_PATH。例如:
Windows XP 系統(tǒng),對文件名的長度進行測試:?
(1) 在分區(qū) E: 的根目錄新建一個文件,其文件名最大長度為: 255。---全路徑長度>>> 258
(2) 在分區(qū) E: 子目錄 Program Files 中新建一個文件,其文件名的最大長度為: 242。 ---全路徑長度>>>259
在 WinCE 系統(tǒng)下,也有一定的限制。
另外,如果試圖將在 E: 根目錄新建的最大文件名長度的文件,是無法復制到子目錄中的。復制時提示: 指定的文件名無效或太長。
如何會產(chǎn)生一個 WinCE 下文件全路徑大于 MAX_PATH(260) 字節(jié)的文件路徑呢?
其實這個問題很簡單,想來大家都知道 USB 或 SD 設備在 Windows XP 等系統(tǒng)與在 WinCE 系統(tǒng)中被識別后的根目錄是不會的。
在 Windows XP等桌面系統(tǒng)中,一般是根目錄,如:F:
在 Windows CE 系統(tǒng)中,SD 卡一般是如下的目錄:Storage Card 或 Storage Card 2 或其它; USB 一般是如:Hard Disk 的目錄。
利用 Windows XP等系統(tǒng)與 WinCE 系統(tǒng)的不同,來完成生成一個 WinCE 下文件全路徑大于 MAX_PATH(260) 字節(jié)的文件路徑。
將在 Windows XP 系統(tǒng)的某個根目錄中生成的最長文件名,復制到 SD/USB。然后將此 SD/USB 插入 WinCE 系統(tǒng),此時剛才復制的長文件名的文件,其它文件的全路徑將會大于 MAX_PATH(260)。
出現(xiàn)這種情況,可能會導致部分使用 MAX_PATH 做為文件名全路徑最大值的程序產(chǎn)生越界訪問的情況出現(xiàn),導致程序出現(xiàn)異常。