I found a “solution” for our problem. After having a close look at the memory area of the returned NERO_SCSI_DEVICE_INFO object I saw a strange 3-byte shift starting from the nsdiDriveLetter member. I changed the type of the member in NeroAPI.h from char to char and, believe it or not, it works!
Even the nsdiReadSpeeds and nsdiWriteSpeeds members suddenly have meaningful values!
The same solution worked for the NERO_CD_INFO structure (that seemed to be corrupted as well); I changed the sizes of the ncdiArtist and ncdiTitle member from 65 to 66 and the size of the ncdiReserved array from 29 to 28, and suddenly everything dropped into the right place.
The modified structures look as follows:
typedef struct tag_NERO_SCSI_DEVICE_INFO
char nsdiDriveLetter; //changed from char to char
typedef struct tag_NERO_CD_INFO
char ncdiArtist; // changed from 65 to 66
char ncdiTitle; // changed from 65 to 66
DWORD ncdiReserved; // changed from 29 to 28
I did not look for differences in the other structures returned by the Nero functions.
Dear people at Ahead, please tell me if you have any idea what is happening here! I am especially confused about the fact that neroFiddles works fine with a different header file!
Have a nice weekend!
Looking forward to any replies,