NEC 2500A buffer underrun protection

Hi, I hope someone can help.

I’m using NeroCom in VB6 Professional, with an NEC2500A drive. NEC says the drive has this protection, but BufUnderrunProtName returns a null string and Capabilities reports no protection.
I’m picking up the drive OK, and can successfully burn CD’s using NeroCom.

Nero6 full application when used with the same drive reports that buffer underrun protection is activated.

How do I get NeroCom to recognise the protection please, or is that impossible?

Could one of the developers consider this please, as it must be something to do with the inner workings of NeroCom. The NEC drive uses JustLink according to the drive review on this site. I’ve tried disabling InCD with no effect.

If Nero 6 activates it, why doesn’t NeroCom?

I only use VB so can’t test the NeroAPI itself.

You could try running NeroCMD to see its report. You should get the same result as reported by NeroCOM. Use the following syntax:

nerocmd --drivename G --driveinfo

…where G is your drive letter. If underrun protection is supported underrun_prot shoud appear under Capabilities.

If things don’t come out as expected, then it is bad luck for you. You might try updating to the latest Nero version and see if that changes anything.

Thanks for your reply. Here is a dump from NeroCmd (without updating). As far as I can see buffer underrun should be supported in NerCom for this drive?

Microsoft Windows XP [Version 5.1.2600]
© Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Alan>cd c:\program files\ahead
ero

C:\Program Files\Ahead\Nero>nerocmd --drivename H --driveinfo
Drive letter : H
Device name : NEC DVD_RW ND-2500A
Device id : 1
Host adapter name : atapi
Host adapter number : 1
Underrun protection : <supported>
Drive buffer size : 00000800
Mandatory BUP speed : <none>
Device type : WORM
Media support : DVD+R/RW, DVD-R/RW, CD-R/RW, Fixed Packetwriting
Capabilities : allowed dao read_cd_text variable_pauses_in_tao dao_write

cd_text underrun_prot dvd+vr
Read speeds : 1, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30,
32, 34, 36, 38, 40
Base speed in KB/s : 150
Write speeds : 4, 8, 16, 20, 24, 32
Base speed in KB/s : 150
Ok.

C:\Program Files\Ahead\Nero>

Here is the code I am using. Apart from some minor additions and changes it is the same as NeroFiddles

Private Sub identifyBurner()
Set nero = New nero

ProgressBar.Value = 0
strMessages = ""
Dim drives As INeroDrives
Set drives = nero.GetDrives(NERO_MEDIA_CDR)

If drives.Count &gt; 1 Then
For myIndex = 0 To drives.Count - 2 'ignore virtual drive
    AvailableDevices.AddItem drives(myIndex).DeviceName, myIndex
Next
AvailableDevices.ListIndex = 0 'default
End If

ErrHandler:
Exit Sub
End Sub

Private Sub cmdBurn_Click()

AvailableDevices.Enabled = False
cmdAbort.Enabled = True
cmdBurn.Enabled = False

Set Folder = New NeroFolder
Dim drives As INeroDrives
Set drives = nero.GetDrives(NERO_MEDIA_CDR)
Set drive = drives(AvailableDevices.ListIndex)

Dim testIt As String
testt = drive.BufUnderrunProtName
Debug.Print testIt


Dim isotrack As NeroISOTrack
Set isotrack = New NeroISOTrack
isotrack.Name = sessionRef
isotrack.RootFolder = Folder
Dim file As NeroFile

isotrack.BurnOptions = NERO_BURN_OPTION_CREATE_ISO_FS + NERO_BURN_OPTION_USE_JOLIET

'changes added to allow for buffer underrun protection
If drive.Capabilities = NERO_CAP_BUF_UNDERRUN_PROT Then
strMessages = strMessages + “Buffer underrun protection activated” & vbCrLf
drive.BurnIsoAudioCD “Test”, “Test2” , 0, isotrack, Nothing, Nothing, NERO_BURN_FLAG_SIMULATE + NERO_BURN_FLAG_BUF_UNDERRUN_PROT + NERO_BURN_FLAG_VERIFY + NERO_BURN_FLAG_WRITE, 0, NERO_MEDIA_CD
GoTo quit
Else
strMessages = strMessages + “Warning - no buffer underrun protection!” & vbCrLf
drive.BurnIsoAudioCD “Test”, "Test2 " , 0, isotrack, Nothing, Nothing, NERO_BURN_FLAG_SIMULATE + NERO_BURN_FLAG_VERIFY + NERO_BURN_FLAG_WRITE, 0, NERO_MEDIA_CD
GoTo quit
End If

handle_error:
strMessages = strMessages + Err.Description + Chr(13) + Chr(10) + nero.LastError
edtMessages = strMessages
quit:
End Sub

It always produces the warning string, and testIt returns as “” I have substituted “Test” and “Test2” for my application strings which I don’t particularly want to publicise here, hope that is OK. All variables are declared here or elsewhere in the module as I use Option Explicit.

I just noticed that where it says
Underrun protection: the text from the report has been stripped out on posting the reply, presumably because it looked like an HTML tag? It says “supported” between a right and left arrow. GIF file attached


As far as I can see buffer underrun should be supported in NerCom for this drive?
Yes, and it probably is. The problem is in your code. See the following line:

If drive.Capabilities = NERO_CAP_BUF_UNDERRUN_PROT Then 

You should not do a direct comparison. NERO_CAP_BUF_UNDERRUN_PROT is just one of many flags reported by the Capabilites property. You need to check whether that particular bit is set. To do this, you should AND the two values and see if the result is non-zero. I cannot remember the exact VB syntax right now.

Underrun protection: the text from the report has been stripped out on posting the reply, presumably because it looked like an HTML tag? It says “supported” between a right and left arrow. GIF file attached
Yes, <supported> means that the buffer underrun protection is supported but the exact technology name is not known.<!-- / message --><!-- attachments -->

Thanks for the prompt reply.

I couldn’t find the syntax for the Capabilities Property in the guide, what was there just confused me so I did my best guess. Could you at some point find out and post it here please, as I presume others might also be interested?

If Drive.Capabilities And NERO_CAP_BUF_UNDERRUN_PROT Then

It all works fine now, thanks a lot.