CFStringGetCharacters() private method

private CFStringGetCharacters ( IntPtr handle, CFRange range, IntPtr buffer ) : IntPtr
handle System.IntPtr
range CFRange
buffer System.IntPtr
return System.IntPtr
Beispiel #1
0
        internal static unsafe string FetchString(IntPtr handle)
        {
            if (handle == IntPtr.Zero)
            {
                return(null);
            }
            var len  = CoreFoundation.CFStringGetLength(handle);
            var ptr  = CoreFoundation.CFStringGetCharactersPtr(handle);
            var zero = IntPtr.Zero;

            if (ptr == IntPtr.Zero)
            {
                var range = new CFRange(0, len);
                zero = Marshal.AllocCoTaskMem(len * 2);
                CoreFoundation.CFStringGetCharacters(handle, range, zero);
                ptr = zero;
            }
            return(new string((char *)ptr, 0, len));
        }