Click here to Skip to main content
13,352,157 members (78,557 online)
Click here to Skip to main content
Add your own
alternative version


39 bookmarked
Posted 19 Sep 2002

Write a UDF CDR

, 22 Jul 2003
Rate this:
Please Sign up or sign in to vote.
How to write a CDR in UDF


Some electronic devices need to use CDR as storage media, and you have to append several files each time before the space is used out. In this case, UDF is a good solution, since for each writing, only 7 logic blocks of overhead are used. (Multisession CDs use several minutes for each session's leadout)


How to use the demo

(You need WNASPI32.dll to run the demo, which could be downloaded from Ahead.)

  • Select the CDR drive you want to write to.
  • Insert a blank disc, "Format" it.
  • Browse to select files, and write to the disc. (Now you can view the files using DirectCD).
  • You can list the content of the CDR, and restore files to hard disk
  • Close Session, now any CD drive can read it..


How to use the source code

//Create a variable for your drive
SCSI2 m_drive;
//m_HA:HostAdpaterNumber,m_ID:SCSI ID,m_LUN:LogicUnitNumber
//For a blank CDR, you need to format it 
//Then you can write files onto it
//Append more files here...
//After you have writen ALL the files, close the session
//Now it's readable by regular CDROM drive.


Some useful functions

SCSIRead()      //Read data from CDR
WritePacket()      //Write packets to CDR
ReadTrackInfo()      //Read track info, like next writable address
ReadDiskInfo()      //Read disc info, like capacity
TestUnitReady()      //See if the drive is ready
LoadUnload()      //Eject/Close the tray
SetWriteParameters()    //Set write mode
SCSISetSpeed()      //Set read/write speed
ListFiles()      //List files on the CDR
SaveFileAs()      //Save file on CDR to hard disk

If you want to know more inside stuff

Things you need to have:

  • SCSI command block structure (ANSI X3.131-1994)
  • SCSI multimedia commands-2 (ANSI NCITS 333-2000)
  • OSTA specs: ECMA-167, Universal Disk Format Specification, ECMA-119

Things you need to know:

  • SCSI2 block command structure
  • Use of ASPI
  • Concepts about CDR: track, session, logical blocks, PMA, ATIP, TOC, write modes...
  • UDF(Volume structure, file system)

More info at my website.

Revision History

  • Ver 1.01
    • More comments, some code clean up
    • New function: ListFiles()
    • New function: SaveFileAs()
  • Ver 1.02
    • Some changes on the demo application


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

United States United States
Wheels I reinvented on various embedded systems

*License Plate Reader
*TCP/IP stack
*Web Server
*Ethernet/SCSI/USB drivers
*FAT32/UDF file system
*JPEG/MJPEG encoder

You may also be interested in...


Comments and Discussions

Questionwhat is your OS? (null) Pin
Anonymous6-Feb-03 21:31
sussAnonymous6-Feb-03 21:31 
Anonymous6-Feb-03 16:26
sussAnonymous6-Feb-03 16:26 
QuestionHow to read VAT ICB? Pin
Anonymous5-Feb-03 14:27
sussAnonymous5-Feb-03 14:27 
AnswerRe: How to read VAT ICB? Pin
Hongfeng6-Feb-03 5:16
memberHongfeng6-Feb-03 5:16 
GeneralRe: How to read VAT ICB? Pin
chimpanzeeVN21-Oct-03 0:55
memberchimpanzeeVN21-Oct-03 0:55 
GeneralRe: How to read VAT ICB? Pin
Anonymous21-Oct-03 17:16
sussAnonymous21-Oct-03 17:16 
QuestionWhy Can I Record CD? Pin
ryushark27-Jan-03 15:36
memberryushark27-Jan-03 15:36 
AnswerRe: Why Can I Record CD? Pin
Christian Graus27-Jan-03 15:48
memberChristian Graus27-Jan-03 15:48 

In other words, when this was first posted, it contained software which the author did not have the right to distribute, and he removed it when this was pointed out to him. As a result, this code won't work for most CD-RW drives, at least not without the dll the author removed.


No offense, but I don't really want to encourage the creation of another VB developer.
- Larry Antram 22 Oct 2002

C# will attract all comers, where VB is for IT Journalists and managers - Michael
P Butler 05-12-2002

It'd probably be fairly easy to make a bot that'd post random stupid VB questions, and nobody would probably ever notice - benjymous - 21-Jan-2003
GeneralRe: Why Can I Record CD? Pin
Mike Nordell27-Jan-03 16:48
memberMike Nordell27-Jan-03 16:48 
GeneralDemo Project File Problem -- no rc file Pin
Anonymous27-Jan-03 5:28
sussAnonymous27-Jan-03 5:28 
GeneralRe: Demo Project File Problem -- no rc file Pin
ryushark27-Jan-03 15:28
memberryushark27-Jan-03 15:28 
GeneralATAPI Pin
Codegg12349-Dec-02 9:19
memberCodegg12349-Dec-02 9:19 
GeneralRe: ATAPI Pin
Kochise17-Dec-02 0:56
sussKochise17-Dec-02 0:56 
GeneralRe: ATAPI Pin
Lailornd21-Dec-02 1:53
memberLailornd21-Dec-02 1:53 
GeneralRe: ATAPI Pin
Hongfeng31-Dec-02 12:29
memberHongfeng31-Dec-02 12:29 
GeneralRe: ATAPI Pin
Kochise2-Jan-03 1:17
sussKochise2-Jan-03 1:17 
GeneralRe: ATAPI Pin
Tuan Hung26-Apr-05 19:39
memberTuan Hung26-Apr-05 19:39 
GeneralUDF file size limit Pin
Mark Gargett10-Oct-02 23:10
sussMark Gargett10-Oct-02 23:10 
GeneralRe: UDF file size limit Pin
mgargett14-Oct-02 6:46
sussmgargett14-Oct-02 6:46 
GeneralRe: UDF file size limit Pin
Hongfeng14-Oct-02 12:16
memberHongfeng14-Oct-02 12:16 
GeneralATAPI drive Pin
Hongfeng3-Oct-02 8:34
memberHongfeng3-Oct-02 8:34 
GeneralRe: ATAPI drive Pin
Chisoft8-Oct-02 23:40
sussChisoft8-Oct-02 23:40 
Questionhow about ISO and CDA ? Pin
Mario M.3-Oct-02 1:29
memberMario M.3-Oct-02 1:29 
AnswerRe: how about ISO and CDA ? Pin
Hongfeng3-Oct-02 4:43
memberHongfeng3-Oct-02 4:43 
GeneralRe: how about ISO and CDA ? Pin
Mario M.3-Oct-02 13:22
memberMario M.3-Oct-02 13:22 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.180111.1 | Last Updated 23 Jul 2003
Article Copyright 2002 by spotofleopard
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid