NeroCOM Makes Great Coasters! :)

vbimport

#1

I’m writing a little program to backup my LAN to DVDs using NeroCOM (I just purchased it yesterday, and its version 6…20, which I think is the latest). My system is WinXP SP2, w/512MB of RAM and 10+GB of disk space.

Unfortunately, the NeroCOM sample is creating disks that can’t be read on my system (i.e., the drive light flashes and flashes, the disc spins up and spins down, etc.)

Nero itself has no problems creating CDs (or DVDs, for that matter) on my system.

Here is the output of the NeroCOM log:

Reading directories
Creating directories
Checking discs
Writing to cache
Caching of files started
Caching of files completed
Simulating
Simulation started at 8x (1,200 KB/s)
Writing tracks
Simulation completed successfully at 8x (1,200 KB/s)
Writing to disc
Burn process started at 8x (1,200 KB/s)
Writing tracks
Writing Lead-in and Lead-out
Burn process completed successfully at 8x (1,200 KB/s)

1A23-0806-7130-1812-3099-7510

Windows XP 5.1
IA32
WinAspi: File ‘Wnaspi32.dll’: Ver=4.71 (0001), size=45056 bytes, created 8/14/2002 3:03:36 PM
ahead WinASPI: File ‘C:\Program Files\Ahead\Nero\Wnaspi32.dll’: Ver=2.0.1.68, size=160016 bytes, created 7/22/2004 5:33:44 PM
Nero API version: 6.3.1.20
Using interface version: 6.3.1.11
Installed in: C:\Program Files\Ahead\Nero
Application: Nero - Burning Rom\ahead
Recorder: <CDWRITER IDE5224> Version: 0012 - HA 2 TA 1 - 6.3.1.20
Adapter driver: <atapi> HA 2
Drive buffer : 2048kB
Bus Type : default (0) -> ATAPI, detected: ATAPI

=== Scsi-Device-Map ===
DiskPeripheral : WDC WD740GD-00FLA1 27.0 si3112 Port 0 ID 0 DMA: Off
CdRomPeripheral : ATAPI DVD-ROM 16X atapi Port 1 ID 0 DMA: Off
DiskPeripheral : IOMEGA ZIP 100 atapi Port 1 ID 1 DMA: Off
CdRomPeripheral : _NEC DVD_RW ND-3500AG atapi Port 2 ID 0 DMA: On
CdRomPeripheral : CDWRITER IDE5224 atapi Port 2 ID 1 DMA: On

=== CDRom-Device-Map ===
ATAPI DVD-ROM 16X E: CDRom0
_NEC DVD_RW ND-3500AG W: CDRom1
CDWRITER IDE5224 F: CDRom2

AutoRun : 1
Excluded drive IDs:
WriteBufferSize: 74448896 (0) Byte
ShowDrvBufStat : 0
BUFE : 0
Physical memory : 510MB (523056kB)
Free physical memory: 293MB (300940kB)
Memory in use : 42 %
Uncached PFiles: 0x0
Use Static Write Speed Table: 0
Use Inquiry : 1
Global Bus Type: default (0)
Check supported media : Disabled (0)

15.9.2004
NeroAPI
10:26:30 AM #1 Text 0 File Reader.cpp, Line 126
Reader running

10:26:30 AM #2 Text 0 File Writer.cpp, Line 124
Writer CDWRITER IDE5224 running

10:26:30 AM #3 Text 0 File AudioCompilationImpl.cpp, Line 817
DRM: StartDrmRecording(RealRec:1, ImageRec:0, Copies:1)
DRM: Beginning burn process.

10:26:30 AM #4 ISO9660GEN -11 File geniso.cpp, Line 3899
First writeable address = 0 (0x00000000)

10:26:30 AM #5 Text 0 File Burncd.cpp, Line 3173
Turn on Track-At-Once, using CD-R/RW media

10:26:30 AM #6 Text 0 File DlgWaitCD.cpp, Line 247
Last possible write address on media: 359845 ( 79:59.70)
Last address to be written: 599 ( 0:09.74)

10:26:30 AM #7 Text 0 File DlgWaitCD.cpp, Line 259
Write in overburning mode: NO

