浅墨浓香

想要天亮进城,就得天黑赶路。

导航

随笔分类 -  Windows核心编程

摘要:8.5 Slim读/写锁(SRWLock)——轻量级的读写锁(1)SRWLock锁的目的 ①允许读者线程同一时刻访问共享资源(因为不存在破坏数据的风险) ②写者线程应独占资源的访问权,任何其他线程(含写入的线程)要等这个写者线程访问完才能获得资源。(2)SRWlock锁的使用方法 ①初始化... 阅读全文

posted @ 2015-08-13 16:41 浅墨浓香 阅读(1013) 评论(0) 推荐(1)

摘要:8.4 关键段(临界区)——内部也是使用Interlocked函数来实现的!8.4.1 关键段的细节(1)CRITICAL_SECTION的使用方法 ①CRITICAL_SECTION cs; //声明为全局变量(也可是成员变量,甚至局部变量) ②InitializeCriticalSectio... 阅读全文

posted @ 2015-08-13 14:06 浅墨浓香 阅读(787) 评论(1) 推荐(1)

摘要:8.1 原子访问:Interlocked系列函数(Interlock英文为互锁的意思)(1)原子访问的原理 ①原子访问:指的是一线程在访问某个资源的同时,能够保证没有其他线程会在同一时刻访问该资源。 ②从汇编的角度看,哪怕很简单的一条高级语言都可以被编译成多条的机器指令。在多线程环境下,这条语句... 阅读全文

posted @ 2015-08-10 23:15 浅墨浓香 阅读(4038) 评论(0) 推荐(3)

摘要:7.7 在实际上下文中谈CONTEXT结构(1)线程CONTEXT记录线程的状态(如CPU各寄存器状态),以供下次调度时从停止处继续。(2)CONTEXT的结构(要获得或设置时,必须在Context.ContextFlags设置相应的标志)标志说明CONTEXT_CONTROL控制寄存器,如EIP、... 阅读全文

posted @ 2015-08-08 10:11 浅墨浓香 阅读(812) 评论(0) 推荐(0)

摘要:7.1 线程的挂起和恢复(1)线程挂起 ①创建时(如CreateProcess、CreateThread),传入CREATE_SUSPENDED标志 ②用SuspendThread挂起线程。这个函数可以挂起自己,也可以挂起其它线程(只要有线程句柄) ③调用SuspendThread时,如果这时... 阅读全文

posted @ 2015-08-06 16:06 浅墨浓香 阅读(993) 评论(0) 推荐(0)

