Real burn failed, but simulate success? why?

// it displays following infomation.

Phase: Reading directories
Phase: Creating directories
Phase: Finishing
Phase: Reading directories
Phase: Creating directories
Phase: Checking discs
Phase: Writing to cache
i Caching of files started
i Caching of files completed
i Burn process started at 24x (3,600 KB/s)
Unexpected exception

// this is log file

Windows 2000 5.0
IA32
WinAspi: -
ahead WinASPI: File ‘C:\Program Files\Ahead\Nero\Wnaspi32.dll’: Ver=2.0.1.59, size=160016 bytes, created 2003-12-16 19:18:06
Nero API version: 6.3.0.3
Using interface version: 6.0.0.0
Installed in: C:\Program Files\Ahead\Nero
Application: ,d
Recorder: <ASUS CRW-4824A> Version: 1.35 - HA 1 TA 0 - 6.3.0.3
Adapter driver: <atapi> HA 1
Drive buffer : 2048kB
Bus Type : default (0) -> ATAPI, detected: ATAPI

=== Scsi-Device-Map ===
DiskPeripheral : Maxtor 6Y120L0 atapi Port 0 ID 0 DMA: On
CdRomPeripheral : ASUS CRW-4824A atapi Port 1 ID 0 DMA: Off
CdRomPeripheral : Generic DVD-ROM 1.0 st3shark Port 2 ID 0 DMA: Off

=== CDRom-Device-Map ===
ASUS CRW-4824A F: CDRom0
Generic DVD-ROM G: CDRom1

AutoRun : 1
Excluded drive IDs:
CmdQueuing : 1
CmdNotification: 2
WriteBufferSize: 74448896 (0) Byte
ShowDrvBufStat : 0
EraseSpeed : 0
BUFE : 0
Physical memory : 510MB (522988kB)
Free physical memory: 257MB (263332kB)
Memory in use : 49 %
Uncached PFiles: 0x0
Use Static Write Speed Table: 0
Use Inquiry : 1
Global Bus Type: default (0)
Check supported media : Disabled (0)

25.2.2004
NeroAPI
22:49:46 #1 Text 0 File Reader.cpp, Line 118
Reader running

22:49:46 #2 ISO9660GEN -11 File geniso.cpp, Line 3882
First writeable address = 0 (0x00000000)

22:49:46 #3 ISO9660GEN -11 File geniso.cpp, Line 3882
First writeable address = 0 (0x00000000)

22:49:46 #4 Text 0 File Burncd.cpp, Line 3101
Turn on Track-At-Once, using CD-R/RW media

22:49:46 #5 Text 0 File DlgWaitCD.cpp, Line 240
Last possible write address on media: 359848 ( 79:59.73)
Last address to be written: 21846 ( 4:53.21)

22:49:46 #6 Text 0 File DlgWaitCD.cpp, Line 245
Write in overburning mode: FALSE

22:49:46 #7 Text 0 File DlgWaitCD.cpp, Line 2085
Recorder: ASUS CRW-4824A;
CDR code: 00 97 28 26; OSJ entry from: Multi Media Masters && Machinary SA
ATIP Data:
Special Info [hex] 1: E0 00 A0, 2: 61 1C 1A (LI 97:28.26), 3: 4F 3B 4A (LO 79:59.74)
Additional Info [hex] 1: 00 00 80 (invalid), 2: 00 80 00 (invalid), 3: 00 80 80 (invalid)

22:49:46 #8 Text 0 File DlgWaitCD.cpp, Line 406
>>> Protocol of DlgWaitCD activities: <<<
=========================================

22:49:46 #9 Text 0 File ThreadedTransferInterface.cpp, Line 779
Setup items (after recorder preparation)
0: TRM_DATA_MODE2_2336 (CTransferItem)
2 indices, index0 (150) not provided
original disc pos #0 + 1101 (1101) = #1101/0:14.51
relocatable, disc pos for caching/writing not required/required, no patch infos
-> TRM_DATA_MODE2_2332, 2332, config 0, wanted index0 0 blocks, length 1099 blocks [ASUS CRW-4824A ]
1: TRM_DATA_MODE2_2336 (indeo_510)
2 indices, index0 (150) not provided
original disc pos #0 + 20596 (20596) = #20596/4:34.46
relocatable, disc pos for caching/writing not required/not required, no patch infos
-> TRM_DATA_MODE2_2332, 2332, config 0, wanted index0 0 blocks, length 20594 blocks [ASUS CRW-4824A ]
--------------------------------------------------------------

