WinIO的操作类

using System;
using System.Runtime.InteropServices;

namespace AD1674
{
    /// <summary>
    /// WINIO函数库
    /// </summary>
    public class WinIO
    {
        /// <summary>
        /// 初始化WioIO函数库
        /// 必须在调用所有其它功能函数之前调用本函数。
        /// </summary>
        /// <returns></returns>
        [DllImport("WinIo.dll")]
        public static extern bool InitializeWinIo();

        /// <summary>
        /// 清除WinIO库
        /// 中止应用函数之前或者不再需要WinIO库时调用
        /// </summary>
        /// <returns></returns>
        [DllImport("WinIo.dll")]
        public static extern bool ShutdownWinIo();

        /// <summary>
        /// 从一个输入或输出端口读取一个字节/字/双字数据。
        /// </summary>
        /// <param name="wPortAddr">输入输出端口地址</param>
        /// <param name="pdwPortVal">接收从端口得到的数据</param>
        /// <param name="bSize">需要读的字节数</param>
        /// <returns></returns>
        [DllImport("WinIo.dll")]
        public static extern bool GetPortVal(IntPtr wPortAddr, out uint pdwPortVal, byte bSize);

        /// <summary>
        /// 将一个字节/字/双字的数据写入输入或输出接口
        /// </summary>
        /// <param name="wPortAddr">输入或输出接口地址</param>
        /// <param name="dwPortVal">要写入的值</param>
        /// <param name="bSize">要写入的数据个数</param>
        /// <returns></returns>
        [DllImport("WinIo.dll")]
        public static extern bool SetPortVal(IntPtr wPortAddr, IntPtr dwPortVal, byte bSize);

        /// <summary>
        /// 将物理内存的一部分映射到一个32位应用程序的线性地址空间。 
        /// </summary>
        /// <param name="pbPhysAddr">指向物理地址的指针</param>
        /// <param name="dwPhysSize">映射的字节数</param>
        /// <param name="PhysicalMemoryHandle">变量指针,如果调用成功,负责接收物理内存句柄。
        /// 随后本句柄在调用UnmapPhysicalMemory函数时作为其第一个参数。
        /// </param>
        /// <returns></returns>
        [DllImport("WinIo.dll")]
        public static extern byte MapPhysToLin(byte pbPhysAddr, uint dwPhysSize,IntPtr PhysicalMemoryHandle);

        /// <summary>
        /// 解除原先使用MapPhysToLin函数映射的一段线性物理内存区域,该区域被映射到应用程序所属的线性地址空间
        /// </summary>
        /// <param name="PhysicalMemoryHandle">物理内存区域所属的句柄,此参数由对MapPhysToLin函数的调用返回。</param>
        /// <param name="pbLinAddr">MapPhysToLin函数调用返回的线性地址。</param>
        /// <returns></returns>
        [DllImport("WinIo.dll")]
        public static extern bool UnmapPhysicalMemory(IntPtr PhysicalMemoryHandle, byte pbLinAddr);

        /// <summary>
        /// 从指定的物理地址读取一个双字数据
        /// </summary>
        /// <param name="pbPhysAddr">指向物理地址的指针。</param>
        /// <param name="pdwPhysVal">指向一个双字变量的指针,接收从物理内存中传来的数据。</param>
        /// <returns></returns>
        [DllImport("WinIo.dll")]
        public static extern bool GetPhysLong(IntPtr pbPhysAddr,out byte pdwPhysVal);

        /// <summary>
        /// 将一个双字型数据写入指定的物理地址。
        /// </summary>
        /// <param name="pbPhysAddr">指向物理地址的指针。</param>
        /// <param name="dwPhysVal">指定待写入物理内存地址出的双字型数据。</param>
        /// <returns></returns>
        [DllImport("WinIo.dll")]
        public static extern bool SetPhysLong(IntPtr pbPhysAddr, byte dwPhysVal);
    }
}


你可能感兴趣的:(WinIO的操作类)