随笔分类 -  windows核心编程

第二十三章 终止处理程序
摘要:①SEH (structured excepttion handling)结构化异常处理 {终止处理程序,异常处理程序} 终止处理程序:__try{/*try块*/}__finally{/*finally块*/}②为什么使用结构化异常处理?清理工作集中在一个地方执行,保证得到执行可以提高代码可读性让代码更容易维护正确使用对程序性能和体积的影响是很小的③清理工作集中在一个地方执行,保证得到执行例子 //try+finaly+leave应用例子//__leave导致代码执行控制跳转到try块的结尾。DWORD SEHExample(){ HANDLE hfile = INVALID_HA... 阅读全文

posted @ 2013-05-12 20:09 WillingCPP 阅读(190) 评论(0) 推荐(0)

第十章 同步设备IO和异步设备IO
摘要:(1)理解windows中的设备 windows中的设备你可以把它理解成可以与之通信的一切东西(二)为什么要异步I/O 异步I/O是计算机操作中最慢最不可预测的操作之一,如果是同步会耗用较大cpu(三)关于重叠结构typedef struct _OVERLAPPED { DWORD Internal; //保存一个已经处理的IO的错误码DWORD InternalHigh; //异步IO完成后,保存已经传输的字节数DWORD Offset; //文件设备时使用,非文件设备忽略,指定一个文件位置开始转移DWORD OffsetHigh; //指定文件传送的字... 阅读全文

posted @ 2013-04-13 22:08 WillingCPP 阅读(242) 评论(0) 推荐(0)

第八章 用户模式下的线程同步
摘要:(1)什么情况下线程之间需要通信多个线程同时访问一个共享资源,但是不能破坏资源的完整性线程需要通知其他线程任务已经完成(2)原子访问,以及Interlocked系列函数. 所谓原子访问(atomic access)就是一个线程在访问某个资源的同时能够保证没有其他线程会在同一时刻访问同一资源. LONG InterLockedExchangeAdd(PLONG volatile plAddend,LONG lIncrement)LONGLONG InterLockedExchangeAdd64(PLONGLONG volatile plAddend,LONGLONG lIncrem... 阅读全文

posted @ 2013-04-07 11:48 WillingCPP 阅读(357) 评论(0) 推荐(0)

第七章 线程调度,优先级和关联性
摘要:(1)上下文切换 windows在可调度的线程内核中选择一个,并将上次保存在线程上下文的值载入CPU寄存器.(2)windows之所以成为抢占式多进程操作系统,是因为系统可以在任何时刻停止一个线程而另外调度另一个线程.这部分要细细研读,以后再添加 阅读全文

posted @ 2013-04-06 23:05 WillingCPP 阅读(160) 评论(0) 推荐(0)

第六章 线程基础
摘要:(1)线程包括什么?一个是线程的内核对象一个线程栈,用于维护线程执行时所需要的函数参数和局部变量 进程从来不执行任何东西,它只是一个线程的容器。 线程在进程的地址空间内执行代码和处理数据。 每一个线程都有一个上下文,后者包含在线程内核对象中,它反应了执行时cpu寄存器的状态.(2)终止运行线程线程函数结束返回(强烈推荐的)线程调用ExitThread杀死自己(尽量避免)同一进程或不同进程内的线程调用TerminateThread(尽量避免)包含线程的进程终止(避免)(3)线程终止时做什么?线程拥有的所有用户对象句柄会被释放线程的推出代码由STILL_ACTIVE编程ExitThread或T.. 阅读全文

posted @ 2013-04-06 22:30 WillingCPP 阅读(110) 评论(0) 推荐(0)

第五章 作业
摘要:(1)作业是什么? 你可以把作业想象成一个进程的容器,作用是限制一组进程的属性。读懂下面的示例函数,就差不多理解了。void StartRestrictedProcess(){ bool bInJob =FALSE; IsProcessInJob(GetCurrentProcess(),NULL,&bInJob); if(bInJob) { Messagebox(TEXT("进程已经存在作业中"),TEXT(""),MB_OK|MB_ICONINFORMATION); return; } HANDLE hjo... 阅读全文

posted @ 2013-04-05 19:17 WillingCPP 阅读(232) 评论(0) 推荐(0)

第四章 进程
摘要:(1)什么是进程? 进程是程序的一个运行实例,它由两个部分组成一个内核对象一个地址空间,其中包括可执行文件和dll 的代码和数据,还包括动态内存分配,比如堆栈什么的(2)进程实例句柄 加载到进程空间的每一个可执行文件、dll都有一个独一无二的实例句柄HINSTANCE,也就是程序的基地址,使用的 函数是GetModuleHandle,GetModuleHandleEX(3)进程的的命令行由创建进程时传入,进程还包括一个与它关联的环境块,是一个键值的字符串数组.(4)CreateProcess函数(5)终止进程的四种方法 主线程的入口点函数返回(这个是强烈推荐的方式) 进程的一个线程... 阅读全文

posted @ 2013-04-04 23:46 WillingCPP 阅读(126) 评论(0) 推荐(0)

第三章 内核对象
摘要:(1) 何为内核对象:每个内核对象都只是一个内存块,它由操作系统内核分配,并且只能由操作系统内核访问.内存块是数据结构,成员维护着与对象相关的信息.内核对象的生命周期是可能大于创建它的进程,基数机制,如果有进程使用它计数器+1,使用它的进程终止计数器减1,计数器归0,操作系统自动销毁它(类似于com).(2)内核对象的安全性,创建对象的时候有下面这个结构的指针 typedefine _SECURITY_ATTRIBUTES { DWORD nLength; LPVOID lpSecurityDescriptor; BOOL bInheritHandler; }SECUR... 阅读全文

posted @ 2013-04-03 13:28 WillingCPP 阅读(174) 评论(0) 推荐(0)

第二章 字符和字符串函数
摘要:---恢复内容开始---(1)首先了解下字符集 ansi, unicode/utf-16,utf-8,utf-32 1字节 2字节 1-4字节 4字节(2)微软的字符数据类型wchar_t,由编译器开关/Zc:wchar_t 决定开启,默认开启,wchar_t t =L"t"; 微软的开发团队还在 winNT.h中定义了 CHAR WCHAR等数据类型 TCHAR WinNT.h中#ifdef UNICODE // r_winnt#ifndef _TCHAR_DEFINEDtypedef WCHAR TCHAR, *PTCHAR;typedef WCHAR TB... 阅读全文

posted @ 2013-04-02 18:01 WillingCPP 阅读(329) 评论(0) 推荐(0)

第一章 错误处理
摘要:今天开始看windows 核心编程第五版,温故知新,13/4/2,有需要该书电子版的留言(1)常见Windows函数返回值,VOID返回值的函数不可能失败;BOOL失败0,成功非0值;HANDLE 失败NULL或者IVALID_HANDLE_VALUE即-1;PVOID 失败时候为NULL,成功是一块地址;LONG\DWORD 失败通常-1,或0不过这个具体要看说明文档(2)DWORD GetLastError(),返回定义的错误码(WinError.h)。在程序调用失败之后请调用该函数。(3)DWORD WINAPI FormatMessage(__in DWORD dwFlags,__in 阅读全文

posted @ 2013-04-02 15:53 WillingCPP 阅读(117) 评论(0) 推荐(0)

导航