<to****@gmail.com> wrote in message
news:11**********************@e56g2000cwe.googlegr oups.com...
Hey guys,
In my burn project, I have everything working except the
cancellation of the burn. I have it setup such that when the user
initiates a "cancel" the IDiscMasterProgressEvents handler will set the
argument to true as shown:
HRESULT STDMETHODCALLTYPE CDProgressEvents::QueryCancel(boolean
*pbCancel)
{
if (*m_cancel == true)
{
*pbCancel = true;
}
return S_OK;
}
However I can hear the drive still spinning and it finishes burning
every time. Is there a reason as to why this is?
Also on a side note
1) why is it that every time I release the DiscMasterProgressEvents
after ProgressUnAdvise it returns some junk value.
2) Every time I call IDiscMaster->Release() after a close() call it
returns S_FALSE?
Not sure I follow this. What is returning junk, and what is the junk?
IUnknown::Release doesn't return an HRESULT.
Do I not need to make these two calls then? Or is it implied that the
UnAdvise and Close() calls will automatically release?
I'd think that you do need the calls. ProgressUnadvise should only release
any additional holds the IDiscMaster has on the thing, and leave you the
responsibility for the final Release. I can't see why Close would do
anything with it after you've unadvised it, and nothing other than a defacto
unadvise if you've managed to leave the sink active.
But mainly why is cancelling not working?
Are you running XPSP2? Not sure if its the same thing, but according to the
author of ISORecorder, Alex Feinman...
http://isorecorder.alexfeinman.com/v2.htm
"Sometime around XPSP1 Microsoft has broken the cancel feature in their
engine. I've caught on it to late to submit it for fixing in SP2. Perhaps
SP3".
--
Jeff Partch [VC++ MVP]