| Index: trunk/src/tools/win/ChromeDebug/LowLevel/Types.cs
|
| ===================================================================
|
| --- trunk/src/tools/win/ChromeDebug/LowLevel/Types.cs (revision 223795)
|
| +++ trunk/src/tools/win/ChromeDebug/LowLevel/Types.cs (working copy)
|
| @@ -1,177 +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.Linq;
|
| -using System.Runtime.InteropServices;
|
| -using System.Text;
|
| -using System.Threading.Tasks;
|
| -
|
| -namespace ChromeDebug.LowLevel {
|
| - // Defines structures, enumerations, and types used by Win32 API calls. In some cases, the API
|
| - // calls support (and even document) many more values than what are listed here. Should
|
| - // additional values be required, they can be added to the respective types.
|
| - public static class LowLevelTypes {
|
| -
|
| - #region Constants and Enums
|
| - // Represents the image format of a DLL or executable.
|
| - public enum ImageFormat {
|
| - NATIVE,
|
| - MANAGED,
|
| - UNKNOWN
|
| - }
|
| -
|
| - // Flags used for opening a file handle (e.g. in a call to CreateFile), that determine the
|
| - // requested permission level.
|
| - [Flags]
|
| - public enum FileAccessFlags : uint {
|
| - GENERIC_WRITE = 0x40000000,
|
| - GENERIC_READ = 0x80000000
|
| - }
|
| -
|
| - // Value used for CreateFile to determine how to behave in the presence (or absence) of a
|
| - // file with the requested name. Used only for CreateFile.
|
| - public enum FileCreationDisposition : uint {
|
| - CREATE_NEW = 1,
|
| - CREATE_ALWAYS = 2,
|
| - OPEN_EXISTING = 3,
|
| - OPEN_ALWAYS = 4,
|
| - TRUNCATE_EXISTING = 5
|
| - }
|
| -
|
| - // Flags that determine what level of sharing this application requests on the target file.
|
| - // Used only for CreateFile.
|
| - [Flags]
|
| - public enum FileShareFlags : uint {
|
| - EXCLUSIVE_ACCESS = 0x0,
|
| - SHARE_READ = 0x1,
|
| - SHARE_WRITE = 0x2,
|
| - SHARE_DELETE = 0x4
|
| - }
|
| -
|
| - // Flags that control caching and other behavior of the underlying file object. Used only for
|
| - // CreateFile.
|
| - [Flags]
|
| - public enum FileFlagsAndAttributes : uint {
|
| - NORMAL = 0x80,
|
| - OPEN_REPARSE_POINT = 0x200000,
|
| - SEQUENTIAL_SCAN = 0x8000000,
|
| - RANDOM_ACCESS = 0x10000000,
|
| - NO_BUFFERING = 0x20000000,
|
| - OVERLAPPED = 0x40000000
|
| - }
|
| -
|
| - // The target architecture of a given executable image. The various values correspond to the
|
| - // magic numbers defined by the PE Executable Image File Format.
|
| - // http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx
|
| - public enum MachineType : ushort {
|
| - UNKNOWN = 0x0,
|
| - X64 = 0x8664,
|
| - X86 = 0x14c,
|
| - IA64 = 0x200
|
| - }
|
| -
|
| - // A flag indicating the format of the path string that Windows returns from a call to
|
| - // QueryFullProcessImageName().
|
| - public enum ProcessQueryImageNameMode : uint {
|
| - WIN32_FORMAT = 0,
|
| - NATIVE_SYSTEM_FORMAT = 1
|
| - }
|
| -
|
| - // Flags indicating the level of permission requested when opening a handle to an external
|
| - // process. Used by OpenProcess().
|
| - [Flags]
|
| - public enum ProcessAccessFlags : uint {
|
| - NONE = 0x0,
|
| - ALL = 0x001F0FFF,
|
| - VM_OPERATION = 0x00000008,
|
| - VM_READ = 0x00000010,
|
| - QUERY_INFORMATION = 0x00000400,
|
| - QUERY_LIMITED_INFORMATION = 0x00001000
|
| - }
|
| -
|
| - // Defines return value codes used by various Win32 System APIs.
|
| - public enum NTSTATUS : int {
|
| - SUCCESS = 0,
|
| - }
|
| -
|
| - // Determines the amount of information requested (and hence the type of structure returned)
|
| - // by a call to NtQueryInformationProcess.
|
| - public enum PROCESSINFOCLASS : int {
|
| - PROCESS_BASIC_INFORMATION = 0
|
| - };
|
| - #endregion
|
| -
|
| - #region Structures
|
| - // In general, for all structures below which contains a pointer (represented here by IntPtr),
|
| - // the pointers refer to memory in the address space of the process from which the original
|
| - // structure was read. While this seems obvious, it means we cannot provide an elegant
|
| - // interface to the various fields in the structure due to the de-reference requiring a
|
| - // handle to the target process. Instead, that functionality needs to be provided at a
|
| - // higher level.
|
| - //
|
| - // Additionally, since we usually explicitly define the fields that we're interested in along
|
| - // with their respective offsets, we frequently specify the exact size of the native structure.
|
| -
|
| - // Win32 UNICODE_STRING structure.
|
| - [StructLayout(LayoutKind.Sequential)]
|
| - public struct UNICODE_STRING {
|
| - // The length in bytes of the string pointed to by buffer, not including the null-terminator.
|
| - private ushort length;
|
| - // The total allocated size in memory pointed to by buffer.
|
| - private ushort maximumLength;
|
| - // A pointer to the buffer containing the string data.
|
| - private IntPtr buffer;
|
| -
|
| - public ushort Length { get { return length; } }
|
| - public ushort MaximumLength { get { return maximumLength; } }
|
| - public IntPtr Buffer { get { return buffer; } }
|
| - }
|
| -
|
| - // Win32 RTL_USER_PROCESS_PARAMETERS structure.
|
| - [StructLayout(LayoutKind.Explicit, Size = 72)]
|
| - public struct RTL_USER_PROCESS_PARAMETERS {
|
| - [FieldOffset(56)]
|
| - private UNICODE_STRING imagePathName;
|
| - [FieldOffset(64)]
|
| - private UNICODE_STRING commandLine;
|
| -
|
| - public UNICODE_STRING ImagePathName { get { return imagePathName; } }
|
| - public UNICODE_STRING CommandLine { get { return commandLine; } }
|
| - };
|
| -
|
| - // Win32 PEB structure. Represents the process environment block of a process.
|
| - [StructLayout(LayoutKind.Explicit, Size = 472)]
|
| - public struct PEB {
|
| - [FieldOffset(2), MarshalAs(UnmanagedType.U1)]
|
| - private bool isBeingDebugged;
|
| - [FieldOffset(12)]
|
| - private IntPtr ldr;
|
| - [FieldOffset(16)]
|
| - private IntPtr processParameters;
|
| - [FieldOffset(468)]
|
| - private uint sessionId;
|
| -
|
| - public bool IsBeingDebugged { get { return isBeingDebugged; } }
|
| - public IntPtr Ldr { get { return ldr; } }
|
| - public IntPtr ProcessParameters { get { return processParameters; } }
|
| - public uint SessionId { get { return sessionId; } }
|
| - };
|
| -
|
| - // Win32 PROCESS_BASIC_INFORMATION. Contains a pointer to the PEB, and various other
|
| - // information about a process.
|
| - [StructLayout(LayoutKind.Explicit, Size = 24)]
|
| - public struct PROCESS_BASIC_INFORMATION {
|
| - [FieldOffset(4)]
|
| - private IntPtr pebBaseAddress;
|
| - [FieldOffset(16)]
|
| - private UIntPtr uniqueProcessId;
|
| -
|
| - public IntPtr PebBaseAddress { get { return pebBaseAddress; } }
|
| - public UIntPtr UniqueProcessId { get { return uniqueProcessId; } }
|
| - }
|
| - #endregion
|
| - }
|
| -}
|
|
|