尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

zhuersuo 2011-03-05 12:19:25
//获取窗口句柄
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName,
string lpWindowName);

//获取窗口中控件的句柄
[DllImport("user32.dll")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent,
IntPtr hwndChildAfter, string lpszClass, string lpazWindow);



[DllImport("HCNetSDK.dll")]
public static extern int NET_DVR_RealPlay_V30(int lUserID, NET_DVR_CLIENTINFO struPlayInfo, string a, string b, bool bPreviewBlock);
//软解码预览参数
public struct NET_DVR_CLIENTINFO
{
public int lChannel;
public long lLinkMode;
public IntPtr hPlayWnd;
public string sMultiCastIP;

};



NET_DVR_CLIENTINFO struPlayInfo = new NET_DVR_CLIENTINFO();

IntPtr mwh = FindWindow(null, "Form");
IntPtr m_hWnd = FindWindowEx(mwh, IntPtr.Zero, null, "Panel2");



struPlayInfo.hPlayWnd = (IntPtr)m_hWnd; //设置播放句柄为有效句柄
struPlayInfo.lChannel = 1; //预览通道号
struPlayInfo.lLinkMode = 0;//最高位(31)为0表示主码流,为1表示子码流0~30位表示连接方式:0-TCP方式;1-UDP方式;2-多播方式;3-RTP方式;
bool bPreviewBlock = false; //请求码流过程是否阻塞,0:否,1:是
//软解码实现过程
m_lPlayHandle = NET_DVR_RealPlay_V30(lUserID, struPlayInfo, null, null, bPreviewBlock);



然后就是 m_hwnd =0. 导致NET_DVR_RealPlay_V30 提示尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

谁能帮我看看是怎么回事啊 ? 我刚开始接触这块,不怎么懂。
...全文
151 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingyuebuyu 2011-03-05
  • 打赏
  • 举报
回复
http://wenku.baidu.com/view/fce19d0cba1aa8114431d930.html

http://wcb0414.blog.163.com/blog/static/449938242010102895118974/

http://topic.csdn.net/u/20091027/16/87af37bd-2317-4c22-a227-a50b48e89606.html

[DllImport("HCNetSDK.dll")]
public static extern int NET_DVR_RealPlay_V30(int lUserID,ref NET_DVR_CLIENTINFO struPlayInfo, string a, string b, bool bPreviewBlock);
wuyq11 2011-03-05
  • 打赏
  • 举报
回复
程序本身的问题。
使得内存资源没有及时释放导致此错误
调用API问题
参数设置
zhuersuo 2011-03-05
  • 打赏
  • 举报
回复
谁能给一个 C# 能用的NetVideoActiveX23啊?

110,534

社区成员

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

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

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