2009-05-29 5 views
0

IMAPI2-Schnittstelle IFileSystem verwendet COM-IStream-Schnittstellen zur Darstellung von Dateidaten. Es gibt eine AddTree-Methode, die IFileSystem angegebene Verzeichnisinhalte hinzufügt. Also muss AddTree IStreams im Prozess erstellen. Ich frage mich, welche Implementierung von IStream es verwendet? Wenn es die Standard-OLE-Implementierung verwendet, haben wir ein unangenehmes Problem, da OLE-Streams keine Dateien unterstützen, die größer als 4 GB sind.Kann IMAPI2 Dateien mit der Größe> 4 GB brennen?

Kann jemand etwas zu diesem Thema beleuchten?

+0

Wenn Sie größere Dateien schreiben müssen, könnten Sie immer ein Archivierungsprogramm verwenden, um es zuerst in Stücke zu teilen. Wenn es keine direkte Lösung gibt, gehen Sie herum. –

+0

Ich kann meinen eigenen IStream implementieren und AddFile anstelle von AddTree verwenden. Es ist eine bessere Problemumgehung. Ich frage mich, ob ich das wirklich tun muss. –

Antwort

2

IMAPIv2 begrenzt die Größe der Datei auf einer ISO9660-kompatiblen Disc auf 2 GB.

Um Dateien mit mehr als 2GB zu brennen, müssen Sie ein UDF-Dateisystem einrichten.

HRESULT hr = FileSystemImage->put_FileSystemsToCreate(FsiFileSystemUDF); 

Die FsiFileSystems Aufzählung definiert die Werte für anerkannte Dateisysteme:

typedef enum FsiFileSystems { 
    FsiFileSystemNone  = 0, 
    FsiFileSystemISO9660 = 1, 
    FsiFileSystemJoliet = 2, 
    FsiFileSystemUDF  = 4, 
    FsiFileSystemUnknown = 0x40000000 
} FsiFileSystems; 
  • FsiFileSystemNone Die Scheibe nicht erkanntes Dateisystem enthält.
  • FsiFileSystemISO9660 Standard-CD-Dateisystem.
  • FsiFileSystemJoliet Joliet Dateisystem.
  • UDF-Dateisystem FsiFileSystemUDF.
  • FsiFileSystemUnknown Die Disc scheint ein Dateisystem zu haben, aber das Layout stimmt mit keinem der erkannten Typen überein.

UDF nativ unterstützt viele moderne Dateisysteme Features:

  • Große Partitionsgröße (maximal 2 TB mit 512B Blockgröße oder 8 TB mit einer Größe von 2 KB-Block) 64-Bit-Dateigröße
  • Erweiterte Attribute (z. B. benannte Datenströme oder Gabeln) ohne Größenbeschränkung
  • Lange Dateinamen (maximal 254 Byte, ein beliebiges Zeichen kann im Namen vorkommen)
  • Unicode-Codierung von Dateinamen
  • Sparse-Datei
  • Hardlinks
  • Symbolische Links
  • Metadaten Prüfsumme

Einschränkungen:

  • Begrenzte Partitionsgröße. 32-Bit-Blocknummer begrenzt die Partitionsgröße auf 2 TB für 512 Sektorgröße.
  • Unterstützt keine komprimierten/verschlüsselten Dateien und Verzeichnisse.
0

Offenbar verwendet AddTree SHCreateStreamOnFileEx, die offensichtlich große Dateien unterstützt. Ich werde meine Antwort akzeptieren, wenn ich es überprüfe.

Verwandte Themen