Hardware/IOControlCode.cs
author sl
Sun, 03 Feb 2013 18:01:50 +0100
changeset 391 ca4c0e7ae75d
parent 236 763675f19ff4
permissions -rw-r--r--
Converted project to VisualStudio 2012.
Adding SoundGraphDisplay and SensorFrontView classes.
They were respectively based on SystemTray and SensorNotifyIcon.
SoundGraphDisplay is now able to load iMONDisplay.dll providing it lives on your PATH.
Adding option to sensor context menu for adding it into FrontView.
moel@236
     1
/*
moel@236
     2
 
moel@344
     3
  This Source Code Form is subject to the terms of the Mozilla Public
moel@344
     4
  License, v. 2.0. If a copy of the MPL was not distributed with this
moel@344
     5
  file, You can obtain one at http://mozilla.org/MPL/2.0/.
moel@236
     6
 
moel@344
     7
  Copyright (C) 2010 Michael Möller <mmoeller@openhardwaremonitor.org>
moel@344
     8
	
moel@236
     9
*/
moel@236
    10
moel@236
    11
using System;
moel@236
    12
using System.Runtime.InteropServices;
moel@236
    13
moel@236
    14
namespace OpenHardwareMonitor.Hardware {
moel@236
    15
moel@236
    16
  [StructLayout(LayoutKind.Sequential, Pack = 1)]
moel@236
    17
  internal struct IOControlCode {
moel@236
    18
    private uint code;
moel@236
    19
moel@236
    20
    public IOControlCode(uint deviceType, uint function, Access access) :
moel@236
    21
      this(deviceType, function, Method.Buffered, access) { }
moel@236
    22
moel@236
    23
    public IOControlCode(uint deviceType, uint function, Method method, 
moel@236
    24
      Access access) 
moel@236
    25
    {
moel@236
    26
      code = (deviceType << 16) | 
moel@236
    27
        ((uint)access << 14) | (function << 2) | (uint)method;
moel@236
    28
    }
moel@236
    29
moel@236
    30
    public enum Method : uint {
moel@236
    31
      Buffered = 0,
moel@236
    32
      InDirect = 1,
moel@236
    33
      OutDirect = 2,
moel@236
    34
      Neither = 3
moel@236
    35
    }
moel@236
    36
moel@236
    37
    public enum Access : uint {
moel@236
    38
      Any = 0,
moel@236
    39
      Read = 1,
moel@236
    40
      Write = 2
moel@236
    41
    }
moel@236
    42
  }    
moel@236
    43
}