摘要:6.1 线程基础(1)线程组成:线程内核对象+线程栈(★进程=进程内核对象+地址空间) ①从内核角度看,线程是一个内核对象,系统用它来存储一些关于线程的统计信息(比如运行时间等) ②从编程角度看,线程是一堆寄存器状态以及线程栈的一个结构体对象。本质上可以理解为一个函数的调用器(其中的寄存器状态用... 阅读全文

posted @ 2015-08-03 00:19 浅墨浓香 阅读(699) 评论(0) 推荐(0)

摘要:5.6 作业对象事件和完成端口(1)将作业对象与完成端口对象关联起来 JOBOBJECT_ASSOCIATE_COMPLETION_PORT joacp; joacp.CompletionKey = hJob1; //可用来标识作业对象任意唯一值,这里取其句柄 joacp.CompletionPor... 阅读全文

posted @ 2015-07-30 23:30 浅墨浓香 阅读(1256) 评论(0) 推荐(0)

摘要:5.1 作业对象 (1)什么是作业对象 ①进程的父子关系只存在于创建的子进程的那一刻,Windows并不一直维护着这种父子关系,这使得管理进程并不是件容易的事。 ②作业对象是用于将一组进程作为一个管理单元的内核对象,本质上可以理解为其实就是进程池对象,可将作业对象看作是进程的容器。 ③作来对象可以用 阅读全文

posted @ 2015-07-30 21:56 浅墨浓香 阅读(2200) 评论(0) 推荐(0)

摘要:4.5.8 ProcessInfo示例程序(1)自定义函数函数名称功能GetProcessIntegrityLevel1、获取进程完整性级别和代码策略:分别在GetTokenInformation中 TokenIntegrityLevel及TokenMandatoryPolicy2、获取资源完整性级... 阅读全文

posted @ 2015-07-28 10:03 浅墨浓香 阅读(1671) 评论(0) 推荐(0)

摘要:4.5 管理员以标准用户权限运行时4.5.1访问控制模型ACM(Access Control Model)(1)进(线)程在访问对象时,系统会根据线程的访问令牌与需要访问的对象所持有的“安全描述符”进行匹配认证,来决定是否被允许访问。(2)访问令牌属进(线程)范围的,相当于进(线)程的身份证(即用户... 阅读全文

posted @ 2015-07-24 13:52 浅墨浓香 阅读(1341) 评论(0) 推荐(0)

摘要:4.2 CreateProcess函数(1)函数原型参数描述PCTSTR pszApplicationName新进程要使用的可执行文件的名字PTSTR pszCommandLine要传递给新进程的命令行字符串,注意PTSTR说明该字符 串应该是可读可写的。PSECURITY_ATTRIBUTES p... 阅读全文

posted @ 2015-07-22 13:52 浅墨浓香 阅读(1188) 评论(0) 推荐(0)

摘要:4.1 编写第一个Windows应用程序(1)进程的组成:(两个部分)①进程也是一个内核对象(即进程内核对象),操作系统用它来管理进程,也是系统保存进程统计信息的地方。②进程是一个地址空间,包含可执行文件或DLL模块的代码和数据,还包含动态内存分配,如线程堆栈或堆的分配。(2)应用程序类型和相应的入... 阅读全文

posted @ 2015-07-18 00:12 浅墨浓香 阅读(1186) 评论(0) 推荐(0)

摘要:3.3 跨进程边界共享内核对象3.3.1 使用对象句柄继承(1)对象句柄继承,只发生在进程之间有父子关系的时候(即一个进程由另一个进程CreateProcess出来)(2)内核对象句柄继承的实现①父进程必须先指出哪些内核对象句柄是可继承(注意不是内核对象本身的继承,而是内核对象的句柄继承),父进程在... 阅读全文

posted @ 2015-07-15 23:16 浅墨浓香 阅读(1241) 评论(0) 推荐(0)

摘要:3.1 何为内核对象3.1.1 Windows平台上的3大对象(1)分类对象描述备注GUI对象也叫用户对象,一般是单线程访问,属于线程级的对象,如加速键表(HACCEL)、插入记号(Caret)、光标(HCURSOR)、桌面(HDESK)、钩子(HHOOK)、图标(HICON)、菜单(HMENU)、... 阅读全文

posted @ 2015-07-15 23:15 浅墨浓香 阅读(1283) 评论(0) 推荐(1)

摘要:2.5 安全字符串函数不安全的字符串函数Strsafe函数Safe CRT函数(C运行库)strcpy, wcscpy, _tcscpy, _mbscpy, strcpy , lstrcpy, _tccpy, _mbccpyStringCchCopy StringCbCopyStringCchCop... 阅读全文

posted @ 2015-07-10 21:32 浅墨浓香 阅读(711) 评论(0) 推荐(0)

摘要:第2章 字符和字符串处理2.1 字符集及字符编码(字符集——字符的集合,不同的字符集,收录的字符可能不同)2.1.1多字节字符集及ANSI编码标准(1)单字节编码:ASCII字符集及扩展——满足英语及西欧语言的需要(2)双字节编码:——满足亚洲等国家语言文字的需要,如:字符编码及代码页第1字节(前导... 阅读全文

posted @ 2015-07-10 21:26 浅墨浓香 阅读(770) 评论(0) 推荐(0)

摘要:1.1 定义自己的错误代码 (1)常见的Windows函数返回值数据类型 数据类型 指出函数调用失败的值 VOID 这个函数不可能失败。只有极少数Windows函数的返回值类型为VOID BOOL 如果函数失败,返回值为0;否则,成功时返回值非0。 ★应避免测试返回值是否为TRUE,最稳妥的做法是检 阅读全文

posted @ 2015-07-10 21:05 浅墨浓香 阅读(2008) 评论(1) 推荐(0)