suncode

  博客园 :: 首页 :: 新随笔 :: :: :: 管理 ::

随笔分类 -  Windows

摘要:进程由进程对象,地址空间两部分构成;线程由线程的内核对象、线程栈构成,进程从来不执行任何东西,它只是线程依存的地方,线程在进程的地址控件中执行代码,并在进程的地址空间中对数据进行操作。主线程的入口函数main wmain Winmain wWinmain辅助线程DWORD WINAPI ThreadFunc(PVOID pvParam){ DWORD dwResult = 0; ... return(dwResult );}CreateThread 与 _beginthreadexCreateThread :操作系统执行的创建线程函数。_beginthreadex:CRT(C++运行时库) 内 阅读全文
posted @ 2011-04-19 11:27 suncode 阅读(240) 评论(0) 推荐(0)

摘要:WM_COPYDATA是一个非常特殊的消息,此消息可以携带一个较大的消息参数,而其他消息都只能写到两个固定大小的参数(WPARM LPARAM)发送WM_COPYDATA消息时wParam参数应该赋值为发送此消息的窗口,lParam指向一个 COPYDATASTRUCT结构类型的变量typedef struct COPYDATASTRUCT{ ULONG_PTR dwData; //可以是任意值 DWORD cb_data; //指定lpData内存区域的字节数 PVOID lpData; //发送给目录窗口所在进程的数据}COPYDATASTRUCT, *PCOPYDATASTRUCT;/* 阅读全文
posted @ 2011-03-18 17:07 suncode 阅读(4108) 评论(0) 推荐(0)

摘要:线程同步机制为线程协同工作而设计,windows系统中有多种机制可以用于线程同步,最常用的有下面几种:互斥对象(Mutex)时间对象(Event)信号量(Semaphore)临界区(critical section)可等待计时器(waitable Timer)同步过程中两个重要的概念是同步对象和等待函数:同步对象:线程同步过程中需要先定义一个同步对象,具有标志的(signaled)和未标志的(nonsignaled),线程根据是否已经完成操作将同步对象视之为 标志的或未标志的。等待函数:专门用于等待同步对象状态改变,线程调用等待函数后会暂停,直到同步对象的状态改变后,等待函数才会返回,线程继续 阅读全文
posted @ 2011-03-10 17:26 suncode 阅读(193) 评论(0) 推荐(0)

摘要:管道(Pipe)是一种用于进程间共享数据的机制,实质是共享一段内存,windows系统为这段共享内存设计采用数据流I/O的方式访问。由一个读一个写,类似于一个管道两端。管道分为命名管道和匿名管道。匿名管道只能在父子进程间进行通信,不能在网络间通信,而数据传输是单向的。命名管道可以在任意进程间通信,通信是双向的。创建命名管道 CreateNamedPipeHANDLE WINAPI CreateNamedPipe( LPCTSTR lpName, // 管道名称, 命名方式:\\ServerName\pipe\PipeName 或者 \\.\pipe\PipName DWORD dwOpenMo 阅读全文
posted @ 2011-03-10 17:01 suncode 阅读(1766) 评论(0) 推荐(0)

摘要:邮槽通信分为服务端和客户端,邮槽有服务端进行创建,创建时指定邮槽的名字,创建后获得邮槽的句柄,客户端可以通过句柄打开邮槽,获得句柄后可以向邮槽写入消息。邮槽服务是单向的,只有服务端才能从邮槽中读取消息,客户端只能写入,消息是先进先出的,邮槽通信的数据可以是任意格式,但一条消息不能大于424字节,数据通过网络传播时使用的是数据报协议(UDP),网络通信时客户端必须知道服务端的主机名或域名。邮槽命名: 本 机: \\.\mailslot\[oath\]name 例:\\.\mailslot\win\suncode 不同主机:\\DomainName\mailslot\[path\]name \\C 阅读全文
posted @ 2011-03-08 18:39 suncode 阅读(332) 评论(0) 推荐(0)

摘要:进程的地址空间是私有的,出于安全行的目的,如果一个进程不具有特殊的权限,是无法访问另外一个进程的内存空间的。windows 系统下,在进程间通信或共享数据的方式如下:邮槽:邮槽是最为简单的进程间数据共享方式,一个进程创建并拥有一个邮槽,其他进程都可以打开这个邮槽并向其发送消息。管道:实质是一种共享内存,有一个进程创建,其他进程连接,并可进行双向的通信。剪贴板:剪贴板是重要的进程间数据共享方式,所有的进程都可以设置和修改剪贴板,也可以从剪贴板获取内容。消息:具体指WM_COPYDATA。消息具有参数wParam、lParam,两者最多是32位的,但是WM_COPYDATA消息参数不受wParam 阅读全文
posted @ 2011-03-08 17:27 suncode 阅读(190) 评论(0) 推荐(0)

摘要:剪贴板定义剪贴板是由操作系统维护的一块内存区域,这块内存区域不属于任何单独的进程,但是每一个进程又都可以访问这块内存区域,而实质上当在一个进程中复制数据时,就是将数据放到该内存区域中,而当在另一个进程中粘贴数据时,则是从该块内存区域中取出数据。相关API剪贴板的打开 – OpenClipboardBOOL OpenClipboard(HWNDhWndNewOwner);hWndNewOwner指向一个与之关联的窗口句柄,即代表是这个窗口打开剪贴板,如果这个参数设置为NULL的话,则以当前的任务或者说是进程来打开剪贴板。如果打开剪贴板成功,则该函数返回非0值,如果其他程序已经打开了剪贴板,那么当 阅读全文
posted @ 2011-03-03 20:36 suncode 阅读(883) 评论(0) 推荐(0)

摘要:简单理解Windows的消息消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。消息一般用一个32位的数来标识,这个数唯一地标识这个消息。这些消息的标识符一般在头文件winuser.h 中定义,如: #define WM_PAINT 0x000F #define WM_QUIT 0x0012 其实消息本身是一个MSG结构。MSG结构定义如下:typedef struct tagMSG{ HWND hwnd; //接受消息的窗口句柄 UINT message; //消息标识符 WPARAM wParam; //32位附加信息 LPARAM lParam; //32位附加信息 D 阅读全文
posted @ 2011-03-03 20:06 suncode 阅读(2005) 评论(0) 推荐(2)