Hi,
ich bin gerade dabei, Ordnerstrukturen auf DVD zu brennen.
m_pIFileSystemImge->get_FreeMediaBlocks(&FreeBlocks); //FreeBlocks==2297888, also 4,38 GB
// jetzt werden rekursiv Dateien und Verzeichnisse hinzugefügt. Irgendwann
m_pIFileSystemImge->get_UsedBlocks(&UsedBlocks); // UsedBlocks==2297887
hr=rootItem.AddDirectory(CComBSTR(CurSubDir)); // hr==S_OK
m_pIFileSystemImge->get_UsedBlocks(&UsedBlocks); // UsedBlocks==2297891
AddDirectory hätte also statt S_OK IMAPI_E_IMAGE_SIZE_LIMIT liefern müssen!
Mein aktueller Gegenbehelf ist dann manuell den Ordner wieder zu entfernen.
if (UsedBlocks>FreeBlocks)
{
hr=rootItem.Remove(CComBSTR(pOrdner->m_SubDir)); // hr==S_OK m_pIFileSystemImge->get_UsedBlocks(&UsedBlocks); // UsedBlocks==2297887
}
Ist jetzt kein großes Problem. Man muss nur wissen, dass man doch die used blocks manuell prüfen muss.
Tschüß, Holger.