Re: DiskArbitration & Finder
Re: DiskArbitration & Finder
- Subject: Re: DiskArbitration & Finder
- From: Stephan Burlot <email@hidden>
- Date: Sun, 3 Dec 2006 14:09:55 +0100
Nice! it works!
Now, how can I intercept unformatted CD/DVD ?
I've tried to register a callback with
DARegisterDiskMountApprovalCallback(approvalSession,
kDADiskDescriptionMatchMediaWhole, mountApprovalCallback, NULL);
or
DARegisterDiskMountApprovalCallback(approvalSession, NULL,
mountApprovalCallback, NULL);
but the callback is not called when the disk is not formatted (but is
called when the disk contains something).
I've looked at the DiskArbitration code from oopendarwin, but I cant
see any callback called when the disk is not formatted (or
unrecognized, I suppose it's the same)
Any hints?
Regards,
Stephan
Le 3 déc. 06 à 03:40, Finlay Dobbie a écrit :
AFAIK you shouldn't be waiting for the disk to appear. Wouldn't you
want to register an approval session, register an approval callback
and return a dissenter from your callback?
-- Finlay
On 02/12/06, Stephan Burlot <email@hidden> wrote:
Hi,
I'm playing with DiskArbitration and I am trying to block the
insertion of CD, DVD (and other types of volumes, but it's not
relevant to my question)
I'm sucessful at intercepting the insertion of a CD/DVD and ejecting
it as soon as it is inserted, but, if I leave the CD/DVD prefpane
settings to, let's say, open iTunes when a music CD is inserted,
itunes is launched even if my app ejects the CD. Same thing happens
if I insert a blank CD: the finder asks me what I want to do with it,
while my app is ejecting the CD in the background.
How is it possible to intercept these insertion events, without
changing the CD/DVD prefpane?
my code is as follow:
/* Init */
mySession = DASessionCreate(kCFAllocatorDefault);
DASessionScheduleWithRunLoop(mySession, CFRunLoopGetCurrent
(),
kCFRunLoopDefaultMode);
DARegisterDiskAppearedCallback(mySession,
kDADiskDescriptionMatchMediaWhole, diskAppearedCallback, NULL);
DARegisterDiskDisappearedCallback(mySession,
kDADiskDescriptionMatchMediaWhole, diskDisappearedCallback, NULL);
And the diskAppearedCallback is:
static void diskAppearedCallback(DADiskRef disk, void * userInfo)
{
NSLog(@"diskAppearedCallback");
DADiskEject(disk, kDADiskEjectOptionDefault,
ejectCallback, userInfo);
}
Thanks for any help,
Stephan Burlot
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
40gmail.com
This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden