private CFStringGetCharacters ( |
||
handle | ||
range | ||
buffer | ||
return |
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)); }