这是C++的定义: 
BOOL HDP_OpenPort(HANDLE *hComPort,int nPort,char *hisIpAddr,int 
hisPort,char flag); 
功能:打开端口 
参数:nPort ——端口ID,<50 为实串口,50 以上自动映射为TCP/IP 虚拟串口; 
hisIpAddr——设备的IP 地址,对于实串口操作,hisIpAddr 值将被忽略; 
hisPort——设备端口号,对于实串口操作,hisPort 值将被忽略; 
flag——选择TCP 或UDP 的标志,flag=1 选择TCP 通讯,flag=2 选择UDP 通讯, 
建议采用UDP 通讯。 
返回:成功返回TRUE,并携带端口句柄hComPort,失败返回FALSE。 
说明:在调用本系统其它函数之前,必须先成功调用该打开端口函数,并在之后的其它函数 
调用中携带此句柄hComPort,否则将无法实现其它函数的调用目的。 
事例: 
A. 打开实串口 1,return = HDP_OpenPort(&hComPort,1,””,0,0); 
B. 打开通过 TCP/IP 连接虚拟的101 的端口: 
return = HDP_OpenPort(&hComPort,101,”192.168.2.1”,9100,2); 
成功返回 TRUE,失败返回FALSE 
*************************以下是我C#的定义和一个调用方法************************** 
[DllImport("HDPDll.dll", EntryPoint = "HDP_OpenPort2", CallingConvention = CallingConvention.Cdecl)] 
public static extern Boolean HDP_OpenPort2(ref IntPtr hComPort, int nPort, String HisIPAddr, int HisPort, int Flag); 
/*******我写的调用方法,一直有错误,不管打开什么端口都是成功,都返回了true*******/ 
private Boolean OpenPort(ref IntPtr _hComPort, int _nPort, String _HisIPAddr, int _HisPort, int _Flag) 

   Boolean _openPort; 
  _openPort = HDP_OpenPort(ref _hComPort, _nPort, _HisIPAddr, _HisPort, _Flag); 
  return _openPort; 

*************************************************************************************** 

但是不知道为什么,不管什么串口,我这打开的时候都显示成功,是不是我C#定义有问题呢?