10:26:30 AM #8 Text 0 File DlgWaitCD.cpp, Line 2162
Recorder: CDWRITER IDE5224;
CDR code: 00 97 32 19; OSJ entry from: Prodisc Technology Inc.
ATIP Data:
Special Info [hex] 1: E0 00 B0, 2: 61 20 13 (LI 97:32.19), 3: 4F 3B 47 (LO 79:59.71)
Additional Info [hex] 1: 00 00 80 (invalid), 2: 00 80 00 (invalid), 3: 00 80 80 (invalid)

10:26:30 AM #9 Text 0 File DlgWaitCD.cpp, Line 420
>>> Protocol of DlgWaitCD activities: <<<
=========================================

10:26:30 AM #10 Text 0 File ThreadedTransferInterface.cpp, Line 813
Setup items (after recorder preparation)
0: TRM_DATA_MODE1 (CTransferItem)
2 indices, index0 (150) not provided
original disc pos #0 + 600 (600) = #600/0:8.0
relocatable, disc pos for caching/writing not required/required, no patch infos
-> TRM_DATA_MODE1, 2048, config 0, wanted index0 0 blocks, length 598 blocks [CDWRITER IDE5224 ]
--------------------------------------------------------------

10:26:30 AM #11 Text 0 File ThreadedTransferInterface.cpp, Line 984
Prepare recorder [CDWRITER IDE5224 ] for write in TAO
DAO infos:
==========
MCN: “”
TOCType: 0x00; Session Closed, disc fixated
Tracks 1 to 1:
1: TRM_DATA_MODE1, 2048/0x00, FilePos 0 307200 1536000, ISRC “”
DAO layout:
===========
_Start|___Track|Idx|RecDep|CtrlAdr
-150 | lead-in | 0 | 0x00 | 0x41
-150 | 1 | 0 | 0x00 | 0x41
0 | 1 | 1 | 0x00 | 0x41
600 | lead-out | 1 | 0x00 | 0x41

10:26:30 AM #12 Text 0 File ThreadedTransferInterface.cpp, Line 1030
Removed 2 run-out blocks from end of track 1. Length: 600 -> 598.

10:26:30 AM #13 Phase 24 File APIProgress.cpp, Line 273
Caching of files started

10:26:30 AM #14 Text 0 File Burncd.cpp, Line 4183
Cache writing successful.

10:26:30 AM #15 Phase 25 File APIProgress.cpp, Line 273
Caching of files completed

10:26:30 AM #16 Phase 32 File APIProgress.cpp, Line 273
Simulation started at 8x (1,200 KB/s)

