1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5using System;
6using System.Collections.Generic;
7using System.Runtime.InteropServices;
8using System.Text;
9
10namespace StatsViewer {
11  /// <summary>
12  /// Win32 API constants, structs, and wrappers for access via C#.
13  /// </summary>
14  class Win32 {
15    #region Constants
16    public enum MapAccess {
17      FILE_MAP_COPY = 0x0001,
18      FILE_MAP_WRITE = 0x0002,
19      FILE_MAP_READ = 0x0004,
20      FILE_MAP_ALL_ACCESS = 0x001f,
21    }
22
23    public const int GENERIC_READ = unchecked((int)0x80000000);
24    public const int GENERIC_WRITE = unchecked((int)0x40000000);
25    public const int OPEN_ALWAYS = 4;
26    public static readonly IntPtr INVALID_HANDLE_VALUE = new IntPtr(-1);
27    #endregion
28
29    [DllImport("kernel32", SetLastError=true, CharSet=CharSet.Auto)]
30    public static extern IntPtr CreateFile (
31       String lpFileName, int dwDesiredAccess, int dwShareMode,
32       IntPtr lpSecurityAttributes, int dwCreationDisposition,
33       int dwFlagsAndAttributes, IntPtr hTemplateFile);
34
35    [DllImport("kernel32", SetLastError=true)]
36    public static extern IntPtr MapViewOfFile (
37       IntPtr hFileMappingObject, int dwDesiredAccess, int dwFileOffsetHigh,
38       int dwFileOffsetLow, int dwNumBytesToMap);
39
40    [DllImport("kernel32", SetLastError=true, CharSet=CharSet.Auto)]
41    public static extern IntPtr OpenFileMapping (
42       int dwDesiredAccess, bool bInheritHandle, String lpName);
43
44    [DllImport("kernel32", SetLastError=true)]
45    public static extern bool UnmapViewOfFile (IntPtr lpBaseAddress);
46
47    [DllImport("kernel32", SetLastError = true)]
48    public static extern bool CloseHandle(IntPtr handle);
49  }
50}
51