2009-05-29 36 views
0

IMAPI2接口IFileSystem使用COM IStream接口來表示文件數據。有AddTree方法可將指定的目錄內容添加到IFileSystem。所以AddTree必須在這個過程中創建IStream。我想知道它使用的是什麼實現的IStream?如果它使用標準的OLE實現比我們有一個討厭的問題,因爲OLE流不支持大於4Gb的文件。IMAPI2可以刻錄大小> 4Gb的文件嗎?

任何人都可以解釋一下這個問題?

+0

如果您需要編寫大於該文件的文件,您可以使用歸檔程序首先將其拆分成塊。如果沒有直接的解決方案,請四處走走。 – 2009-05-29 15:37:24

回答

2

IMAPIv2將ISO9660兼容光盤上的文件大小限制爲2GB。

爲了刻錄超過2GB的文件,您必須設置UDF文件系統。

HRESULT hr = FileSystemImage->put_FileSystemsToCreate(FsiFileSystemUDF); 

FsiFileSystems枚舉定義的值識別的文件系統:

typedef enum FsiFileSystems { 
    FsiFileSystemNone  = 0, 
    FsiFileSystemISO9660 = 1, 
    FsiFileSystemJoliet = 2, 
    FsiFileSystemUDF  = 4, 
    FsiFileSystemUnknown = 0x40000000 
} FsiFileSystems; 
  • FsiFileSystemNone光盤不包含可識別的文件系統。
  • FsiFileSystemISO9660標準CD文件系統。
  • FsiFileSystemJoliet Joliet文件系統。
  • FsiFileSystemUDF UDF文件系統。
  • FsiFileSystemUnknown光盤似乎有一個文件系統,但佈局與任何識別的類型都不匹配。

UDF本身支持許多現代的文件系統的功能:

  • 大分區大小(最大2TB與512B塊大小,或8TB與2KB的塊大小)的64位的文件大小
  • 擴展沒有大小限制的屬性(例如命名流或分支)
  • 長文件名(最大254字節,任何字符都可以出現在名稱中)
  • Unicode編碼文件名
  • 稀疏文件
  • 硬鏈接
  • 符號鏈接
  • 元數據校驗

限制:

  • 有限公司分區大小。 32位塊數將512分區大小的分區大小限制爲2TB。
  • 不支持壓縮/加密的文件和目錄。
0

顯然AddTree使用SHCreateStreamOnFileEx,它明顯支持大文件。我會在檢查時接受我的回答。

相關問題