windows - Kan IMAPI2 brænde filer med størrelsen > 4Gb?

Indlæg af Hanne Mølgaard Plasc

Problem



IMAPI2-grænseflade IFileSystem bruger COM IStream-grænseflader til at repræsentere fildata. Der er AddTree-metode, der tilføjer specificeret katalogindhold til IFileSystem. Så AddTree skal oprette IStream s i processen. Jeg spekulerer på, hvilken implementering af IStream det bruger? Hvis det bruger standard OLE implementering end vi har et ubehageligt problem, fordi OLE streams ikke understøtter filer større end 4Gb.


Kan nogen kaste lys over dette problem?

Bedste reference


IMAPIv2 begrænser størrelsen af ​​filen på en ISO9660 kompatibel disk til 2 GB.


For at brænde filer på mere end 2 GB skal du indstille et UDF-filsystem.


 HRESULT hr = FileSystemImage->put\_FileSystemsToCreate( FsiFileSystemUDF );


FsiFileSystems opgørelsen definerer værdierne for anerkendte filsystemer: [3]


typedef enum FsiFileSystems { 
  FsiFileSystemNone     = 0,
  FsiFileSystemISO9660  = 1,
  FsiFileSystemJoliet   = 2,
  FsiFileSystemUDF      = 4,
  FsiFileSystemUnknown  = 0x40000000
} FsiFileSystems;



  

      
  • FsiFileSystemNone Disken indeholder ikke et anerkendt filsystem.

  •   
  • FsiFileSystemISO9660 Standard CD-filsystem.

  •   
  • FsiFileSystemJoliet Joliet filsystem.

  •   
  • FsiFileSystemUDF UDF filsystem.

  •   
  • FsiFileSystemUnknown Disken ser ud til at have et filsystem, men layoutet stemmer ikke overens med nogen af ​​de anerkendte typer.

  •   



UDF støtter indbygget mange moderne filsystemfunktioner:



  • Stor partitionsstørrelse (maks. 2TB med 512B blokstørrelse eller 8TB med 2KB blokstørrelse) 64-bit filstørrelse

  • Udvidede attributter (f.eks. navngivne strømme eller gafler) uden størrelsesbegrænsning

  • Lange filnavne (maks. 254 byte, ethvert tegn kan vises i navnet)

  • Unicode-kodning af filnavne

  • Sparsom fil

  • Hard links

  • Symboliske links

  • Metadata checksum



Begrænsninger:



  • Begrænset partitionsstørrelse. 32-bit bloknummer begrænser partitionsstørrelsen til 2TB for 512 sektorstørrelse.

  • Understøtter ikke komprimeret/krypteret fil og mapper.


Andre referencer 1


Tilsyneladende AddTree bruger SHCreateStreamOnFileEx, som tilsyneladende understøtter store filer. Jeg accepterer mit svar, når jeg vil tjekke det.