StarBurn SDK FAQ
- How can I enable debug logging with StarBurn SDK?
- StarBurn works perfectly from Administrator account but does not work at all (no devices found) w/o admin rights. What should I do?
- What are ASPI, SPTI and SPTD? Why should I have wnaspi32.dll shipped with my software? Is there any way to avoid this?
- What StarBurn files should I have as part of my own application installation?
- Created DVD-Video compilation works fine with software DVD player but my hardware DVD player refused to play it. What's wrong?
- Why my DVD burners refuse to burn DVDs in Session-at-Once and Disc-at-Once recording modes?
- How could I get progress callbacks when doing rewritable disc erase operation?
- I have VC6 and have problems building full static StarBurn applications. Compiler says about unreferenced __security_check_cookie, __security_cookie, __seh_epilog, __seh_prolog, __alldvrm, __aulldvrm and so on. VC7 and up worksjust fine but we really need VC6 builds for our customer! What should we do?
- How could I stop the CD auto play dialog from popping up every time a user inserts a disc and closes the drive?
- Why does StopPlayScan API call fail on some media? I use it to show the information in a session that has just finished burning.
- Why StarBurnXC#, MSVC and VB.NET samples don't run on my computer? I get error "The application failed to initialize properly (0xc0000135). Click on OK to terminate the application" (Windows XP) or "The dynamic link library mscoree.dll could not be found in the specified path..." (Windows 2000).
First of all you'll have to use Debug version of StarBurn.dll. Replace StarBurn.dll with the one shipped in "Bin\Core\StarBurn Core\libcmt[msvcrt]\Debug\i386[amd64]\" folder (StarBurnX component is already built with log files support so no additional activities required).
Then you need to decide - how do you want to catch logs?
- Trace to system debug output (any debug output hooker can view them - we recommend either DebugView from www.sysinternals.com or DbgMon from www.osr.com)
- Saved to the log file
- Output to system console
- Write log text buffer to custom file handle.
For setting debug output method and debug output file path you need to use
StarBurn_UpStartExEx(..) API call.
Please keep in mind: all of the file log entries are appended! So it's a good idea to delete old file before starting StarBurn application if you want to send log to somebody (for example to us for analyze). We don't need whole of your development history stored there from the very beginning of the Earth
StarBurn works perfectly from Administrator account but does not work at all (no devices found) w/o admin rights. What should I do?
Historically (from early UNIX times) it was decided it's a bad idea to provide raw device access to the users w/o root (Admin) rights because of the security reasons. So StarBurn by default does not work w/o such rights as well. However if it's critical features for you there's a way to make it work. Using special driver located in "Bin\StarOpen\Debug[Release]\i386[amd64]" (paths are different for debug and release version and for 32-bit and 64-bit operating systems). Just copy it to Windows [or whatever your Windows folder is called]\System32\Drivers folder, apply StarOpen.reg from "Bin\StarOpen" folder and reboot. After rebooting you'll have StarBurn SDK and all of it applications having free access to your CD/DVD burners w/o Admin rights. StarOpen has extra feature - it allows opening devices in truly "exclusive" way. So no single software would be able to access them while they are used by StarBurn SDK or StarBurn applications. You need to set "Exclusive" to "1" in StarOpen.reg. Driver restart required to update the parameters. StarOpen driver is used by both ASPI and SPTI transports.
Alternative way to achieve the same goal is installing SPTD (SCSI Pass-Through Direct) driver from Duplex Secure Inc. This driver has extra benefit of hiding SCSI traffic between application and burner and providing 100% safe and secure access to the burner. No single SCSI filter driver would break burning process and result coaster! SPTD is shipped with StarBurn SDK and is completely re-distributable.
Please keep in mind: there is other software hacking system registry to allow software running w/o Admin rights to access raw devices. However if in case of StarBurn SDK this feature is private, other software just creates backdoor lowering down system security level. Just never allow anybody to have any backdoors or you'd lose your system installation and critical data one day.
What are ASPI, SPTI and SPTD? Why should I have wnaspi32.dll shipped with my software? Is there any way to avoid this?
What are ASPI, SPTI and SPTD? Why should I have wnaspi32.dll shipped with my software? Is there any way to avoid this? ASPI stands for "Advanced SCSI Programming Interface" and it was standard way for accessing SCSI devices under early versions of Windows. Later ATAPI (and other interface) devices got SCSI-like interface and it was easy to have single way of programming them at low level. Starting from Windows NT ASPI support was dropped by Microsoft (and replaced with SPTI, stands for "SCSI Pass-Through Interface") but a lot of people found easier to have ONE way of coding for all of the supported operating systems then just treat every single OS in the other way. So if you need Windows 95/98/Me line of the operating systems - please stick with ASPI and use StarBurn_CdvdBurnerGrabber_Create(...) API call to create burning device object. Windows 95/98/Me has ASPI stack built-in and you may use Rocket Division Software ASPI layer as redistributable WnASPI32.dll file shipped together with your software if you run it under Windows NT/2000/XP/2003/Vista/2008/7/2012/8/2016/10. Please note that other ASPI layers may work with StarBurn and may not work with StarBurn. We've been tested with own one and Adaptec ASPI layers only.
However if you don't plan to use old and unsupported by OS vendor itself systems and want to stick with NT-like operating systems (NT itself, XP, Vista and Longhorn) only use StarBurn_CdvdBurnerGrabber_CreateEx(...) API call. It would end with SPTI calls finally. In such a case you don't need WnASPI32.dll at all!
Also there's third way to send commands to the device and we recommend it. Through the special filter driver called SPTD (SCSI Pass-Through Direct). It has a great feature of hiding all of the data traffic between application and raw device. So it's nearly impossible to trace it and break the burning process (quite a lot of poorly designed software like ant viruses and other burning applications can do this). Just install SPTD layer shipped with StarBurn SDK and use StarBurn_CdvdBurnerGrabber_CreateExEx(...) API call to create your burner object. Also you need to ship file sptdintf.dll with your software.
So, if other burning software forces you to stick with only one of the programming interfaces to talk to raw device - StarBurn know THREE different ways to do this. And you can pick up the one working for you in the best way.
Please see FindDevice, FindDeviceEx and FindDeviceExEx samples from
"Samples\StarBurn Core\C" for more of the details.
First it's WnASPI32.dll (see Q3). It depends upon you - do you use it or not. So if you use ASPI - you need it, if you're using SPTI or SPTD (private Daemon Tools API) - you don't need WnASPI32.dll as part of your own installation. WnASPI32.dll file you can find in "Bin\Core\StarBurn Core\msvcrt[libcmt]\Debug[Release]\i386[amd64] " folder.
Then go StarBurn.dll. If you're linking statically to StarBurn.lib - you don't need StarBurn.dll, if you're linking dynamically to StarBurn.dll - of course you need it. StarBurn.dll file you can find in "Bin\Core\StarBurn Core\msvcrt[libcmt]\Debug[Release]\i386[amd64] " folder.
Then go StarBurn_VideoCD.iso and StarBurn_SuperVideoCD.iso templates. If you're burning Video CD and Super Video CD discs - you need them shipped. If you don't burn such a video formats - you don't need such files at all. StarBurn_VideoCD.iso and StarBurn_SuperVideoCD.iso you can find in "Bin\Core\Common" folder.
Then go ogg.dll, vorbis.dll and vorbisfile.dll. If your application wantsto burn Audio CDs with automatic decompression from OGG VORBIS files - you need three of the listed files shipped with your application. If you're not dealing with compressed OGG stuff- don't mess with these DLLs at all. If you use StarBurn_StarWave2_EncodeMP3OGGFromWAV( ...) API callfor conversion from WAV format to MP3 then you additionally need nlame.dll file shipped with StarBurn SDK. You can find ogg.dll, vorbis.dll, vorbisfile.dll and nlame.dll files inside "Bin\Core\Common" folder.
Finally if you're using StarBurnX component of course you need to have a copy of it as part of your own application installation. Please also take a look at StarBurnX-Install.bat and StarBurnX_UnInstall.bat files located in "\Bin\Core\StarBurnX" folder of the StarBurn. They provide you with a sample batch code how to either install or uninstall StarBurnX component on your user machine.
That's all! No additional stuff is needed.
Created DVD-Video compilation works fine with software DVD player but my hardware DVD player refused to play it. What's wrong?
First of all make sure you're using StarBurn_DVDVideo_Create(...) and rest of the DVD-Video API calls to have your DVD-Video compilation mastered. Old code creates UDF/ISO9660 bridge file system (also DVD-Video compatible) but it does not patch IFO/BUP files and not all of the DVD-Video content can be freely moved from one DVD to other. Quite a lot of the movies are mastered with additional navigation offsets recorded to IFO/BUP files and not all of the mastering engines are compatible between each other. So make sure you use new code and pass TRUE as parameter to IFO/BUP files patching. Then make sure you've enabled DVD padding (StarBurn_GetDVDPadding(...) and StarBurn_SetDVDPadding(...) API calls do this). It's required if your compilation is less then 1GB in size. Old (and some modern DVD players) just does not understand discs with less 1GB recorded. Then make sure you've recorded disc with multisession parameter set to FALSE (in other words - multisession is OFF). It's required quite a lot of the players don't work with non-finalized media.
Of course we're talking about recordable/rewritable disc formats hardware compatible with your DVD player. We're not expecting our customers to load for example DVD+R media into DVD-RAM and DVD-R only capable player
If you're still having playability problems - please contact us via firstname.lastname@example.org e-mail account of thru the Rocket Division Software support forum.
Just because it does not support them! For recording DVDs you need to use TrackAt-Once burning mode only. We know Nero (and other software) calls this mode "DVD DAO" but we want to call it TAO b/s it's much closer to CD TAO (when "cooked" user data is recorded) then to CD DAO ("when "raw" data is written to the media). It's only a question of terminology and nothing more.
BTW, it's a good idea to call
StarBurn_CdvdBurnerGrabber_ProbeSupportedWriteModes(...) API call before doing any burning activities. It does properly list all of the supported write modes for current combination of "optical drive + inserted media". Recording modes would be DIFFERENT for different inserted media.
Unfortunately there's no straight-forward way to do this. Most (99%) of the burners don't have any progress indication for erase process done in hardware. However such a trick could be applied using software approximation:
- Get expected size of the burning region (for CDs it would be 15MB for just TOC erase and full CD size for full disc erase, for DVDs it would be around 150MB for just TOC erase and full DVD size for full disc erase). Say it would be Xx.
- Get speed device would be using in KB/sec. Say it would be Yy.
- Now you can get expected time in seconds for such operation as Tt = ( Xx * 1024 ) / Yy.
- Spawn a thread controlling progress dialog and just move progress position using timer. Keep in mind it's expected to move from 0% to 100% in Tt seconds. We're done!
Console samples are just too dumb and don't have any progress indication for erase but GUI samples all have complete progress indication done using algorithm just described below. If you'd take a look at other burning software you'd see they do exactly the same.
I have VC6 and have problems building full static StarBurn applications. Compiler says about unreferenced __security_check_cookie, __security_cookie, __seh_epilog, __seh_prolog, __alldvrm, __aulldvrm and so on. VC7 and up worksjust fine but we really need VC6 builds for our customer! What should we do?
This problem is confirmed Microsoft bug. Starting from Windows 2003 Server IFS Kit (this one is used to build StarBurn SDK binaries and libraries and whole moderns Microsoft operating systems core) inserts special stack frame validation code into all of the binaries and libraries. VC7 has support for such a stuff out-ofbox; VC6 has no such thing... To build static StarBurn applications in VC6 you need to link with these obj files that are in VC7 directory Vc7\crt\src\intel\mt_lib (when you choose to install CRT source code): sehprolg.obj, lldvrm.obj, ulldvrm.obj. And also link with BufferOverflowU.lib from Platform SDK or DDK for Windows Server 2003 Service Pack 1. With this approach you can only build release static builds, because when building with debug info linker says that debug info is corrupted in the obj files. Please check DataBurner MFC GUI sample. It contains VC6 project with release static configuration.
How could I stop the CD auto play dialog from popping up every time a user inserts a disc and closes the drive?
"Auto play" is a Windows Explorer feature, so StarBurn is not dealing with it. However you can easily do it in your application. Look at this article in MSDN:
Why does StopPlayScan API call fail on some media? I use it to show the information in a session that has just finished burning.
StopPlayScan should be used only for Track-At-Once & CD recording. For SessionAt-Once and Disc-At-Once it would not work (and would not update anything - full eject and load sequence is required), and for DVD/Blu-Ray/HD-DVD media it just not required to call StopPlayScan.
Why StarBurnXC#, MSVC and VB.NET samples don't run on my computer? I get error "The application failed to initialize properly (0xc0000135). Click on OK to terminate the application" (Windows XP) or "The dynamic link library mscoree.dll could not be found in the specified path..." (Windows 2000).
You should install .NET Framework to be able to run these StarBurnX samples. The latest .NET Framework setup can be found here:
We did not include it to our basic installation as we don't want to increase StarBurn SDK download size up to 70-80 megabytes. And only StarBurnX users are in need of .NET framework, StarBurn Core does not need it.