求助 将 NetSdk.dll 转成C#接口定义(DllImport)

爱LOVE大葱 2014-08-26 11:28:59
NetSdk.dll 好像是C或C++写的,具体我也不知道了,又其中3个方法不知道怎么定义,如下:请大家帮我转成C#那种定义方式,就是用DllImport的那种。

1. H264_DVR_API long H264_DVR_GetLastError();
 函数说明:返回函数执行失败代码,当调用下面的接口失败时,可以用该函数获取失败的代码,具体错误代码参见错误类型代号说明
 参数说明:无
 返回值:返回错误类型码
typedef void (__stdcall *fDisConnect)(long lLoginID, char *pchDVRIP, long nDVRPort, unsigned long dwUser);

2. H264_DVR_API long H264_DVR_Init(fDisConnect cbDisConnect, unsigned long dwUser);
 函数说明:初始化SDK, 在所有的SDK函数之前调用
 参数说明:
cbDisConnect
断线回调函数,回调出当前网络已经断开的设备, 对调用SDK的H264_DVR_Logout ()函数主动断开的设备不回调,设置为0时禁止回调
[in]dwUser :用户数据
 回调函数参数说明:
lLoginID :H264_DVR_Login的返回值
pchDVRIP :设备IP
nDVRPort :端口
dwUser:用户数据,就是上面输入的用户数据
 返回值:成功返回TRUE,不成功返回FALSE
 相关函数:H264_DVR_Cleanup

3. CLIENT_API void H264_DVR_Cleanup ();
 函数说明:清空SDK, 释放占用的资源,在所有的SDK函数之后调用。
 参数:无
 返回值:无
 相关函数:H264_DVR_Init
 典型应用:在应用程序关闭时调用
...全文
448 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
桃乡人 2015-09-29
  • 打赏
  • 举报
回复
我也在用C#开发网络摄像机的程序,QQ:192885965,大家加我一块交流吧
baldgf88 2015-04-10
  • 打赏
  • 举报
回复
很好 很强大,能给一个demo嘛
opf110 2014-09-08
  • 打赏
  • 举报
回复
无法加载 DLL“NetSdk.dll” 这个怎么解决啊
爱LOVE大葱 2014-08-27
  • 打赏
  • 举报
回复
多谢这位 diaodiaop 大哥
by_封爱 版主 2014-08-27
  • 打赏
  • 举报
回复

        private XMSDK.fDisConnect disCallback;
        public bool InitSDK()
        {
            GC.KeepAlive(disCallback);
            int bResult = XMSDK.H264_DVR_Init(disCallback, this.Handle);
            return bResult == 0 ? false : true;
        }


class XMSDK
{   
        public delegate void fDisConnect(int lLoginID, string pchDVRIP, int nDVRPort, IntPtr dwUser);
        [DllImport("NetSdk.dll")]
        public static extern int H264_DVR_Init(fDisConnect cbDisConnect, IntPtr dwUser);
}
爱LOVE大葱 2014-08-27
  • 打赏
  • 举报
回复
引用 2 楼 diaodiaop 的回复:
我用过....
大哥,大神,我终于等到你了 这个public static extern int H264_DVR_Init(fDisConnect cbDisConnect, IntPtr dwUser);中fDisConnect这个参数怎么定义的,该怎么调用这个方法呢? 求大哥指教。
by_封爱 版主 2014-08-27
  • 打赏
  • 举报
回复

[DllImport("NetSdk.dll")]
public static extern int H264_DVR_GetLastError();
这个真心没什么用的

[DllImport("NetSdk.dll")]
public static extern int H264_DVR_Init(fDisConnect cbDisConnect, IntPtr dwUser);
这个有点用.初始化的时候 调用下 就行了...

[DllImport("NetSdk.dll")]
public static extern bool H264_DVR_Cleanup();
这个好像也没什么用啊..... 我用这个东西 一般都是播放实时画面以及抓拍用的..另附抓拍代码..

[DllImport("NetSdk.dll")]
public static extern Int32 H264_DVR_CatchPic(int lLoginID,  int nChannel, string sFileName);
其他代码...

