![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
windows核心编程
jjjjyyyyy
醉心于开发技术海洋,乐此不疲。。。
展开
-
Windows程序设计的UNICODE问题
值得注意的是ANSI C/C++与microsoft c/c++是两个不同的产品.microsoft c/c++兼容 ANSI c/c++,并且进行了扩展.为了面向全球开发,才有了UNICODE 的编码的必要性.在ANSI中,为了方便程序员进行ANSI和UNICODE 两种程序的开发,ANSI C/C++运行期库为我们提供了TCHAR.h的头文件.其中定义了一些宏.EXAM:#原创 2007-04-07 15:07:00 · 636 阅读 · 0 评论 -
windows之内核对象
windows之内核对象内核对象与内核相关,而与进程无关,它的生命周期可能要比创建它的进程时间长。它是由操作系统内核管理的。它是一块内存块,它是一种数据结构,有相关的数据成员。我们可以调用一些API来间接创建内核对象。创建函数经常返回内核对象的句柄,注意句柄与创建它的进程相关。每个进程都有一个句柄表,每一行实际是一条记录结构比如:索引,内核数据结构内存块的地址,访问屏蔽(创建者具有完全访问权)原创 2007-04-07 17:37:00 · 549 阅读 · 0 评论 -
windows之内核对象2
父子进程间的共享内核对象。利用内核对象句柄的可继承性,当然这种继承性仅限于父子进程。可以在SECURITYATRIBUTE这种结构中,设置可继承标志。然后把它作为参数传给创建内核对象的函数。当创建内核对象完毕,在进程的句柄表里就会有一条记录,其中可继承标志位被设置为1状态。然后在这个进程里,利用创建进程的函数创建一个子进程,在这个创建函数里要设置继承性参数为true,这样建立的子进程的句柄原创 2007-04-10 08:25:00 · 577 阅读 · 0 评论 -
windows之内核对象3
跨进程共享内核对象的方式之二就是利用命名的内核对象。注意单命名空间的存在。可以通过两种方式实现,一种利用Create***方法,若同名对象已经存在,则在句柄表里新建一个句柄结构信息,引用已存在对象。还可以利用open**方式,若存在就在句柄表里新建一个句柄结构信息,若不存在就报不存在错误。原创 2007-04-11 22:20:00 · 523 阅读 · 0 评论 -
windows内核对象之4
跨进程共享内核对象的第三种方式:是调用DuplicateHandle(..........)正常情况下需要三个进程参与。但是很少有这种情况。可以利用GetCurrentProcess()获得当前进程的伪句柄,利用两个进程来参入这个函数的调用。当然这其中还涉及了访问屏蔽和继承性等参数。有目标进程不知获得的句柄的情况,可以利用系统的消息机制实现传递。原创 2007-04-14 11:50:00 · 586 阅读 · 0 评论 -
WinCore--TerminateThread--
TerminateThread--异步API,系统不会立即清除线程的堆栈,有利于程序的继续运行,不会出现访问违法.不过dll可能得不到通知. 线程有两个用户对象,一个是窗口对象,一个是挂钩对象,线程结束,则对象释放,而其他的对象需要进程结束时,才会释放.原创 2007-05-25 08:27:00 · 923 阅读 · 0 评论 -
exe 文件的亲缘性设置--转
PLOAD_IMAGE pLoadImage=ImageLoad("exeFileName",NULL);IMAGE_LOAD_CONFIG_DIRECTORY ilcd;GetImageConfigInfomation(pLoadImage,&ilcd);ilcd.ProcessorAffininityMask=0x********;SetImageConfigInfomati原创 2007-06-01 09:08:00 · 716 阅读 · 0 评论 -
win线程同步--循环锁简单理解
线程同步的解决方案之一,循环锁.伪代码:gloabl resourceInUser=false; Syncronize fun(){ while(resourceInUser==true) sleep(0);//可以switchToThread() resourceInUser=true; //---access the原创 2007-06-08 08:56:00 · 920 阅读 · 0 评论 -
线程同步--关键代码段
循环锁,始终检测同步变量,会浪费Cpu时间,于是.关键代码段是一种替代方案. Critical_Section cs; InitializeCriticalSection(&cs)//InitializeCriticalSectionAndSpinCount(&cs,dwSpinCount--等待循环迭待的次数)--多核应用//上面的函数,解决了在转入内核方式前可以循环迭待的原创 2007-06-12 09:08:00 · 706 阅读 · 0 评论