示例#1
0
        public static CFException FromCFError(IntPtr cfErrorHandle, bool release)
        {
            if (cfErrorHandle == IntPtr.Zero)
                throw new ArgumentException ("cfErrorHandle must not be null.", "cfErrorHandle");

            var e = new CFException (
                    ToString (CFErrorCopyDescription (cfErrorHandle)),
                    (NSString) Runtime.GetNSObject (CFErrorGetDomain (cfErrorHandle)),
                    CFErrorGetCode (cfErrorHandle),
                    ToString (CFErrorCopyFailureReason (cfErrorHandle)),
                    ToString (CFErrorCopyRecoverySuggestion (cfErrorHandle)));

            var cfUserInfo = CFErrorCopyUserInfo (cfErrorHandle);
            if (cfUserInfo != IntPtr.Zero) {
                using (var userInfo = new NSDictionary (cfUserInfo)) {
                    foreach (var i in userInfo)
                        e.Data.Add (i.Key, i.Value);
                }
            }
            if (release)
                CFObject.CFRelease (cfErrorHandle);
            return e;
        }