查询局域网设备BOOL CLIENT_SearchDevices(
char* szBuf,
int nBufLen,
int* pRetLen,
DWORD dwSearchTime
);
Parameters
[out]szBuf
用户开辟缓存,用来接收DEVICE_NET_INFO结构体,查询到几个设备,就返回几个这样的结构体
[in]nBufLen
szBuf缓存长度
[out]pRetLen
返回DEVICE_NET_INFO结构体长度之和
[in]dwSearchTime
查询等待时间
请问这个函数在C#中应该如何定义
char* szBuf,
int nBufLen,
int* pRetLen,
DWORD dwSearchTime
);
Parameters
[out]szBuf
用户开辟缓存,用来接收DEVICE_NET_INFO结构体,查询到几个设备,就返回几个这样的结构体
[in]nBufLen
szBuf缓存长度
[out]pRetLen
返回DEVICE_NET_INFO结构体长度之和
[in]dwSearchTime
查询等待时间
请问这个函数在C#中应该如何定义
解决方案 »
- 24时制与12时制转换问题?
- 求助:有谁做过CA认证的开发,请教
- 窗体自动关闭
- 吐血相送:最后一分了!如何让窗打开时就自动隐藏?我在load事件里写this.Hide()没用,可是通过按钮点击使之this.Hide()就有用,为什么?
- 请高手指教,使用c#如何更新Xml文档中的节点值?
- 关于一个文件验证的问题
- 小弟刚学c#,哪位大哥提供一个vs .net下载?谢谢……
- 如何实现数据库中图片的更新?紧急!!!!
- 打开Microsoft .Net Framework SDK的帮助文件时,dexplore.exe报错“application can't start”,请问如何解决呢?
- 这里讨论的气氛还不错,偶已经解决好几个问题了。
- 如何使用Winform皮肤控件??
- daima xianshi
int* 试试 ref int
[out]szBuf
用户开辟缓存,用来接收DEVICE_NET_INFO结构体,查询到几个设备,就返回几个这样的结构体 这个参数输出的是结构
/// QQ/TM聊天记录获取
/// </summary>
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct SendQQMsgInfo
{
/// <summary>
/// 聊天类型:0=单人聊天,1=群聊天,2=讨论组聊天
/// </summary>
public uint QQMsgType;
/// <summary>
/// 本机QQ号码
/// </summary>
public uint SourceQQNum;
/// <summary>
/// 对方QQ号码
/// </summary>
public uint DestinationQQNum;
/// <summary>
/// 群号码或聊天组号码
/// </summary>
public uint GroupNum;
/// <summary>
/// 消息类型:true=发送,false=接收
/// </summary>
public bool bSend;
/// <summary>
/// 本机QQ昵称
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 30)]
public string SourceString;
/// <summary>
/// 对方QQ昵称或群聊天中消息发送人的昵称
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
public string DestinationString;
/// <summary>
/// 群名或聊天组名
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 30)]
public string GroupNameString;
/// <summary>
/// 消息内容
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 7000)]
public string TextString;
}结构体定义其中string在c++中是char[30]\char[7000]等等
char*如果在结构体里。最好放在结构体最后面。越长的越放后面
/// <summary>
/// 取消QQ的进程保护(若不取消则无法获取聊天记录)
/// </summary>
/// <returns></returns>
[DllImport("DCKillQQProctect.dll")]
public static extern bool KillQQProctect(); /// <summary>
/// 获取QQ/TM聊天记录
/// </summary>
/// <param name="sendmess"></param>
/// <returns></returns>
public delegate bool GetQQMsg(ref SendQQMsgInfo sendmess);以上是我的写法。通过测试的public delegate bool CLIENT_SearchDevices(byte[] szBuf,int nBufLen,ref pRetLen,DWORD dwSearchTime);
可以试试
2.用定义的结构体数组作为szBuf的参数类型,并指定[Out][MarshalAs(UnmanagedType.LPArray)]
结构如下:DEVICE_NET_INFO{
char szIP[DH_MAX_IPADDR_LEN];
int nPort;
char szSubmask[DH_MAX_IPADDR_LEN];
char szGateway[DH_MAX_IPADDR_LEN];
char szMac[DH_MACADDR_LEN];
char szDeviceType[DH_DEV_TYPE_LEN];
BYTE bReserved[32];
};
Members
szIP
IP地址,字符串形式。
nPort
端口号,本地序。
szSubmask
子网掩码,字符串形式。
szGateway
网关,字符串形式
szMac
MAC地址,字符串形式。
szDeviceType
设备类型,字符串形式
bReserved
保留字节