
Windows编程随笔
文章平均质量分 65
昨夜的秋天
这个作者很懒,什么都没留下…
展开
-
关于Unicode编码和ANSI编码(2)
在vs中,右键项目属性,可以选择unicode编码字符集和多字节字符集。关于两种字符集的区别具体可以参考:http://www.cnblogs.com/hongfei/p/3648794.html,关于二者在windows中的兼容性可以参考博文:http://blog.youkuaiyun.com/mylinchi/article/details/53863190。即在vs中,如果选择unicode编码则原创 2017-09-17 11:46:31 · 542 阅读 · 0 评论 -
内存管理策略!(13)
进程的虚拟地址对于32位进程而言,这个地址空间的大小为4GB。而64位进程则可以到达16EB的地址空间。每个进程都有自己专有的地址空间,当进程中的个线程运行时,他们只能访问属于该进程的内存原创 2017-10-10 21:02:03 · 263 阅读 · 0 评论 -
线程调度、优先级和关联性(7)
线程的挂起和恢复 线程内核中各有一个值表示线程的挂起计数。调用CreateProcess或者CreateThread时,系统将创建线程内核对象,并把挂起计数初始化为1。这样便不会给这个线程调度CPU了。 在线程初始化后,CreateProcess或者CreateThread函数将查看是否有CREATE_SUSPENDED标志传入。如果有,则函数返回,新线程立刻挂起。如果没有,函数会将线程的原创 2017-09-26 23:04:12 · 697 阅读 · 0 评论 -
揭秘!为何要用_beginthreadex,而不用CreateThread和_beginthread
由于历史原因,所以C/C++运行库并不是为多线程应用程序而设计的,所以为了保证其中的某些变量和函数的安全,那么必须创建一个数据结构,并使之与使用了C/C++运行库函数的每个线程所关联。当在调用C/C++运行库函数时,那些函数必须读取主调自己的线程的数据块,从而避免印象其他线程。 所以当编写C/C++代码时,请调用_beginthreadex,而不要使用CreateThre...原创 2017-09-19 14:07:30 · 4180 阅读 · 1 评论 -
Windows线程(6)
线程有两个组成部分:1.线程内核对象,操作系统用它管理线程内核对象,还在其中存放入一些线程统计信息。 2.线程栈,用于维护线程执行时所需的所有函数参数和局部变量。进程是不执行任何操作的,它只是线程的一个容器。如果一个进程有两个以上的线程运行,将意味着线程要在共享同一个地址空间。这些线程共享同样的代码、数据,还包括共享内核对象句柄。注意:线程需要的系统...原创 2017-09-19 13:03:27 · 381 阅读 · 0 评论 -
创建线程的内幕(6)
当调用CreateThread函数后,线程内核对象的使用计数初始化为2,暂停计数被初始化为1,退出代码被设为STILL_ACTIVE(0x103),并且对象被设为未触发状态。 一旦创建线程内核对象,系统便分配内存,供线程堆栈使用。此内存是从进程地址空间内分配的,线程没有自己的地址空间。然后系统将CreateThread函数传入的pvParam参数值放入堆栈最上端,紧接着它下方是pfn原创 2017-09-19 13:06:15 · 557 阅读 · 0 评论 -
Windows线程(6)
线程有两个组成部分:1.线程内核对象,操作系统用它管理线程内核对象,还在其中存放入一些线程统计信息。 2.线程栈,用于维护线程执行时所需的所有函数参数和局部变量。 进程是不执行任何操作的,它只是线程的一个容器。如果一个进程有两个以上的线程运行,将意味着线程要在共享同一个地址空间。这些线程共享同样的代原创 2017-09-19 11:00:15 · 425 阅读 · 0 评论 -
windows进程(4)
windows支持GUI和CUI这两个程序,前者是(图形化),后者是(控制台)。GUI的链接器开关是/SUBSYSTEM:CONSOLE;CUI的链接器开关是/SUBSYSTEM:WINDOWS。相应的开关会让操作系统...(P67顶)。 windows应用程序的入口是Int WINAPI _tWinMain()【GUI程序】和int _tmain() 【控制台程序】。注意:操作系统并不原创 2017-09-17 17:59:06 · 451 阅读 · 0 评论 -
内核对象(3)
1、内核对象包括:时间对象,文件对象,I/O完成端口对象。作业对象,进程对象,线程对象,互斥对象,信号量对象等,具体的可以通过网址:http://www.microsoft.com/technet/sysinternals/utilities/winobj.mspx获得内核对象列表查看。内核对象都是调用不同名称的函数来完成的,比如:调用Createthread函数,系统将创建一个线程。每个内核原创 2017-09-17 11:53:01 · 340 阅读 · 0 评论 -
有关动态库总结!(19)
(19)动态库中的_declspec(import)和_declspec(export):在导出的时候,添加_declspec(export),告诉编译其此函数需要导出:_declspec(export) add(int,int);如果添加extern “C”则告诉编译器,用C语言的不改名方式去导出add(int,int)函数extern "C" _declspec(export) a原创 2017-09-17 10:42:09 · 373 阅读 · 0 评论