在VC中有如下一个申明:
unsigned short OpenPort(short PortNo, HANDLE *devNo);
此函数是一个DLL要导出的函数,请问我在C#中怎样导入此函数?主要是HANDLE *devNo在C#中我怎么申明对应的参数?
我的申明如下:
//打开端口
[DllImport("sss.DLL", EntryPoint="OpenPort", SetLastError=true,
CharSet=CharSet.Ansi, ExactSpelling=true,
CallingConvention=CallingConvention.StdCall)]
public static extern ushort OpenPort(short PortNo, ref IntPtr devNo);
unsigned short OpenPort(short PortNo, HANDLE *devNo);
此函数是一个DLL要导出的函数,请问我在C#中怎样导入此函数?主要是HANDLE *devNo在C#中我怎么申明对应的参数?
我的申明如下:
//打开端口
[DllImport("sss.DLL", EntryPoint="OpenPort", SetLastError=true,
CharSet=CharSet.Ansi, ExactSpelling=true,
CallingConvention=CallingConvention.StdCall)]
public static extern ushort OpenPort(short PortNo, ref IntPtr devNo);
System.ValueType
System.IntPtr[Visual Basic]
<Serializable>
Public Structure IntPtr
Implements ISerializable[C#]
[Serializable]
public struct IntPtr : ISerializable[C++]
[Serializable]
public __value struct IntPtr : public ISerializable[JScript] 在 JScript 中,可以使用 .NET Framework 中的结构,但不能定义自己的结构。线程安全
此类型对多线程操作是安全的。备注
IntPtr 类型被设计成整数,其大小适用于特定平台。即是说,此类型的实例在 32 位硬件和操作系统中将是 32 位,在 64 位硬件和操作系统上将是 64 位。IntPtr 类型可以由支持指针的语言使用,并可作为在支持与不支持指针的语言间引用数据的一种通用方式。IntPtr 对象也可用于保持句柄。例如,IntPtr 的实例广泛地用在 System.IO.FileStream 类中来保持文件句柄。IntPtr 类型符合 CLS,而 UIntPtr 类型却不符合。只有 IntPtr 类型可用在公共语言运行库中。UIntPtr 类型大多数是提供来维护与 IntPtr 类型之间的体系结构上的对称性。