| Index: trunk/src/tools/win/ChromeDebug/ChromeDebug/Utility.cs
|
| ===================================================================
|
| --- trunk/src/tools/win/ChromeDebug/ChromeDebug/Utility.cs (revision 223795)
|
| +++ trunk/src/tools/win/ChromeDebug/ChromeDebug/Utility.cs (working copy)
|
| @@ -1,85 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -using System;
|
| -using System.Collections.Generic;
|
| -using System.ComponentModel;
|
| -using System.Linq;
|
| -using System.Runtime.InteropServices;
|
| -using System.Text;
|
| -using System.Threading.Tasks;
|
| -
|
| -using ChromeDebug.LowLevel;
|
| -
|
| -namespace ChromeDebug {
|
| - internal static class Utility {
|
| - public static string[] SplitArgs(string unsplitArgumentLine) {
|
| - if (unsplitArgumentLine == null)
|
| - return new string[0];
|
| -
|
| - int numberOfArgs;
|
| - IntPtr ptrToSplitArgs;
|
| - string[] splitArgs;
|
| -
|
| - ptrToSplitArgs = NativeMethods.CommandLineToArgvW(unsplitArgumentLine, out numberOfArgs);
|
| -
|
| - // CommandLineToArgvW returns NULL upon failure.
|
| - if (ptrToSplitArgs == IntPtr.Zero)
|
| - throw new ArgumentException("Unable to split argument.", new Win32Exception());
|
| -
|
| - // Make sure the memory ptrToSplitArgs to is freed, even upon failure.
|
| - try {
|
| - splitArgs = new string[numberOfArgs];
|
| -
|
| - // ptrToSplitArgs is an array of pointers to null terminated Unicode strings.
|
| - // Copy each of these strings into our split argument array.
|
| - for (int i = 0; i < numberOfArgs; i++)
|
| - splitArgs[i] = Marshal.PtrToStringUni(
|
| - Marshal.ReadIntPtr(ptrToSplitArgs, i * IntPtr.Size));
|
| -
|
| - return splitArgs;
|
| - }
|
| - finally {
|
| - // Free memory obtained by CommandLineToArgW.
|
| - NativeMethods.LocalFree(ptrToSplitArgs);
|
| - }
|
| - }
|
| -
|
| - public static T ReadUnmanagedStructFromProcess<T>(IntPtr processHandle,
|
| - IntPtr addressInProcess) {
|
| - int bytesRead;
|
| - int bytesToRead = Marshal.SizeOf(typeof(T));
|
| - IntPtr buffer = Marshal.AllocHGlobal(bytesToRead);
|
| - if (!NativeMethods.ReadProcessMemory(processHandle, addressInProcess, buffer, bytesToRead,
|
| - out bytesRead))
|
| - throw new Win32Exception();
|
| - T result = (T)Marshal.PtrToStructure(buffer, typeof(T));
|
| - Marshal.FreeHGlobal(buffer);
|
| - return result;
|
| - }
|
| -
|
| - public static string ReadStringUniFromProcess(IntPtr processHandle,
|
| - IntPtr addressInProcess,
|
| - int NumChars) {
|
| - int bytesRead;
|
| - IntPtr outBuffer = Marshal.AllocHGlobal(NumChars * 2);
|
| -
|
| - bool bresult = NativeMethods.ReadProcessMemory(processHandle,
|
| - addressInProcess,
|
| - outBuffer,
|
| - NumChars * 2,
|
| - out bytesRead);
|
| - if (!bresult)
|
| - throw new Win32Exception();
|
| -
|
| - string result = Marshal.PtrToStringUni(outBuffer, bytesRead / 2);
|
| - Marshal.FreeHGlobal(outBuffer);
|
| - return result;
|
| - }
|
| -
|
| - public static int UnmanagedStructSize<T>() {
|
| - return Marshal.SizeOf(typeof(T));
|
| - }
|
| - }
|
| -}
|
|
|