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