IMAPI2接口IFileSystem使用COM IStream接口來表示文件數據。有AddTree方法可將指定的目錄內容添加到IFileSystem。所以AddTree必須在這個過程中創建IStream。我想知道它使用的是什麼實現的IStream?如果它使用標準的OLE實現比我們有一個討厭的問題,因爲OLE流不支持大於4Gb的文件。IMAPI2可以刻錄大小> 4Gb的文件嗎?
任何人都可以解釋一下這個問題?
IMAPI2接口IFileSystem使用COM IStream接口來表示文件數據。有AddTree方法可將指定的目錄內容添加到IFileSystem。所以AddTree必須在這個過程中創建IStream。我想知道它使用的是什麼實現的IStream?如果它使用標準的OLE實現比我們有一個討厭的問題,因爲OLE流不支持大於4Gb的文件。IMAPI2可以刻錄大小> 4Gb的文件嗎?
任何人都可以解釋一下這個問題?
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本身支持許多現代的文件系統的功能:
限制:
顯然AddTree使用SHCreateStreamOnFileEx,它明顯支持大文件。我會在檢查時接受我的回答。
如果您需要編寫大於該文件的文件,您可以使用歸檔程序首先將其拆分成塊。如果沒有直接的解決方案,請四處走走。 – 2009-05-29 15:37:24