10:26:30 AM #17 Text 0 File ThreadedTransferInterface.cpp, Line 2344
Verifying disc position of item 0 (relocatable, disc pos, no patch infos, orig at #0): write at #0

10:26:30 AM #18 Text 0 File Mmc.cpp, Line 20531
Set BUFE: Super Link -> OFF

10:26:31 AM #19 Text 0 File ThreadedTransfer.cpp, Line 229
all writers idle, stopping conversion

10:26:32 AM #20 Phase 33 File APIProgress.cpp, Line 273
Simulation completed successfully at 8x (1,200 KB/s)

10:26:33 AM #21 Phase 36 File APIProgress.cpp, Line 273
Burn process started at 8x (1,200 KB/s)

10:26:33 AM #22 ISO9660GEN -11 File geniso.cpp, Line 3899
First writeable address = 750 (0x000002EE)

10:26:33 AM #23 Text 0 File ThreadedTransferInterface.cpp, Line 2344
Verifying disc position of item 0 (relocatable, disc pos, no patch infos, orig at #0): write at #750

10:26:33 AM #24 Text 0 File Mmc.cpp, Line 20531
Set BUFE: Super Link -> OFF

10:26:35 AM #25 Text 0 File ThreadedTransfer.cpp, Line 229
all writers idle, stopping conversion

10:26:37 AM #26 Text 0 File Mmc.cpp, Line 15356
<CDWRITERIDE5224 > start Close Session

10:27:11 AM #27 Phase 37 File APIProgress.cpp, Line 273
Burn process completed successfully at 8x (1,200 KB/s)

10:27:12 AM #28 Text 0 File AudioCompilationImpl.cpp, Line 828
DRM: DRM burn session terminated.

10:27:12 AM #29 Text 0 File AudioCompilationImpl.cpp, Line 857
DRM: Closing entire DRM handling. Bye.

Existing drivers:
File ‘Drivers\CDRALW2K.SYS’: Ver=6.0.0.171 , size=24839 bytes, created 1/13/2003 10:19:26 AM
File ‘Drivers\ASPI32.SYS’: Ver=4.71 (0001), size=17005 bytes, created 8/14/2002 3:03:36 PM

Registry Keys:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\AllocateCDROMs : 0 (Security Option)

Burn finished successfully!

I know that the NeroCOM sample is pretty plain vanilla… but can anyone point me in the direction of fixing it? Or suggesting what might be going wrong?

Thanx in advance!

  • Mark

#2

Something else is wrong! Your disc burn seems to finish fine according to the log you sent.

Are you saying that your own recorder cannot read the disc you have just written to even though success was reported?


#3

Yes, that’s correct.

The NeroCOM sample creates a disc – apparently successfully, so far as it is concerned – which the exact same drive on the same computer can’t read. I’ve also tested the discs in other drives on the same machine, and they refuse to read it, too.

The Nero program itself, though, creates discs that can be read on the same drives on the same computer (as well as other drives, of course).

I’m wondering if there’s some kind of finalization step that the NeroCOM sample doesn’t do.

  • Mark

#4

Can you post relevant portions of your code? Can you show your burn flags?

How exactly can’t you read the disc? Does it spin forever or does it show some read errors? Have you tried a disc info from within Nero?


#5

Alex,

Can you post relevant portions of your code?

While my code doesn’t work either, the thing I’m really concerned about is that the sample NeroFiddlesCOM project (supplied as part of the NeroSDK download) doesn’t work, either. If you want to see the code for NeroFiddlesCOM, it’s probably best to get it from Nero.

Can you show your burn flags?

NeroFiddlesCOM has these burn flags:

NERO_BURN_OPTION_CREATE_ISO_FS + NERO_BURN_OPTION_USE_JOLIET

How exactly can’t you read the disc?

It doesn’t show up as a valid disc under WinXP.

Does it spin forever or does it show some read errors?

It spins for a while (read light flickering), “hesitates”, starts to spin up to the (52x) speed, and then drops back to a slower spin with a flickering read light. After another 20 seconds or so it just stops (stops spinning, drive light out).

Have you tried a disc info from within Nero?

BTW, running a disc info is an exercise in frustration; at several points in the launch Nero/select recorder/get disc info cycle the program seems to have to wait for the drive containing the disc to respond “properly”. Since the disc is munged, it has to endure multiple time outs.

Here’s what it shows:

The disc is finalized (i.e., single session)

The first session shows as “UPC/EAN code”

+Session 01 (3MB)

  • Track 01 0:02:00 0:10:00 (2MB), Data (mode 1)
  • Track 02 0:12:00 0:08:00 (2MB) ISO 9660/Joliet (mode 1)

Hope this means something to you.


#6

Okay, I think I’ve figured out what’s wrong.

Comparing the source code for NeroFiddlesCOM to NeroFiddlesAPI (which >>is<< able to create readable CDs on my system) shows one interesting difference in how the BurnIsoAudioCD() method is called.

In NeroFiddlesCOM, the burnFlags parameter is set to:

NERO_BURN_FLAGS.NERO_BURN_FLAG_SIMULATE + NERO_BURN_FLAGS.NERO_BURN_FLAG_WRITE

while in NeroFiddlesAPI, it’s set to either
NERO_BURN_FLAGS.NERO_BURN_FLAG_WRITE or
NERO_BURN_FLAGS.NERO_BURN_FLAG_SIMULATE, depending upon a commandline switch.

There’s also a note in the NeroFiddlesAPI source code that implies setting the two flags simultaneously might be problematic.

I tried eliminating the SIMULATE flag and, voila!, no more coasters!

I think this also explains why the Disc Info in Nero showed the messed up discs as having multiple entries under a single session. Perhaps setting both flags simulatenously causes two burns, but in such a way that the disc gets munged.

  • Mark

#7

As a side note, I don’t think you should be using the addition (+) operator. I am under the strong impression that you should have used the binary or (|) operator there.


#8

When combining flags there is absolutely no difference in using the addition or binary OR operator. Flags usually don’t overlap in terms of bits. If they did they wouldn’t be called flags.