Метка диска на CDR(W) согласно ISO 9660 есть Volume Identifier, который находится в Primary Volume Descriptor по смещению 41 to 72, такой же идентификатор (для Joilet) находится в Supplementary Volume Descriptor, по тому же смещению.
Как записать? Подготовить фаловую систему диска, согласно ISO 9660 (level 1, 2, 3) + Joilet по-вкусу, в которую и входит Primary (Supplementary) Volume Descriptor как составная часть, и записать все это дело на диск, используя ASPI либо SPTI. Еще можно использовать IMAPI, тогда вообще не нужено заморачиваться — IJolietDiscMaster вся за тебя сделает. Правда это только для XP.
Для записи метки на дискету использовали SetVolumeLabel, при попытке использовать эту же функцию для записи метки на перезаписываемые носители типа CDR(W)/DVDR(W) получаю ошибку 1005 "не определённая файлавая система"
Может уважаемый All подскажет, как правильно записать метку на такие носители (CDR/DVDR) ?
Подскажите, плз, где можно посмотреть работающий пример на базе IJolietDiscMaster?
Re[4]: Записать метку CDR/DVDR
От:
Аноним
Дата:
08.06.05 17:05
Оценка:
Хороший пример.
Только у меня временами
1) не проходит SetActiveDiscRecorder(), вываливается с кодом IMAPI_E_STASHINUSE
2) постоянно вызов RecordDisc() вываливается с кодом IMAPI_E_MEDIUM_INVALIDTYPE (проверял, диск вполне пригодный для записи, Неро пишет на него)
Кто пользовался этим компонентом, посдскажите плз в чем могут быть грабли. Может, у кого есть ещё какой примерчик...
[]
А>1) не проходит SetActiveDiscRecorder(), вываливается с кодом IMAPI_E_STASHINUSE
Скорее всего кто-нить уже пользует компонент, напр. тот же Nero.
А>2) постоянно вызов RecordDisc() вываливается с кодом IMAPI_E_MEDIUM_INVALIDTYPE (проверял, диск вполне пригодный для записи, Неро пишет на него)
IStorage::CreateStream() в качестве 1-го параметра принимает строчку, как сказано в документации, не более 32 символов длиной. Однако, я столкнулся с тем, что длины имен файлов, которые нужно копировать, бывают значительно больше, и прожигалки умеют их записывать.
Я так понимаю, что IJolietDiscMaster записывает имена файлов такие, какие прописаны в том IStorage, который подается в ф-ю AddData().
А как можно записать файл с длиной названия более 32 символов?
Спасибо.