Solved

IJolietDiscMaster/IStorage filename length problem.

Posted on 2004-10-07
6
523 Views
Last Modified: 2007-12-19
I am using IJolietDiscMaster::AddData(IStorage* pStorage,  long lFileOverwrite) to add files to a staged image file, to burn to CD.  To add files to the storage I use IStorage::CreateStream(..).

Now the IJoliet specs say I can have filename up to 64 characters long, but when adding files through IStorage::CreateStream(..) I can only use filenames with a max length of 31 characters as that is the limit set by IStorage::CreateStream(..).

Does anyone know a way around the 31 character limitation of IStorage::CreateStream(..)?
Or does anyone know of any other CD mastering API's/interfaces that are available?
I am using the Microsoft SDK for the IMAPI interfaces at the moment, and I believe there is others by Nero, etc available.  Any advice?

Any help would be appreciated,
Thanks
Scobar
0
Comment
Question by:Scobar
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 86

Expert Comment

by:jkr
ID: 12255402
The NeroAPI can do what the UI implies - including the settigs to even overcome the Joliet file name length limitations.
0
 

Author Comment

by:Scobar
ID: 12640716
I have gotting help from Alex Feinman who has written a similar tool (http://isorecorder.alexfeinman.com/isorecorder.htm).  As a work around, I am now using the IShellFolder interfaces to get a storage pointer to the folder.  This mean I am not adding files one at a time, but I don't need that functionallity yet.

Thank you Alex and jkr for your help.

  HRESULT hr;
  IStorage * pStorage = NULL;
  LPITEMIDLIST pidl = NULL;
  IShellFolder * pFolder;
  IMalloc * pIMalloc;

  hr = SHGetMalloc(&pIMalloc);
  hr = SHGetDesktopFolder(&pFolder);
  hr = pFolder->ParseDisplayName(NULL, NULL, wszSourceFilename, NULL, &pidl, NULL);
 
  hr = pFolder->BindToStorage(pidl, NULL, IID_IStorage, (void**)&pStorage);
 
  pIMalloc->Free((void*)pidl);
  pFolder->Release();

  // add the storage to the staged image file
  hr = m_joliet->AddData(pStorage, bOverwriteExisting);
0
 

Accepted Solution

by:
modulo earned 0 total points
ID: 12680968
Closed, 130 points refunded.

modulo
Community Support Moderator
Experts Exchange
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
IdTCPClient1->Disconnect(); not working 3 91
max float value 3 72
Precision Problem in C++ 7 67
How to determine if the result of an equation is an integer in C++? 3 32
Introduction This article is the first in a series of articles about the C/C++ Visual Studio Express debugger.  It provides a quick start guide in using the debugger. Part 2 focuses on additional topics in breakpoints.  Lastly, Part 3 focuses on th…
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

739 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question