windows核心编程
文章平均质量分 61
Drecik__
这个作者很懒,什么都没留下…
展开
-
Windows核心编程学习笔记(10)--伪句柄
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8088945 在程序中通常使用GetCurrentProcess或GetCurrentTread函数来获得当前的进程句柄或现场句柄,但需要了解到他们获得的是一个伪句柄,该句柄不用调用CloseHandle来关闭,若使用CloseHandle传入它们,函数原创 2012-10-19 11:36:19 · 982 阅读 · 0 评论 -
Windows核心编程学习笔记(14)--进程和线程的优先级
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8095467 1. 进程优先级Windows支持6个优先级类,从小到大分别为:idle,blow normal,normal,above normal,high,real-time。其中normal是在ui常用的优先级类,为99%的用户使用。原创 2012-10-21 17:24:50 · 4838 阅读 · 0 评论 -
Windows核心编程学习笔记(15)--进程和线程与CPU的关联性
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8096253 默认情况下,Windows Vist或以后版本在给线程分配CPU时,使用软关联,即如果其他因素一样,系统将是线程在上一次运行的处理器上运行。Windows还支持硬关联,即可以控制线程在某些特定CPU上运行(如果有多个CPU的话),可以使原创 2012-10-21 21:27:13 · 1691 阅读 · 0 评论 -
Windows核心编程学习笔记(16)--线程同步
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8097806 1. 为什么需要线程同步当应用程序使用多线程时候,很多情况下我们将让多个线程访问某一个共享资源,在访问的时候我们就需要考虑的线程同步的问题,例如下面的代码:long g_x = 0;DWORD CALLBACK Thread原创 2012-10-22 11:27:02 · 764 阅读 · 0 评论 -
Windows核心编程学习笔记(17)--用户模式下的线程同步
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8098633 1. Interlocked系列函数:在用户模式下Windows提供了简单的Interlocked系列函数来提供线程同步的操作,我们无需知道系统是怎么实现这些函数的,只需知道Interlocked系列函数是一个院子操作,在调用的时候原创 2012-10-22 15:34:27 · 1244 阅读 · 0 评论 -
Windows核心编程学习笔记(19)--内核模式下的线程同步2
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8105302 1. 互斥量内核对象互斥量内核对象用来确保一个线程独占对一个资源的访问,该对象包含一个使用计数、线程ID以及递归计数。互斥量的行为和关键段完全相同,但是互斥量是内核对象,而关键段是用户模式下的,所以互斥量比内核对象慢原创 2012-10-25 09:58:09 · 1089 阅读 · 0 评论 -
Windows核心编程学习笔记(20)--同步设备I/O与异步设备I/O1
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/81813381. 打开和关闭设备首先看下Windows常用的设备和打开他们的函数:根据上述表格打开一个设备后获得一个用来标志设备的句柄,可以将该句柄传给其他函数来与设备进行通信。例如:调用SetCommConfig设置原创 2012-11-14 20:49:25 · 1491 阅读 · 0 评论 -
Windows核心编程学习笔记(18)--内核模式下的线程同步1
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8101549虽然用户模式下的线程同步机制提供了非常好的性能,但它们也存在一些局限性,不适用于许多应用程序。所以操作系统提供了使用内核模式来对线程同步,内核对象的用途要广泛很多,实际上内核对象唯一的缺点就是它们的性能。我们讨论过的好几种内核对象(进程,原创 2012-10-23 15:52:04 · 918 阅读 · 0 评论 -
Windows核心编程学习笔记(22)--Windows线程池
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8194020Windows线程提供了一个线程池机制来简化线程的创建,销毁以及日常管理,避免了线程频繁创建和销毁的开销。一下介绍的与现场池有关的函数是新的线程池API,只能运行在Windwos Vista及以后版本。这些线程池函数可以帮助我们做以下原创 2012-11-17 20:53:18 · 1057 阅读 · 0 评论 -
Windows核心编程学习笔记(21)--同步设备I/O与异步设备I/O2
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/81869611. 异步设备I/O基础异步设备I/O是指,当一个线程向设备发送一个异步I/O请求时,这个I/O被传送给设备驱动程序,后者负责完成实际的I/O惭怍。当驱动程序在等待设备响应的时候,应用程序的线程并没有因为要等待I/O请求完成而被挂原创 2012-11-17 09:40:27 · 2008 阅读 · 0 评论 -
Windows核心编程学习笔记(9)--线程创建与结束线程
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8086020 创建线程之前的准备每个线程必须有一个入口点函数,这个是线程执行的起点,所以创建线程前必须先声明或定义,函数原型DWORD WINAPI ThreadFunc( PVOID pParam );注意:函数名可以自己取。线程函数应原创 2012-10-18 16:07:45 · 994 阅读 · 0 评论 -
Windows核心编程学习笔记(7)--进程详谈2
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8082956 结束进程 结束进程可以通过下面四种方式:主线程的入口点函数返回(强烈推荐的方式)让主线程从入口点函数返回可以保证一下操作会被进行:l 该线程创建的任何C++对象将调用其析构函数销毁l 操作系统正确释放线程栈使用的原创 2012-10-17 21:03:08 · 608 阅读 · 0 评论 -
Windows核心编程学习笔记(5)--系统版本
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8080246 最开始是使用GetVersion函数,但是现在已经舍弃了,就不介绍现在一般是使用GetVersionEx函数,该函数传入一个OSVERSIONINFO的结构体指针,函数返回时填充该结构体typedef struct _OSVERSI原创 2012-10-17 11:00:01 · 804 阅读 · 0 评论 -
Windows核心编程学习笔记(11)--线程调度
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8091304 线程的挂起与恢复在线程对象中有一个值表示线程的挂起计数,在调用CreateProcess或CreateThread时,系统将创建线程的内核对象,并把挂起计数初始化为1,因为线程初始化需要时间,这样可以防止线程在初始化的时候被执行原创 2012-10-19 20:59:08 · 931 阅读 · 0 评论 -
Windows核心编程学习笔记(2)--Unicode与ANSI字符
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8078848Windows API函数基本上都有Unicode版和ANSI两个版本的函数,但是其实调用ANSI函数最终结果还是调用Unicode版本实现,所以开发时是用Unicode编码能提高效率和降低是用内存。尽量是用安全字符串处理函数,在原有版本原创 2012-10-16 21:28:21 · 701 阅读 · 0 评论 -
Windows核心编程学习笔记(3)--获得可执行文件的实例和dll文件的实例句柄
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8079742 获得可执行或DLL文件的实例句柄,可以使用函数GetModuleHandle函数来获得HMODULE GetModuleHandle( LPCSTR lpModuleName );参数为要加载的可执行文件或DLL名,当传入NULL的原创 2012-10-17 09:13:16 · 1110 阅读 · 0 评论 -
Windows核心编程学习笔记(6)--进程详谈1
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8082749 创建进程创建进程的函数是CreateProcess,原型如下:BOOL CreateProcesW( LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY原创 2012-10-17 19:40:12 · 1779 阅读 · 0 评论 -
Windows核心编程学习笔记(8)--作业
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8085844 什么是作业?作业是一个Windows提供的内核对象,它允许我们将进程组合在一起并创建一个“沙箱”来限制进程能够做什么。可以将作业对象想象成一个进程容器。作业的相关函数// 查询线程是否在某个线程是否在指定作业中;BOOL原创 2012-10-18 15:13:06 · 730 阅读 · 0 评论 -
Windows核心编程学习笔记(12)--线程与进程运行的时间
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8093724 如果是一般精度要求可以使用GetThreadTimes和GetProcessTimes函数来获取时间,原型如下:// 以下获得的时间都是以100ns为单位,从1601/01/01子时开始计算的时间;BOOL GetThreadTim原创 2012-10-20 19:45:04 · 1555 阅读 · 0 评论 -
Windows核心编程学习笔记(13)--浅谈线程上下文
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8095311 系统使用CONTEXT对象来记住线程的状态,这样线程在下一次获得CPU可以运行时,就可以从上次停止处继续,WinNT.h的头文件中给出了CONTEXT的数据结构,但是需要注意的是,成员的具体情况取决于Windows运行在什么CPU上。下面给原创 2012-10-21 15:08:50 · 1463 阅读 · 0 评论 -
Windows核心编程学习笔记(1)--显示GetLastError错误的详细信息
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8078785 使用函数FormatMessage函数来查找错误信息,具体操作查看代码BOOL ShowErrorInfo( DWORD dwError ){ HLOCAL hLocal = NULL; // 使用系统默认语言返回错误信原创 2012-10-16 20:49:01 · 1589 阅读 · 0 评论 -
Windows核心编程学习笔记(4)--环境变量值的获取
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8079927 一种方法是可以调用GetEnvironmentStrings来获取全部的环境变量字符串,但这样做的坏处是需要自己解析环境变量,所以着重介绍后一种方法另一种方法可以调用GetEnvironmentVariable来获得某一项环境变量的值,原创 2012-10-17 09:51:58 · 1028 阅读 · 0 评论 -
Windows核心编程学习笔记(23)--纤程
Drecik学习经验分享转载请注明出处:http://blog.csdn.net/drecik__/article/details/8202023Windows提供纤程是为了帮助各个公司更快地、正确地将它们的代码从UNIX移植到Windows中。但我们要记住,自己在Windows上设计程序时,应该避免使用纤程,而使用Windows提供的线程机制。首先要了解的是,纤程是在用户模式原创 2012-11-20 09:28:47 · 1626 阅读 · 0 评论