On Apr 17, 2010, at 5:29 PM, Ken Thomases wrote:

> On Apr 17, 2010, at 6:46 PM, James Bucanek wrote:
> 
>> How do I get the mount point path of a freshly mounted volume in Snow 
>> Leopard?
>> 
>> In Leopard (10.5), the NSWorkspaceDidMountNotification included an 
>> NSDevicePath value. It contained the path to the mount point of the freshly 
>> mounted volume.
>> 
>> In Snow Leopard (10.6), this property has been deprecated and has been 
>> replaced with NSWorkspaceVolumeURLKey that contains an NSURL to the new 
>> volume.
>> 
>> Here's the problem: How do you turn the NSURL into its equivalent filesystem 
>> path?
>> 
>> For backwards compatibility, the notification still includes an NSDevicePath 
>> value, but that value is wrong for AFP volumes. For example, in 10.5 
>> mounting the network volume "Dinah" would fire a notification containing 
>> NSDevicePath="/Volumes/Dinah". In 10.6, mounting the same volume posts a 
>> notification containing:
>> 
>>   NSWorkspaceVolumeURLKey = 
>> NSURL(afp://james%20buca...@march%20hare._afpovertcp._tcp.local/Dinah)
>>   NSDevicePath = "/Dinah"
> 
> Does seem like a bug.
> 
> Perhaps you can use -[NSWorkspace mountedLocalVolumePaths]?  You'd keep a 
> copy of the old value and recheck it on each mount/unmount notification.
> 
> By the way, are you mounting this volume programmatically using 
> FSMountServerVolumeSync/Async?  If so, then you get a volume reference number 
> back, and you can use FSGetVolumeInfo to get its root directory as an FSRef, 
> and from there a path or URL.
> 
> In fact, it may be possible to use FSMountServerVolumeSync with the afp: URL 
> you're getting from NSWorkspace.  You'd effectively be asking to remount the 
> volume that was just mounted.  Hopefully, the OS will immediately return 
> success without doing any actual new mounting, and that would be a way to get 
> the volume reference number.  On the other hand, it's just as likely to 
> return some sort of "volume already mounted" error.
> 
> Good luck,
> Ken


If that doesn't work, you could try looping through the mounted volumes and 
check each one for a matching URL with FSCopyURLForVolume().

Kevin_______________________________________________

Cocoa-dev mailing list ([email protected])

Please 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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to