22:49:46 #10 Text 0 File ThreadedTransferInterface.cpp, Line 948
Prepare recorder [ASUS CRW-4824A ] for write in TAO
DAO infos:
==========
MCN: “”
TOCType: 0x20; Session Closed, disc fixated
Tracks 1 to 2:
1: TRM_DATA_MODE2_2332, 2332/0x00, FilePos 0 349800 2917332, ISRC “”
2: TRM_DATA_MODE2_2332, 2332/0x00, FilePos 2917332 3267132 51297004, ISRC “”
DAO layout:
===========
_Start|___Track|Idx|RecDep|CtrlAdr
-150 | lead-in | 0 | 0x00 | 0x41
-150 | 1 | 0 | 0x00 | 0x41
0 | 1 | 1 | 0x00 | 0x41
1101 | 2 | 0 | 0x00 | 0x41
1251 | 2 | 1 | 0x00 | 0x41
21847 | lead-out | 1 | 0x00 | 0x41

22:49:46 #11 Text 0 File ThreadedTransferInterface.cpp, Line 994
Removed 2 run-out blocks from end of track 1. Length: 1101 -> 1099.

22:49:46 #12 Text 0 File ThreadedTransferInterface.cpp, Line 994
Removed 2 run-out blocks from end of track 2. Length: 20596 -> 20594.

22:49:46 #13 Phase 24 File APIProgress.cpp, Line 253
Caching of files started

22:49:46 #14 Text 0 File Burncd.cpp, Line 4073
Cache writing successful.

22:49:46 #15 Phase 25 File APIProgress.cpp, Line 253
Caching of files completed

22:49:46 #16 Phase 36 File APIProgress.cpp, Line 253
Burn process started at 24x (3,600 KB/s)

22:49:46 #17 Text 0 File Burncd.cpp, Line 5570
Unexpected exception

Existing drivers:

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

Without having more information it is impossible to say why. Are you using NeroAPI or NeroCOM? What flags did you set. What filesystem do you want to burn?

Hello,

I’ve got the same problem. We have an project here written in Delphi 7 which uses DelphiNeroAPI to communicate with the NeroAPI. DelphiNeroAPI itself is compiled with Nero 6 support and in the init procedure of DelphiNeroAPI the API is set up to behave like NeroAPI version 6.3.0.0. After the initialisation of DelphiNeroAPI the following code is executed :


  Registry := TRegistry.Create(KEY_READ);
  Registry.RootKey := HKEY_LOCAL_MACHINE;
  Registry.OpenKey('SOFTWARE\Ahead\Shared', False);

  NeroSettings.nstNeroFilesPath := StrNew(PAnsiChar(Registry.ReadString('NeroAPI')));
  Registry.Free;

  NeroSettings.nstVendor := StrNew('ahead');
  NeroSettings.nstSoftware := StrNew('nero');
  NeroSettings.nstLanguageFile := StrNew('nero.txt');

  CallBack1.ncCallbackFunction := @IdleCallback;
  CallBack1.ncUserData := nil;
  NeroSettings.nstIdle := CallBack1;

  CallBack2.ncCallbackFunction := @UserDialog;
  CallBack2.ncUserData := nil;
  NeroSettings.nstUserDialog := CallBack2;

  NeroSettings.nstEnableOverburn := False;
  NeroSettings.nstOverburnSize   := 0;

  InitErr := NeroInit(@NeroSettings, nil);

  // error handling here

  NeroProgress.npUserData              := @NeroSettings;
  NeroProgress.npProgressCallback      := ProgressCallback;
  NeroProgress.npAbortedCallback       := nil;
  NeroProgress.npAddLogLineCallback    := AddLogLine;
  NeroProgress.npSetPhaseCallback      := SetPhaseCallback;
  NeroProgress.npDisableAbortCallback  := nil;
  NeroProgress.npSetMajorPhaseCallback := nil;
  NeroProgress.npSubTaskProgressCallback := nil;

An NeroDeviceHandle gets set up as soon as an device is selected from an combo box…during init the first (burn-supported) device will be selected. So far so good. The callbacks all point to valid procedure’s (copy/pasted from the sample application of DelphiNeroAPI. In the burn routine an ISO track is being created. This is done by first creating an RootIsoItem (with NeroCreateIsoItem()) and then adjusting the fields to the right values. To add more files an new IsoItem is created and the field NextItem of the RootIsoItem/previous ISO item is given the address of the new IsoItem. While debugging I’ve found out that all the data here (and the pointers to subdirFirstItem’s and NextItem’s) are all correct. After the creating of the ISO Items an ISO track is created :

  NeroWriteCD := AllocMem(SizeOf(NERO_WRITE_CD));
  ZeroMemory(NeroWriteCD, SizeOf(NERO_WRITE_CD));
  NeroWriteCD.nwcdIsoTrack := NeroCreateIsoTrackEx(RootIsoItem, StrNew('CD_test'), NCITEF_USE_JOLIET + NCITEF_CREATE_ISO_FS);
  NeroWriteCD.nwcdpCDStamp := nil;
  NeroWriteCD.nwcdArtist := nil;
  NeroWriteCD.nwcdTitle := nil;
  NeroWriteCD.nwcdCDExtra := false;
  NeroWriteCD.nwcdNumTracks := 0;
  NeroWriteCD.nwcdMediaType := MEDIA_CD;

Finally the flags are set up and the function NeroBurn() will be launched :

  Flags := NBF_WRITE;

  if not cbxEjectCD.Checked then
    Flags := Flags + NBF_DISABLE_EJECT;

  Flags := Flags + NBF_BUF_UNDERRUN_PROT + NBF_CLOSE_SESSION + NBF_DISABLE_ABORT +
    NBF_DETECT_NON_EMPTY_CDRW + NBF_SPEED_IN_KBS;

  errcode := NeroBurn(NeroDeviceHandle, NERO_ISO_AUDIO_MEDIA, NeroWriteCD, Flags,
    NeroDeviceInfos.nsdisDevInfos[Integer(cbDevices.Items.Objects[cbDevices.ItemIndex])].nsdiWriteSpeeds.nsiSupportedSpeedsKBs[cbWriteSpeeds.ItemIndex],
      @NeroProgress);

(The value of NeroDeviceInfos.nsdisDevInfos[Integer(cbDevices.Items.Objects[cbDevices.ItemIndex])].nsdiWriteSpeeds.nsiSupportedSpeedsKBs[cbWriteSpeeds.ItemIndex] = 600). After the NeroBurn function completes the errcode = NEROAPI_BURN_FAILED.
The callbacks produce this output :

11:49:49: ExacLink activated
11:49:49: Reading directories
11:49:49: Creating directories
11:49:49: Checking discs
11:49:50: Writing to cache
11:49:50: Caching of files started
11:49:50: Caching of files completed....
11:49:50: Burn process started at 4x (600 KB/s)
11:49:50: Unexpected exception

NeroGetErrorLog() produces this output :

Windows XP 5.1
IA32
WinAspi: File 'Wnaspi32.dll': Ver=4.70, size=45568 bytes, created 10-12-2001 17:32:34 
ahead WinASPI: File 'C:\Program Files\Ahead\Nero\Wnaspi32.dll': Ver=2.0.1.59, size=160016 bytes, created 16-12-2003 20:18:06 
Nero API version: 6.3.0.2
Using interface version: 6.3.0.0
Installed in: C:\Program Files\Ahead\Nero\
Application: ahead
ero
Recorder:             <SAMSUNG CD-R/RW SW-252F> Version: R800 - HA 1 TA 0 - 6.3.0.2
 Adapter driver:      <atapi>                   HA 1
 Drive buffer  :      2048kB
 Bus Type      :      default (0) -> ATAPI, detected: ATAPI 

=== Scsi-Device-Map ===
DiskPeripheral       : SAMSUNG SV1364D                  atapi Port 0 ID 0  DMA: On 
CdRomPeripheral      : SAMSUNG CD-R/RW SW-252F          atapi Port 1 ID 0  DMA: On 

=== CDRom-Device-Map ===
SAMSUNG CD-R/RW SW-252F    E:   CDRom0
=======================

AutoRun : 0
Excluded drive IDs: 
CmdQueuing     : 1
CmdNotification: 2
WriteBufferSize: 40894464 (0) Byte
ShowDrvBufStat : 0
EraseSpeed     : 0
BUFE           : 0
Physical memory     : 255MB (261620kB)
Free physical memory: 51MB (52564kB)
Memory in use       : 79 %
Uncached PFiles: 0x0
Use Static Write Speed Table: 0
Use Inquiry    : 1
Global Bus Type: default (0)
Check supported media : Disabled (0) 

31.3.2004
NeroAPI
11:16:57	#1 Phase 88 File APIProgress.cpp, Line 253
	ExacLink activated
	
11:16:57	#2 Text 0 File Reader.cpp, Line 118
	Reader running
	
11:16:57	#3 ISO9660GEN -11 File geniso.cpp, Line 3882
	First writeable address = 0 (0x00000000)
	
11:16:57	#4 Text 0 File Burncd.cpp, Line 3101
	Turn on Track-At-Once, using CD-R/RW media
	
11:16:57	#5 Text 0 File DlgWaitCD.cpp, Line 240
	Last possible write address on media:   335974 ( 74:41.49)
	Last address to be written:               6665 (  1:30.65)
	
11:16:57	#6 Text 0 File DlgWaitCD.cpp, Line 245
	Write in overburning mode: FALSE
	
11:16:57	#7 Text 0 File DlgWaitCD.cpp, Line 2085
	Recorder: SAMSUNG CD-R/RW SW-252F;
	   CDRW code: 00 97 22 60; OSJ entry from: Daxon Technology, Inc.
	   ATIP Data:
	     Special    Info [hex] 1: D1 00 C6, 2: 61 16 3C (LI 97:22.60), 3: 4A 29 32 (LO 74:41.50)
	     Additional Info [hex] 1: 02 3A A0, 2: 5A A6 14, 3: 00 00 00 (invalid)
	
11:16:57	#8 Text 0 File DlgWaitCD.cpp, Line 406
	>>> Protocol of DlgWaitCD activities: <<<
	=========================================
	
11:16:57	#9 Text 0 File ThreadedTransferInterface.cpp, Line 779
	Setup items (after recorder preparation)
	 0: TRM_DATA_MODE2_FORM1_NOSUB (CTransferItem)
	    2 indices, index0 (150) not provided
	    original disc pos #0 + 6666 (6666) = #6666/1:28.66
	    relocatable, disc pos for caching/writing not required/required, no patch infos 
	    -> TRM_DATA_MODE2_FORM1_NOSUB, 2048, config 0, wanted index0 0 blocks, length 6664 blocks [SAMSUNG  CD-R/RW SW-252F ]
	--------------------------------------------------------------
	
11:16:57	#10 Text 0 File ThreadedTransferInterface.cpp, Line 948
	Prepare recorder [SAMSUNG  CD-R/RW SW-252F ] for write in TAO
	DAO infos:
	==========
	 MCN: ""
	 TOCType: 0x20; Session Closed, disc not fixated
	 Tracks 1 to 1:
	   1: TRM_DATA_MODE2_FORM1_NOSUB, 2048/0x00, FilePos             0        307200      13959168, ISRC ""
	DAO layout:
	===========
	 __Start_|____Track_|_Idx_|_RecDep_|_CtrlAdr_
	    -150 |  lead-in |   0 |   0x00 |  0x41
	    -150 |        1 |   0 |   0x00 |  0x41
	       0 |        1 |   1 |   0x00 |  0x41
	    6666 | lead-out |   1 |   0x00 |  0x41
	
11:16:57	#11 Text 0 File ThreadedTransferInterface.cpp, Line 994
	Removed 2 run-out blocks from end of track 1. Length: 6666 -> 6664.
	
11:16:58	#12 Phase 24 File APIProgress.cpp, Line 253
	Caching of files started
	
11:16:58	#13 Text 0 File Burncd.cpp, Line 4073
	Cache writing successful.
	
11:16:58	#14 Phase 25 File APIProgress.cpp, Line 253
	Caching of files completed....
	
11:16:58	#15 Phase 36 File APIProgress.cpp, Line 253
	Burn process started at 4x (600 KB/s)
	
11:16:58	#16 Text 0 File Burncd.cpp, Line 5570
	Unexpected exception
	

Existing drivers:
File 'Drivers\ASPI32.SYS': Ver=4.70, size=17101 bytes, created 10-12-2001 17:29:42 
File 'Drivers\PXHELP20.SYS': Ver=2.02.62a, size=20016 bytes, created 28-10-2003 12:02:00 (Prassi/Veritas driver for win 2K)

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

The media I’m using is an 650MB CD-RW (with max. speed of 4x). Does anybody have an idea what’s the problem here? What also bothers me is the last warning/error that NeroGetErrorLog() gave me : Registry Keys: HKLM\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\AllocateCDROMs : 0 (Security Option). I’ve located this key in the registry but adjusting or deleting/renaming it doesn’t make any difference.

I guess the problem is that you set the flag NBF_DISABLE_ABORT but you set the npDisableAbortCallback to NULL. This gave an crash in previous NeroAPI versions. Current NeroAPI version check if the pointer is valid.

This indeed was the cause of my problem. Thank you very much for your help and your quick response!