Windows
文章平均质量分 79
松阳
我在路上走着,遇到了你,大家点头微笑,结伴一程
缘深缘浅,缘聚缘散,该分手时分手,该重逢时重逢
惜缘即可,不必攀缘
同路人而已
能不远不近地彼此陪伴着,不是已经很好了吗?
展开
-
Window API (八)多线程的挂起、恢复、切换、终止线程
只会线程的创建和退出还是不够的,一些基本操作也得会...... 创建两个线程。创建时,一个运行一个挂起。然后唤醒挂起的,挂起运行的。运行一段时间后,终止运行的,唤醒挂起的 哈 听上去挺乱,还是看程序简单...... #include#includeDWORD WINAPI ThreadProc(LPVOID lpParam){ LPDWORD pData原创 2011-12-19 15:52:36 · 8272 阅读 · 0 评论 -
内存映射的使用——实现大文件内容倒序
内存映射文件使用的步骤:打开文件内核对象 CreateFile创建文件映射内核对象 CreateFileMapping将数据映射到地址空间 MapViewOfFile撤销文件数据的映射 UnmapViewOfFile关闭文件映射 CloseHandle关闭文件对象 Cl原创 2012-11-08 19:07:17 · 2898 阅读 · 0 评论 -
DLL动态库使用要点概括
DLL使用步骤:1、编辑DLL,导出生成相应的.lib和.dll 为了让DLL导出一些函数,需要在每一个将要被导出的函数前加标识符:_declspec(dllexport) 生成文件中.lib为引入库文件。可通过dumpbin -exports [DLL NAME] 发布.h文件可以采用宏定义的方法处理: #ifdef LEARNDLL_API#else#d原创 2012-11-01 18:04:32 · 1714 阅读 · 0 评论 -
Unicode宽字符转化
// 把宽字符转化为ANSI字符串WideCharToMultiByte( CP_ACP, 0, lpcwStr, -1, lpStr, sizeof(lpStr), NULL, NULL );// 把ANSI字符串转化为宽字符MultiByteToWideChar( CP_ACP, 0, lpcStr, -1, lpwStr, sizeof(lpwStr) );int dou转载 2012-10-30 14:10:37 · 3161 阅读 · 0 评论 -
同一端口如何区分不同的Socket
为了区分不同应用进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP 或 UDP)和使用的端口号。 Socket的原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。 accept()产生的Socket端口号是多少?转载 2012-07-20 14:00:48 · 29533 阅读 · 16 评论 -
Window API (五)内存操作与信息管理
有了之前两篇的基础,现在已经了解了 Windows 系统是如何管理内存的,以及各种分配与释放的方法。分配、释放内存最终目的还是要使用内存,所以要研究如何使用内存,如复制、填充等。 示例程序:#include#include#define MEM_BLOCK_SIZE 32BOOL ShowMemContent(LPVOID lpMem,SIZE_T dwSiz原创 2011-12-16 16:01:07 · 2145 阅读 · 0 评论 -
Window API (四)虚拟内存管理
进程的虚拟地址空间内存页面存在 3 种状态, 分别为空闲的 (free) 、 保留的(reserved)和提交的(Committed)具体见下表。大多数情况下,一页的大小是 4KB。 示例程序: #include#includeint main(void){ SIZE_T sizeVirtual = 4000; LPVOID lpRo原创 2011-12-16 15:15:56 · 3338 阅读 · 1 评论 -
Window API (三)堆管理操作
Windows 系统中,每个进程都有自己的堆,每个进程的堆的数量也有所不同。Windows系统中所谓的“堆”(Heap)并不是内存块,而是一种用于内存管理的对象,也是一种内存组织的形式。进程可以从属于自己的堆上分配内存和释放内存。 堆的句柄惟一标识了一个堆。在堆上分配内容前,首先需要获得所要进行分配的堆的句柄,获得堆的句柄有两种方式:一种是获取在进程中时已经创建好的堆,二是进程自己再创原创 2011-12-16 13:30:54 · 2518 阅读 · 0 评论 -
Window API (一)数据类型
Windows数据类型的命名都很有规律。 基本数据类型包括 BYTE、CHAR、WORD、SHORT、DOWRD、INT 等。 指针类型的命令方式一般是在其指向的数据类型前加“LP”或“P”,比如指向 DWORD的指针类型为“LPDWORD”和“PDWORD”。各种句柄类型的命令方式一般都是在对象名前加“H”。Windows 系统中有很多对象,所有表示一个对象的数据类型都是原创 2011-12-12 15:43:01 · 2960 阅读 · 0 评论 -
Window API (二)文件操作
在Window API 中,创建和打开都用CreateFile只不过是用到的参数不同。DeleteFile、CopyFile、MoveFile就像字面理解那样,参数也比较随意。ReadFile读文件,WriteFile写文件。写个小程序练练: #include#includeDWORD ReadFileContent(LPSTR szFilePath){ HA原创 2011-12-13 15:08:31 · 2903 阅读 · 0 评论 -
Window API (六)多进程的操作
多进程也是必备的操作。写一个实例程序。调用一个Child.exe的可执行程序作为子进程。要先将Child.exe编译好放在同一目录下。//Child.cpp#include#include#define MyAlloc(size) HeapAlloc(GetProcessHeap(),0,size)#define MyFree(lpMem) HeapFree(GetPr原创 2011-12-19 14:12:36 · 4590 阅读 · 1 评论 -
Window API (七)多线程的创建、退出、传递线程信息
多线程的操作就和Linux很像啦,内部逻辑都一样的。 #include#include#define MAX_THREADS 5typedef struct _THREAD_PARAM{ DWORD i; DWORD dwRandom; DWORD dwData;}THREAD_PARAM,*LPTHREAD_PARAM;DWORD WINAPI原创 2011-12-19 15:11:33 · 2928 阅读 · 0 评论 -
使用API对注册表进行读写
首先明确一下HKEY的概念。从字面上看它是一个Key的句柄。读写位置的确定就靠它了。打开注册表编辑器("regedit"),里面的HKEY_CURRENT_USER还有HKEY_LOCAL_MACHINE这些是不是HKEY句柄呢?必然是啊,都HKEY打头了...... 明确这个之后,一些问题就好解决了。所有的注册表操作都需要HKEY句柄,但形式不太一样。 比如我想在L原创 2012-11-28 18:48:06 · 5964 阅读 · 0 评论