
Windows编程
haizhongyun
“守法”转载
展开
-
vc 中的handle句柄
http://hi.baidu.com/zhangqiuxi/blog/item/f8478e31b20f10af5edf0ebd.html前几天和同学讨论到VC中的HANDLE,其实用到是使用就是不是很明白意义。今天找了篇文章一起学习吧。 先来看些权威的片断:...typedef unsigned int HANDLE;#define DECLARE_HANDLE(n转载 2012-05-14 13:55:50 · 2623 阅读 · 0 评论 -
向其他进程注入代码的三种方法
原版地址:http://www.codeproject.com/threads/winspy.asp?df=100&forumid=16291&select=1025152&msg=1025152下载整个压缩包下载WinSpy 作者:RobertKuster翻译:袁晓辉(hyzs@sina.com)摘要:如何向其他线程的地址空间中注入代码并在这个线程的上下文中执行之。目录:转载 2012-11-09 15:26:56 · 3649 阅读 · 0 评论 -
Windows核心编程:堆
[]作者:shenzi链接:http://blog.youkuaiyun.com/shenziWindows核心编程:堆 堆非常适合分配大量的小型数据。堆得优点是它能让我们专心解决手头上的问题,而不必理会分配粒度和页面边界这类事情。堆得缺点是分配和释放内存块的速度比其它方式慢,而且也无法再对物理存储器的调拨和撤销调拨进行直接控制。 在系统内部,堆就转载 2012-11-01 15:52:21 · 721 阅读 · 0 评论 -
剖析Windows任务管理器开发原理与实现(转)
原文地址:http://www.vckbase.com/document/viewdoc/?id=809 Windows2000/XP内含的任务管理器(Taskmgr)相信大家都熟悉吧,相比之下XP里的要比2000功能更加强大,返回的信息也更加的详细,不过您是否觉得还有很多希望获得的消息没有包含在里面吗?您是否觉得Windows的系统管理工具箱里的东西太分散了吗?下面就让我们看转载 2012-10-23 15:55:45 · 1559 阅读 · 0 评论 -
堆和栈的区别、windows进程中的内存结构
转自:http://blog.youkuaiyun.com/hns888/article/details/4798024非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中转载 2012-11-01 16:04:44 · 3465 阅读 · 0 评论 -
LPTSTR、LPCSTR、LPCTSTR、LPSTR的来源及意义
UNICODE:它是用两个字节表示一个字符的方法。比如字符'A'在ASCII下面是一个字符,可'A'在UNICODE下面是两个字符,高字符用0填充,而且汉字'程'在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节。UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的所有文字而没有二义。 MBCS,它是多字节字符集,它是不定长表示世界文字的编码。MB转载 2012-08-20 16:34:41 · 447 阅读 · 0 评论 -
用ATL创建COM组件详细解说
一、创建一个模型(工程) MyProj。二、给模型(工程)增加一个组件 MyCom。三、给组件增加方法(函数) MyF1、MyF2、MyF3、MyF4。一、创建模型(工程) MyProj在VC++6.0工作平台中,点击菜单 File下的 New 菜单项,在出现的 New 对话框中选中 Projects 卡片,在列表框中选中 ATL COM AppWizar转载 2012-08-01 15:22:56 · 11824 阅读 · 1 评论 -
互斥与同步
互斥和同步是两个紧密相关而又容易混淆的概念:互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源,如“第一类读写者模型”。转载 2012-05-21 13:29:23 · 473 阅读 · 0 评论 -
error C2065: DEBUG_NEW错误
用VC++的向导生成的类, 都带有下面这几行:#ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif 有时在使用new操作符的时候就会提示错误error C2065: 'DEBUG_NEW转载 2012-06-20 18:21:12 · 4948 阅读 · 0 评论 -
windows下socket编程:区分shutdown()及closesocket()
以下描述主要是针对windows平台下的TCP socket而言。首先需要区分一下关闭socket和关闭TCP连接的区别,关闭TCP连接是指TCP协议层的东西,就是两个TCP端之间交换了一些协议包(FIN,RST等),具体的交换过程可以看TCP协议,这里不详细描述了。而关闭socket是指关闭用户应用程序中的socket句柄,释放相关资源。但是当用户关闭socket句柄时会隐含的触发TCP连接转载 2012-06-18 15:11:45 · 707 阅读 · 0 评论 -
互斥对象 Mutex 和MFC中的CMutex
互斥(Mutex)是一种用途非常广泛的内核对象。能够保证多个线程对同一共享资源的互斥访问。同临界区有些类似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了任何情况下此共享资源都不会同时被多个线程所访问。当前占据资源的线程在任务处理完后应将拥有的互斥对象交出,以便其他线程在获得后得以访问资源。与其他几种内核对象不同,互斥对象在操作系统中拥有特殊代码,并由操作系统来管理转载 2012-05-27 00:10:02 · 11676 阅读 · 0 评论 -
如何结束线程运行
在一些应用程序中,除非用户去结束应用程序的运行,否则其中的子线程会一直处于运行状态。如果应用程序在结束时不主动通知子线程退出,有可能导致主线程结束后,子线程的系统资源得不到释放。如何通知子线程结束运行呢?这需要在程序设计阶段就考虑到,通常可以用事件、消息或全局变量来通知子线程退出运行循环或消息循环。消息通知方式适合用来通知有消息循环的用户界面线程退出,但理论上讲消息机制是不可靠的(消息可能会丢失,转载 2012-05-26 23:19:29 · 903 阅读 · 0 评论 -
Windows运行机理——线程的机制(3)
作者:Rookie.Zhang 来源:博客园 发布时间:2005-06-09 08:54 阅读:740 次 原文链接 [收藏] 当Windows 95进程工作时,不用跟踪进程ID。实际上,大部分相关进程API函数期望一个HANDLE参数,通常称做hProcess。hProcess与某些事情(Win16任务数据库)没有直接的关联,与进程ID不一样,可有多重独特的hProces转载 2012-05-26 18:55:00 · 483 阅读 · 0 评论 -
gethostbyname用法实例c++
经测试得出如下结论:该函数获取的是有网络连接的网卡地址。如果笔记本电脑有无线网卡和一般网卡的话:当两个网络连接都禁用时,只获取一个地址,且是127.0.0.1当都启用且真的连接上网络时,获取两个网卡的地址。当只用无线能上网,但网口不插网线时,只有无线网卡的地址。当网口插上网线且禁用无线时,只有一般网卡的地址,不论是手动配置还是自动获取都可以正确获取该ip。用法举例:原创 2012-05-24 16:58:27 · 6166 阅读 · 0 评论 -
线程与线程句柄
今天温习很久前写的代码,发现自己写的这么一句代码,m_hTheard = CreateThread(NULL,0,RegNotifyProc,LPVOID(this),0,NULL);CloseHandle(m_hTheard); 突然给糊涂了,刚创建的线程,为什么有close了,还是当初入门不踏实,没有细想,现在反过来都记不得了,通过查资料,解决了我的疑惑。 1,线程和线程句柄(转载 2012-06-08 19:27:34 · 585 阅读 · 0 评论 -
关于Socket和IOCP的一些值得注意的地方
IOCP是一整套高性能的IO操作异步模型,可以用在文件操作也可以用在网络SOCKET操作上面。当用在网络SOCKET上时,在服务器端主要配合AceeptEx WSASend WSASendto来使用,在客户机端主要配合ConnectEx WSARecv和WSARecvFrom来使用。这几天用IOCP模型模仿IPMSG软件时有一些感触,分享如下:(这里没有具体的使用常识,这部分请参考《Windows转载 2012-06-08 00:57:34 · 702 阅读 · 0 评论 -
线程何时释放内核资源
转载自http://hi.baidu.com/wangguang246/blog/item/eb70032817b5f3e599250aaf.html最终编辑 yaofly一例子1 if(sClient!=INVALID_SOCKET) { hThread = CreateThread(NULL,0,ClientThread,(LPVOID)pClie转载 2012-06-06 00:10:21 · 2359 阅读 · 0 评论 -
给应用程序加装“看门狗”
相信大多数的程序员或用户,在Windows中见到类似于下面的亲切而又温馨的提示信息,都不会感到陌生:“XXX执行了非法操作,将被关闭。要终止程序,请单击;要调试程序,请单击。”或者,“是否向Microsoft发送错误报告?,。”如果这个程序运行在无人值守、需要保持连续工作状态的场合,而其中的bug又一时难以排除,就需要采取应急措施,消除或减少程序出错造成的影响。本文讨论解决这个问题的办法。转载 2012-05-14 13:58:40 · 505 阅读 · 0 评论 -
创建线程后为什么关闭了线程句柄,线程还是可以运行?
主线程只要拥有线程句柄,事后就可以对线程执行某些操作,比如查询线程状态等等,靠的就是句柄,如果没有句柄,系统就无从知道要查的是那个线程的状态。但保持这个句柄不关闭,并不是线程运行的条件。关闭线程句柄只是释放句柄资源,新开启线程后,如果不再利用其句柄,应该关闭句柄,释放系统资源。关闭线程句柄和线程的结束与否没有关系。句柄可以认为是系统对资源(如线程)的分配的一个编号。关闭这个编号,对转载 2012-11-15 13:31:57 · 1212 阅读 · 0 评论