enum SearchModeType
    {
        DDNS_SERIAL = 0,//按序列号
        DDNS_USERNAME,  //按用户名
    }
    public enum SDK_RET_CODE
    {
        H264_DVR_NOERROR = 0,					//没有错误
        H264_DVR_SUCCESS = 1,					//返回成功
        H264_DVR_SDK_NOTVALID = -10000,				//非法请求
        H264_DVR_NO_INIT = -10001,				//SDK未经初始化
        H264_DVR_ILLEGAL_PARAM = -10002,			//用户参数不合法
        H264_DVR_INVALID_HANDLE = -10003,			//句柄无效
        H264_DVR_SDK_UNINIT_ERROR = -10004,			//SDK清理出错
        H264_DVR_SDK_TIMEOUT = -10005,			//等待超时
        H264_DVR_SDK_MEMORY_ERROR = -10006,			//内存错误,创建内存失败
        H264_DVR_SDK_NET_ERROR = -10007,			//网络错误
        H264_DVR_SDK_OPEN_FILE_ERROR = -10008,			//打开文件失败
        H264_DVR_SDK_UNKNOWNERROR = -10009,			//未知错误
        H264_DVR_DEV_VER_NOMATCH = -11000,			//收到数据不正确,可能版本不匹配
        H264_DVR_SDK_NOTSUPPORT = -11001,			//版本不支持

        H264_DVR_OPEN_CHANNEL_ERROR = -11200,			//打开通道失败
        H264_DVR_CLOSE_CHANNEL_ERROR = -11201,			//关闭通道失败
        H264_DVR_SUB_CONNECT_ERROR = -11202,			//建立媒体子连接失败
        H264_DVR_SUB_CONNECT_SEND_ERROR = -11203,			//媒体子连接通讯失败
        /// 用户管理部分错误码
        H264_DVR_NOPOWER = -11300,			//无权限
        H264_DVR_PASSWORD_NOT_VALID = -11301,			// 账号密码不对
        H264_DVR_LOGIN_USER_NOEXIST = -11302,			//用户不存在
        H264_DVR_USER_LOCKED = -11303,			// 该用户被锁定
        H264_DVR_USER_IN_BLACKLIST = -11304,			// 该用户不允许访问(在黑名单中)
        H264_DVR_USER_HAS_USED = -11305,			// 该用户以登陆
        H264_DVR_USER_NOT_LOGIN = -11306,			// 该用户没有登陆
        H264_DVR_CONNECT_DEVICE_ERROR = -11307,			//可能设备不存在
        H264_DVR_ACCOUNT_INPUT_NOT_VALID = -11308,			//用户管理输入不合法
        H264_DVR_ACCOUNT_OVERLAP = -11309,			//索引重复
        H264_DVR_ACCOUNT_OBJECT_NONE = -11310,			//不存在对象, 用于查询时
        H264_DVR_ACCOUNT_OBJECT_NOT_VALID = -11311,			//不存在对象
        H264_DVR_ACCOUNT_OBJECT_IN_USE = -11312,			//对象正在使用
        H264_DVR_ACCOUNT_SUBSET_OVERLAP = -11313,			//子集超范围 (如组的权限超过权限表,用户权限超出组的权限范围等等)
        H264_DVR_ACCOUNT_PWD_NOT_VALID = -11314,			//密码不正确
        H264_DVR_ACCOUNT_PWD_NOT_MATCH = -11315,			//密码不匹配
        H264_DVR_ACCOUNT_RESERVED = -11316,			//保留帐号
        /// 配置管理相关错误码

        H264_DVR_OPT_RESTART = -11400,			// 保存配置后需要重启应用程序
        H264_DVR_OPT_REBOOT = -11401,			// 需要重启系统
        H264_DVR_OPT_FILE_ERROR = -11402,			// 写文件出错
        H264_DVR_OPT_CAPS_ERROR = -11403,			// 配置特性不支持
        H264_DVR_OPT_VALIDATE_ERROR = -11404,			// 配置校验失败
        H264_DVR_OPT_CONFIG_NOT_EXIST = -11405,			// 请求或者设置的配置不存在
        /// 
        H264_DVR_CTRL_PAUSE_ERROR = -11500,			//暂停失败
        H264_DVR_SDK_NOTFOUND = -11501,			//查找失败,没有找到对应文件
        H264_DVR_CFG_NOT_ENABLE = -11502,           //配置未启用
        H264_DVR_DECORD_FAIL = -11503,           //配置未启用
        //DNS协议解析返回错误码
        H264_DVR_SOCKET_ERROR = -11600,         //创建套节字失败
        H264_DVR_SOCKET_CONNECT = -11601,         //连接套节字失败
        H264_DVR_SOCKET_DOMAIN = -11602,         //域名解析失败
        H264_DVR_SOCKET_SEND = -11603,         //发送数据失败
    }
需要更多请私信...
by_封爱 版主 2014-08-27
  • 打赏
  • 举报
回复
我用过....
爱LOVE大葱 2014-08-27
  • 打赏
  • 举报
回复
唉,没有人额

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