public static String PtrToStringAnsi(IntPtr ptr) { if (Win32Native.NULL == ptr) { return(null); } else if (IsWin32Atom(ptr)) { return(null); } else { int nb = Win32Native.lstrlenA(ptr); if (nb == 0) { return(string.Empty); } else { StringBuilder sb = new StringBuilder(nb); Win32Native.CopyMemoryAnsi(sb, ptr, new IntPtr(1 + nb)); return(sb.ToString()); } } }