
windows
TANG_XIAO_BIN
不要拿自己的优点和别人的缺点作比较,因为这是不合理的
展开
-
堆栈溢出
在写文件传输遇到的奇怪问题,在调用recv以后,会出现找不到句柄的情况!因为里面用到了多线程,我以为是共享了MFC类库的原因,可是后来我把程序分成两部分,发现在接受(recv)以后会马上出问题。或许遇到的太少,经过一个下午的调试,发现recv以后会出现找不到句柄。经过反复调试发现是recv除了问题。这个问题发现起来真不容易。这是典型的堆栈溢出问题,在recv调用时,我传进去的是长度为2原创 2010-04-04 17:50:00 · 682 阅读 · 0 评论 -
windbg cmd
windbg:.cls 清屏bl 列取已下的断点,以及其状态bc 取消断点.bpcmds 简单列表显示断点bp: 可以对地址(bp 0×1234567)以及符号(bp thApp!somefunction)下断点bd/be 关闭断点/打开断点 d* 读取内存数据da 显示Ascii码db 显示字节和ascii码dc 显示双字(4个字节)和Ascii码原创 2012-08-25 15:19:36 · 771 阅读 · 0 评论 -
IE IWebBroser2,让你的程序显示网页
具体步骤: 2.project-->addclass然后就出现 添加变量关联,并初始化:CRect rect; GetClientRect(&rect); m_webShow.SetWindowPos(NULL, rect.left, rect.top, rect.Width(), rect.Height(), NULL);原创 2012-10-18 23:22:22 · 732 阅读 · 0 评论 -
driver io
输入缓冲区传输类型 位置METHOD_IN_DIRECT irp->AssociatedIrp.SystemBufferMETHOD_OUT_DIRECT irp->AssociatedIrp.SystemBufferMETHOD_BUFFERED原创 2012-12-18 22:05:28 · 701 阅读 · 0 评论 -
解决 wdk error C2220: warning treated as error - no ‘object’ file generated
在安装目录下找到bin目录i386mk.inc的MSC_WARNING_LEVEL的值替换为 /W1添加一行,如下:MSC_WARNING_LEVEL=$(MSC_WARNING_LEVEL) $(COMPILER_WX_SWITCH)MSC_WARNING_LEVEL= /W1 本文参考http://hi.baidu.com/xicao54007/item/144466d72原创 2013-05-03 23:14:12 · 1285 阅读 · 0 评论 -
linux 与windows的内存分配
linuxkamlloc函数原型:#includeVoid *kmalloc(size_t size, int flags);1.使用GFP_KERNEL容许kmalloc在分配空闲内存时候如果内存不足容许把当前进程睡眠以等待。因此这时分配函数必须是可重入的。如果在进程上下文之外如:中断处理程序、tasklet以及内核定时器中这种情况下current进程不该睡眠,驱动程序该使用GF原创 2013-05-05 15:03:36 · 1259 阅读 · 0 评论 -
win7下用windbug
调试机:1.不需要设置波特率之类的,在wmware添加串口,按照前面的文章。2.设置符号表:d:\windbug\symbols;srv*d:\windbug\symbols*http://msdl.microsoft.com/download/symbols,如果d:\windbug\symbols不存在,就会去下载 被调试机:在boot.ini 添加:multi(0)d原创 2012-08-15 14:40:54 · 1127 阅读 · 0 评论 -
win release/debug 删除文件夹
昨天调试了一个非常难以发现的bug,在Release出问题,但是Debug没有问题。我一行行删啊 ,最后发现了这个BUG多了一个nPageSize参数,但是debug不出问题,觉得可能是debug加入了很多调试参数,这个时候恰好微软自动他忽略了。而release会自动优化,这个时候就出大问题了。 最后附上删除文件夹//IN szDirName:文件夹的名字VOID Dele原创 2013-06-12 18:44:47 · 997 阅读 · 0 评论 -
windows KdPrint打印中文文件夹的问题,应该是DbgPrint的BUG
有的时候打印部分文件夹名字会出问题,尤其是桌面文件夹更明显,之前一直存在,今天写出来分享下。就不截图了,比如要答应 \test\测试.txt 这个时候就只打印\test就没有啦 解决办法:if (RtlUnicodeStringToAnsiString(&ansiString, &FileName, FALSE) == STATUS_SUCCESS) { K原创 2013-07-07 23:47:33 · 1371 阅读 · 0 评论 -
window异步IO复杂,linux也很容易出错
去年搞了1个月的IOCP发现,异常难控制。今年把自己的同时写的epoll拿出来使用,发现总是发一段时间后,很容易丢包。照成客户机卡住等待recv。但是本地测试却没有问题。 我也怀疑高效的epoll EL(Edge Triggered)是有bug的,最后发现不知道是不是bug,如果接收未接收干净,确实会影响发送。 虽说是异步发送,但确实数据已经提交出去,已经写入内核缓冲区。 这里的发送原创 2013-07-14 12:07:23 · 958 阅读 · 0 评论 -
vs2010 坑爹的vector
今天居然发现vs2010的push_back,居然采用memcpy,而不是传统的赋值==这个问题我觉得很搞笑,这么简单的,不知道设计者的是不是变了? http://social.msdn.microsoft.com/Forums/vstudio/en-US/61648f93-6967-4450-9f12-b904cfccfaa1/stl-problem-in-vs-2010-inser原创 2013-08-20 23:20:45 · 2245 阅读 · 0 评论 -
WSASend
我突然发现平时不太关心的WSASend却麻烦死我啦,WSARecv投递进IOCP后,能正常收到相应的通知!但是如果是阻塞发送,却会影响WSARecv通知,具体原因不得而知。但是改用重叠IO投递,却能正常接收,我估计是发送时候,占用了所有太多时间,以至于没有接收消息的线程。但是问题来了,WSASend什么时候接收通知呢?有位兄弟进行了深入分析:http://blog.youkuaiyun.com/z原创 2012-07-23 01:54:36 · 1874 阅读 · 0 评论 -
VirtualProtect遇上OutputDebugString
这两天一直想把内存写的信息打印出来,可是不料,程序一直死掉,而且是假死。后来查明原因,VirtualProtect遇上OutputDebugString会僵在那里,不知道为什么会这样?这个函数不就是交换吗?原创 2012-05-07 10:02:28 · 616 阅读 · 0 评论 -
windows网络防火墙开发二三事
<br />网络防火墙开发二三事<br />- haoxg - <br /><br />花了近一个月的时间研究 Windows 平台下的网络防火墙相关技术,并实现了一个简单的防火墙。<br />在独自摸索的过程中,由于以往的开发经历从未涉及此领域,所以碰到了不少困难,也走了些弯路。<br />现此项目暂告一段,遂将相关心得整理成文。文章以归纳总结为主,没有创新性技术,高手免看。 <br /><br />◎ 防火墙的数据包拦截方式小结 <br /><br />网络防火墙都是基于数据包的拦截技术之上的。在 Wi转载 2011-05-08 23:09:00 · 6163 阅读 · 0 评论 -
清理系统垃圾
@echo offpauseecho 正在清理系统垃圾文件,请稍等......del /f /s /q %systemdrive%/*.tmpdel /f /s /q %systemdrive%/*._mpdel /f /s /q %systemdrive%/*.logdel /f /s /q %systemdrive%/*.giddel /f /s /q %systemdrive%/*.chkd原创 2011-06-09 23:06:00 · 585 阅读 · 0 评论 -
Windows驱动和应用程序通信
驱动层:PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(pIrp);//得到输入缓冲区大小 ULONG cbin = stack->Parameters.DeviceIoControl.InputBufferLength;//得到输出缓冲区大小 ULONG cbout = stack->Parameters.DeviceIoControl.OutputBufferLength;//得到IOCTL码 ULONG code = stack->原创 2011-04-27 23:13:00 · 1445 阅读 · 0 评论 -
ip变动通知中间层驱动
http://www.osronline.com/ddkx/network/22genoid_8vhu.htmhttp://qq164587043.blog.51cto.com/261469/141661 这两篇终于琢磨出了,windows ip变动时,通知内核的数据结构,微软设计的真巧妙,但是理解起来确实很费事。尤其是没有资料的时候。原创 2011-06-30 17:42:00 · 586 阅读 · 0 评论 -
WINDBG 环境的搭建
1.安装XP虚拟机2.在VM中使用命名管道模拟一个串口\\.\pipe\com_1This end is then serverthe other and is an application3.被调试机 在boot.ini中增加一行/fastdetect /debug /debu原创 2011-07-23 00:06:12 · 749 阅读 · 0 评论 -
【转】 xx_学驱动 -- INLINE HOOK 过简单驱动保护、、
2011-08-20 22:50转载自 分享最终编辑 xx375INLINE HOOK过简单驱动保护的理论知识和大概思路、、 这里的简单驱动保护就是 简单的 HOOK 掉内核API的现象、、、找到被HOOK的函数的当前地址在此转载 2011-09-25 01:09:10 · 1522 阅读 · 0 评论 -
时间函数 与 64位表示 (Windows/Linux)
转自 http://hi.baidu.com/tantea/blog/item/24e1b1b5d6bd2e7e8bd4b29e.html时间函数 与 64位表示 (Windows/Linux)2010-06-04 16:23Q转载 2011-09-28 12:30:09 · 3244 阅读 · 0 评论 -
获取网卡是否自动checksum
今天调试了个程序,居然发现NIC不支持上层校验,只好查资料了 先给上书的地址: http://read.pudn.com/downloads100/ebook/410039/ndis_driver_dev.pdf 1.读到下面就明白了(如果要想马上知道答案,就在打原创 2011-10-10 23:38:48 · 3170 阅读 · 1 评论 -
vs bug ? fwrite fread
前天晚上本来心情不好,后来我一直在调试程序,调试发现程序无论如何总是有错误,不是多读4个字节,就是2个字节之类的。一直认为是协议格式不对,调到了1点,用UtralEdit看了很久,没有发现问题。到昨天晚上还是这样,到晚上11点才发现原来是这个问题fread("name", "r+");fwrite("name", "r+");应该是fread("name", "rb+"); 这个b没有加上原创 2011-10-20 09:27:20 · 750 阅读 · 0 评论 -
让win7 支持调试
可以在启动时设置BOOTMGR,那时是黑屏的,可以按照下面方法让它在启动后支持调试bcdedit /set {be71baca-32be-11e1-9f3e-8a8159d1b6b2} bootdebug on //自己的GUID 运行bcdedit就可以看到 bcdedit /set {be71baca-32be-11e1-9f3e-8a8159d1b6b2原创 2012-03-27 11:16:00 · 748 阅读 · 0 评论 -
注册表和nids
中间层驱动工作原理本文专自:http://www.nsfocus.net/index.php?act=magazine&do=view&mid=2509 作者:noble 出处:http://www.nsfocus.com日期:2005-01-06本文如有错误,请联系作者,谢谢。(1)注册表常识:1)、设备数据库所在的注册表健值为: HKL转载 2014-03-19 22:09:53 · 1160 阅读 · 0 评论