
window编程
文章平均质量分 67
zslInSz
这个作者很懒,什么都没留下…
展开
-
在可执行文件或DLL的多个实例之间共享静态数据
全局数据和静态数据不能被同一个. e x e或D L L文件的多个映像共享,这是个安全的默认设置。但是,在某些情况下,让一个. e x e文件的多个映像共享一个变量的实例是非常有用和方便的。例如,Wi n d o w s没有提供任何简便的方法来确定用户是否在运行应用程序的多个实例。但是,如果能够让所有实例共享单个全局变量,那么这个全局变量就能够反映正在运行的实例的数量。当用户启动应用程序的一个实例原创 2012-10-09 21:30:16 · 2210 阅读 · 0 评论 -
一个C 实现的遍历文件夹的程序
#include #include #include using namespace std;void ListFile(char* szDir){ char szTempDir[MAX_PATH+1]; strcpy(szTempDir,szDir); strcat(szTempDir,"*"); HANDLE hFindFile; WIN转载 2013-01-07 15:55:15 · 907 阅读 · 1 评论 -
PE文件加载和修改
一、 Windows加载器加载器读取一个PE文件的过程如下:1. 先读入PE文件的DOS头,PE头和Section头。2. 然后根据PE头里的ImageBase所定义的加载地址是否可用,如果已被其他模块占用,则重新分配一块空间。3. 根据Section头部的信息,把文件的各个Section映射到分配的空间,并根据各个Section定义的数据来修改所映射转载 2013-01-07 09:52:36 · 1016 阅读 · 0 评论 -
ZwQuerySystemInformation 的两个使用程序
//第一个程序是驱动的一个例子#include typedef enum _SYSTEM_INFORMATION_CLASS { SystemBasicInformation, SystemProcessorInformation, SystemPerformanceInformation, SystemTimeOfDayInformation, SystemPathI转载 2012-12-20 10:50:58 · 292 阅读 · 0 评论 -
windows 键盘消息的机制
在Microsoft Windows 98中,键盘和鼠标是两个标准的使用者输入来源,在一些连贯操作中常产生互补作用。当然,鼠标在今天的应用程序中比十年前使用得更为广泛。甚至在一些应用程序中,我们更习惯于使用鼠标,例如在游戏、画图程序、音乐程序以及Web浏览器等程序中就是这样。然而,我们可以不使用鼠标,但绝对不能从一般的PC中把键盘拆掉。相对于个人计算机的其它组件,键盘有非常久远的历史,它起源于转载 2012-12-17 11:51:32 · 9608 阅读 · 4 评论 -
线程与内核对象的同步
上一章介绍了如何使用允许线程保留在用户方式中的机制来实现线程同步的方法。用户方式同步的优点是它的同步速度非常快。如果强调线程的运行速度,那么首先应该确定用户方式的线程同步机制是否适合需要。虽然用户方式的线程同步机制具有速度快的优点,但是它也有其局限性。对于许多应用程序来说,这种机制是不适用的。例如,互锁函数家族只能在单值上运行,根本无法使线程进入等待状态。可以使用关键代码段使线程进入等待状态,转载 2012-12-14 15:14:51 · 1788 阅读 · 0 评论 -
用户方式中线程的同步
系统中的所有线程都必须拥有对各种系统资源的访问权,这些资源包括内存堆栈,串口,文件,窗口和许多其他资源。如果一个线程需要独占对资源的访问权,那么其他线程就无法完成它们的工作。反过来说,也不能让任何一个线程在任何时间都能访问所有的资源。如果在一个线程从内存块中读取数据时,另一个线程却想要将数据写入同一个内存块,那么这就像你在读一本书时另一个人却在修改书中的内容一样。这样,书中的内容就会被搞得乱七八糟转载 2012-12-14 10:53:34 · 849 阅读 · 0 评论 -
消息分流器、子控件宏和API宏
消息分流器定义在Microsoft Visual C++中提供的Wi n d o w s X . h文件里。通常在Wi n d o w s . h文件之后紧接着包含这个文件。Wi n d o w s X . . h文件就是一组# d e f i n e指令,建立了一组供我们使用的宏。Wi n d o w s X . h的宏实际上分为三组:消息分流器、子控件宏和A P I宏。这些宏以下述的方式为我们原创 2012-12-14 09:28:16 · 370 阅读 · 0 评论 -
setsockopt设置socket状态
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经原创 2012-12-13 16:46:59 · 478 阅读 · 0 评论 -
转至windows核心编程 线程的基础知识
第6章 线程的基础知识理解线程是非常关键的,因为每个进程至少需要一个线程。本章将更加详细地介绍线程的知识。尤其是要讲述进程与线程之间存在多大的差别,它们各自具有什么作用。还要介绍系统如何使用线程内核对象来管理线程。与进程内核对象一样,线程内核对象也拥有属性,我们将要观察许多用于查询和修改这些属性的函数。此外还要介绍可以在进程中创建和生成更多的线程时所用的函数。第4章介绍了进程是由两个部分构转载 2012-11-26 09:35:37 · 566 阅读 · 0 评论 -
windows 核心编程中的通过消息发送数据
本节将讨论系统如何利用窗口消息在进程之间传送数据。一些窗口消息在其l P a r a m参数中指出了一个内存块的地址。例如, W M _ S E T T E X T消息使用l P a r a m参数作为指向一个以零结尾的字符串的指针,这个字符串为窗口规定了新的文本标题串。考虑下面的调用:SendMessage(FindWindow(NULL, "Calculator"), WM_S原创 2012-11-21 14:45:43 · 1445 阅读 · 0 评论 -
一个注入dll到进程中的工程
// Test_Inject_Dll.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include int EnableDebugPriv(char szName[]);// 远程插入线程 // char szDllFullPath[] DLL文原创 2012-10-27 18:49:35 · 397 阅读 · 0 评论 -
HINSTANCE/HWND/CWnd/HANDLE 的区别
HINSTANCE是应用程序实例句柄,HWND是窗口对象句柄,HANDLE是任意对象的句柄,CWnd是MFC中的窗口类。 MSDN里面对于HINSTANCE的解释是"handle to an instance" 就是说是一个instance的句柄。而对instance的解释是"An object for which memory is a转载 2012-10-11 10:19:18 · 389 阅读 · 0 评论 -
fatal error C1189:
今日写程序在win32中用CFiledialog模块来打开文件突然发现报错。提示:#error Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d] 原因:1、使用MFC原创 2012-10-11 10:03:29 · 572 阅读 · 0 评论 -
windows 内存映射文件
4.内存管理机制--内存映射文件 (Map) 和虚拟内存一样,内存映射文件可以用来保留一个进程地址区域;但是,与虚拟内存不同,它提交的不是物理内存或是虚拟页文件,而是硬盘上的文件。·使用场合它有三个主要用途:系统加载EXE和DLL文件,操作系统就是用它来加载exe和dll文件建立进程,运行exe。这样可以节省页文件和启动时间。访问大数据文件,如果文件太大,比如超过了进程用户原创 2012-09-20 08:21:21 · 3408 阅读 · 0 评论 -
内存映射文件进程间共享内存
内存映射文件进程间共享内存内存映射文件的另一个功能是在进程间共享数据,它提供了不同进程共享内存的一个有效且简单的方法。后面的许多例子都要用到共享内存。共享内存主要是通过映射机制实现的。Windows 下进程的地址空间在逻辑上是相互隔离的,但在物理上却是重叠的。所谓的重叠是指同一块内存区域可能被多个进程同时使用。当调用CreateFileMapping 创建命名的内存映射文件对象转载 2013-01-08 17:00:01 · 4447 阅读 · 0 评论