static private ReadAnsiString ( |
||
addr | ||
offset | int | |
length | int | |
return | string |
internal static string ReadAnsiString(IntPtr addr, int offset, int length) {
// instead of Marshal.PtrToStringAnsi we do this because
// ptrToStringAnsi gives special treatment to values >= 128.
StringBuilder res = new StringBuilder();
if (checked(offset + length) < Int32.MaxValue) {
for (int i = 0; i < length; i++) {
res.Append((char)Marshal.ReadByte(addr, offset + i));
}
}
return res.ToString();
}
MemoryHolder::ReadAnsiString ( |
|
MemoryHolder::ReadAnsiString ( int offset ) : string | |
MemoryHolder::ReadAnsiString ( int offset, int length ) : string |
/// <summary> /// Helper function for translating from memset to NT's FillMemory API. /// </summary> private static IntPtr StringAt(IntPtr src, int len) { string res; if (len == -1) { res = MemoryHolder.ReadAnsiString(src, 0); } else { res = MemoryHolder.ReadAnsiString(src, 0, len); } return(GCHandle.ToIntPtr(GCHandle.Alloc(res))); }