c#調用C介面時指標參數的接入

來源:互聯網
上載者:User

指標的接入有兩種方式,

1.C#中的參考型別

2.C#中的指標實現

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices;/// <summary>    /// 離線UK操作類    /// </summary>    public unsafe class UK    {        //參考型別變數實現        [DllImport("UK")]        extern static int UniKey_Find(ref uint handle, ref uint s1, ref uint s2);        [DllImport("UK")]        extern static int UniKey_Logoff(ref uint handle);                //[DllImport("UK")]        //extern static int UniKey_Log_On_Secu(ref uint handle, ref char[] password);        [DllImport("UK")]        extern static int UniKey_Log_On_Secu(ref uint handle, char[] password);        [DllImport("UK")]        extern static int UniKey_Log_Out_Secu(ref uint handle);        [DllImport("UK")]        extern static int UniKey_Get_Com_PanFu(ref uint handdle, ref char pDriveName);        //指標地址實現(不過要設定程式屬性允許不安全的程式碼)        [DllImport("UK")]        extern static int UniKey_Find(uint* handle, uint* s1, uint* s2);        [DllImport("UK")]        extern static int UniKey_Logoff(uint* handle);        [DllImport("UK")]        extern static int UniKey_Log_On_Secu(uint* handle, uint* password);        [DllImport("UK")]        extern static int UniKey_Log_Out_Secu(uint* handle);        [DllImport("UK")]        extern static int UniKey_Get_Com_PanFu(uint* handdle, char* pDriveName);        /// <summary>        /// 尋找UKey        /// </summary>        /// <returns></returns>        protected static int UKeyFind()        {            uint handle = 0;            uint s1 = 0;            uint s2 = 0;            int result = UniKey_Find(ref handle, ref s1, ref s2);            return result;        }        /// <summary>        /// 退出Ukey        /// </summary>        /// <param name="handle"></param>        /// <returns></returns>        protected static int UKeyLogoff()        {            uint handle = 0;            return UniKey_Logoff(ref handle);        }        /// <summary>        /// 登陸Ukey        /// </summary>        /// <returns></returns>        protected static int UKeyLogOnSecu()        {            uint handle = 0;            char[] password = new char[6] { '1', '2', '3', '4', '5', '6' };            int result = UniKey_Log_On_Secu(ref handle, password);            return result;        }        /// <summary>        /// 退出UKey        /// </summary>        /// <returns></returns>        protected static int UKeyLogOutSecu()        {            uint handle = 0;            return UniKey_Log_Out_Secu(ref handle);        }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.