public static string FSRefToString(ref FSRef fsref) { IntPtr url = IntPtr.Zero; IntPtr str = IntPtr.Zero; try { url = CFURLCreateFromFSRef(IntPtr.Zero, ref fsref); if (url == IntPtr.Zero) { return(null); } str = CFURLCopyFileSystemPath(url, CFUrlPathStyle.Posix); if (str == IntPtr.Zero) { return(null); } return(FetchString(str)); } finally { if (url != IntPtr.Zero) { Release(url); } if (str != IntPtr.Zero) { Release(str); } } }
extern static IntPtr CFURLCreateFromFSRef(IntPtr allocator, ref FSRef fsref);
static extern OSStatus LSGetApplicationForURL(IntPtr inURL, RolesMask inRoleMask, out FSRef outAppRef, out IntPtr outAppURL);