![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
windows 核心编程
swartz_lubel
这个作者很懒,什么都没留下…
展开
-
用户模式下的线程同步
在以下两种基本情况下,线程之间需要相互通信1.需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性2.一个线程需要通知其他线程某项任务已经完成。原子访问相关的内容就直接略过了,因为感觉实际使用的过程中并不多。下面直接开始说一下关键段,它在执行之前需要独占对一些共享资源的访问权。这种方式可以让多行代码以原子方式来对资源进行操控。这里的原子方式,指的是代码知道除了当前线程之外,原创 2017-03-07 23:47:40 · 581 阅读 · 0 评论 -
全面介绍Windows内存管理机制及C++内存分配实例(六):堆栈
本文背景:在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用;根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制。本文目的:对Windows内存管理机制了解清楚,有效的利用C++内存函数管理和使用内存。本文内容:本文一共有六节,由于篇幅较多,故按节发表。其他章节请看本人博客的Windows内存管理及转载 2017-06-29 10:57:39 · 349 阅读 · 0 评论 -
IOCP模型与网络编程
IOCP模型与网络编程一。前言: 在老师分配任务(“尝试利用IOCP模型写出服务端和客户端的代码”)给我时,脑子一片空白,并不知道什么是IOCP模型,会不会是像软件设计模式里面的工厂模式,装饰模式之类的那些呢?嘿嘿,不过好像是一个挺好玩的东西,挺好奇是什么东西来的,又是一个新知识啦~于是,开始去寻找一大堆的资料,为这个了解做准备,只是呢,有时还是想去找一本书去系统地学习一下,转载 2017-07-27 21:56:14 · 342 阅读 · 0 评论 -
套接字I/O模型-重叠I/O
重叠模型的基本设计原理是让应用程序使用重叠的数据结构,一次投递一个或多个WinsockI/O请求。针对那些提交的请求,在它们完成之后,应用程序可为它们提供服务。模型的总体设计以Windows重叠I/O机制为基础。这个机制可通过ReadFile和WriteFile两个函数,在设备上执行I/O操作。要想在一个套接字上使用重叠I/O模型,首先必须创建一个设置了重叠标志的套接字。主要有两种方法来管转载 2017-07-27 22:10:05 · 571 阅读 · 0 评论 -
C++Windows下CONTAINING_RECORD宏的用法和详解
[cpp] view plain copyprint?#include #include int main() { struct ABCD { int a; int b; int c; int d; }; //CONTAINING_RECORD宏转载 2017-07-28 21:26:53 · 999 阅读 · 0 评论 -
如何在32位程序中突破地址空间限制使用超过4G的内存
众所周知,所有的32位应用程序都有4GB的进程地址空间,因为32位地址最多可以映射4GB的内存(对于虚拟地址空间概念不太熟悉的朋友建议去看一下《Windows核心编程》这本书)。对于Microsoft Windows操作系统,应用程序可以访问2GB的进程地址空间(32位Linux可以访问3GB地址空间),这就是称为用户模式的虚拟地址空间。这2GB的用户模式虚拟地址空间位于4GB地址空间的低一半,而转载 2017-08-22 11:02:54 · 5106 阅读 · 0 评论 -
VS2013在Release情况下使用vector有时候会崩溃的一个可能原因
转载请注明出处:http://www.cnblogs.com/darkknightzh/p/5016352.html 参考网址:http://www.cnblogs.com/BryZ/archive/2011/06/21/2085865.htmlhttp://www.cppblog.com/super-/archive/2009/06/18/88006.as转载 2017-09-09 14:31:22 · 1586 阅读 · 0 评论 -
推动Windows的限制:句柄
这是我推出Windows 系列的第五篇文章,在这篇文章中 ,我探索了Windows管理的资源的数量和大小上限,例如物理内存,虚拟内存,进程和线程。这是整个推动限制系列的索引。虽然他们可以独立存在,但他们认为你是按顺序阅读的。推动Windows的限制:物理内存推动Windows的限制:虚拟内存推动Windows的限制:分页和非分页池推动Windows的限制:进程和线程推动Windows的限制:句...翻译 2018-01-31 16:56:13 · 2119 阅读 · 0 评论 -
推动Windows的限制:物理内存
这是我将在接下来的几个月中编写的第一篇博客文章,名为“推动Windows的限制”,介绍Windows和应用程序如何使用特定资源,资源的许可和实现派生限制,如何衡量资源用法以及如何诊断泄漏。为了能够有效地管理Windows系统,您需要了解Windows如何管理物理资源(如CPU和内存)以及逻辑资源(如虚拟内存,句柄和窗口管理器对象)。了解这些资源的限制以及如何跟踪其使用情况,可以将资源使用情况归因于...翻译 2018-01-31 21:26:11 · 2205 阅读 · 0 评论 -
推动Windows的限制:虚拟内存
在我推出Windows的限制后,我讨论了物理内存限制,包括由许可,实现和驱动程序兼容性施加的限制。这是整个推动限制系列的索引。虽然他们可以独立存在,但他们认为你是按顺序阅读的。推动Windows的限制:物理内存推动Windows的限制:虚拟内存推动Windows的限制:分页和非分页池推动Windows的限制:进程和线程推动Windows的限制:把手推动Windows的限制:USER和GDI对象 -...翻译 2018-01-31 21:27:03 · 2188 阅读 · 0 评论 -
推动Windows的限制:USER和GDI对象 - 第2部分
上次,我介绍了限制以及如何度量两个关键窗口管理器资源USER对象之一的使用情况。这一次,我将介绍其他关键资源,GDI对象。与往常一样,我建议您在此之前阅读以前的帖子,因为与USER和GDI资源相关的一些限制是基于我所介绍的限制。这里是我的另一个推动Windows的限制职位的完整索引:推动Windows的限制:物理内存推动Windows的限制:虚拟内存推动Windows的限制:分页和非分页池推动Wi...翻译 2018-01-31 21:30:14 · 516 阅读 · 0 评论 -
推动Windows的限制:USER和GDI对象 - 第1部分
到目前为止,在“推动Windows系列的极限”中,我主要关注由Windows操作系统内核管理的资源,包括物理和虚拟内存,分页和非分页池,进程,线程和句柄。然而,在本文和下一篇文章中,我将探索Windows窗口管理器USER和GDI对象管理的两个资源,这些资源表示窗口元素(如窗口和菜单)和图形构造(如钢笔,画笔和绘图表面)。就像我在之前的文章中讨论的其他资源一样,耗尽各种USER和GDI资源限制可能...翻译 2018-01-31 21:29:31 · 1281 阅读 · 0 评论 -
推动Windows的限制:进程和线程
这是我推行Windows系列的第四篇文章,探讨Windows基础资源的界限。这一次,我将讨论Windows上支持的最大线程数和进程数限制。我将简要介绍一下线程和进程之间的区别,调查线程限制,然后调查进程限制。我首先介绍了线程的限制,因为每个活动进程至少有一个线程(一个进程已经终止,但由另一个进程所拥有的句柄保持引用将不会有),所以进程的限制直接受上限限制线程。与某些UNIX变体不同,Windows...翻译 2018-01-31 21:28:28 · 1409 阅读 · 0 评论 -
推动Windows的限制:分页和非分页池
在之前的“极限”帖子中,我描述了两个最基本的系统资源,即物理内存和虚拟内存。这一次我将描述两个基本的内核资源,分页池和非分页池,它们是基于这些资源的,并且直接负责包括最大进程数,同步对象和句柄在内的许多其他系统资源限制。这是整个推动限制系列的索引。虽然他们可以独立存在,但他们认为你是按顺序阅读的。推动Windows的限制:物理内存推动Windows的限制:虚拟内存推动Windows的限制:分页和非...翻译 2018-01-31 21:27:47 · 6882 阅读 · 0 评论 -
全面介绍Windows内存管理机制及C++内存分配实例(五):堆
本文背景:在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用;根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制。本文目的:对Windows内存管理机制了解清楚,有效的利用C++内存函数管理和使用内存。本文内容:本文一共有六节,由于篇幅较多,故按节发表。其他章节请看本人博客的Windows内存管理及转载 2017-06-29 10:57:07 · 570 阅读 · 0 评论 -
全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
本文背景:在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用;根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制。本文目的:对Windows内存管理机制了解清楚,有效的利用C++内存函数管理和使用内存。本文内容:本文一共有六节,由于篇幅较多,故按节发表。其他章节请看本人博客的Windows内存管理及转载 2017-06-29 10:56:30 · 325 阅读 · 0 评论 -
错误处理
错误处理的话,一般是通过返回值去判断的!当windows函数检测到错误的时候,它会使用一种叫做"线程本地存储区"的机制将相应的错误代码与主调线程关联到一起!这种机制使不同的线程能够独立运行,不会出现互相干扰对方的错误代码的情况!我们一般使用GetLastError()函数:DWORD GetLastError();此函数的作用很简单,就是返回由上一个函数调用设置的线程的32位的错误原创 2017-03-04 22:26:05 · 333 阅读 · 0 评论 -
字符和字符串处理
C语言的char的话是一个8bit的ANIS字符,unicode的话主要有UTF-8,UTF-16和UTF-32。//An 8bit characterchar c = 'A';vs的编译器的话定义了一个内建的数据类型wchar_t ,它表示的是一个16bit的unicode。//A 16bit characterwchar_t c = L'a';字符串之前的大写字母L通知原创 2017-03-04 23:39:40 · 545 阅读 · 0 评论 -
用内核对象进行线程同步
本章讨论的是如何使用内核对象来对线程进行同步,与用户模式下的同步机制相比,内核对象的用途要广泛的多。实际上,内核对象唯一的缺点就是他们的性能。当我们调用本章任何一个新函数时,调用线程必须从用户模式切换到内核模式,这种切换是比较耗时的。对于线程同步来说,这些内核对象中的每一种要么处于触发状态,要么处于未触发状态。微软为每种对象创建了一些规则,规定如何在这两种状态之间进行转换。例如:进程内核对象在创建原创 2017-03-08 22:55:54 · 455 阅读 · 0 评论 -
内核对象和句柄
内核对象的数据结构只能由操作系统的内核访问,所以应用程序不能再内存中定位这些数据结构并直接修改其内容。可以利用windows的api函数进行操作。当调用一个会创建内核对象的函数后,会返回一个句柄,它标识了所创建的对象。这些句柄值是与进程相关的,如果传递给其他进程,可能会失败,因为每个进程会有一个句柄表,所以使用的时候可能是完全不用的内核对象。内核对象的所有者是操作系统,当进程创建一个内原创 2017-03-05 22:50:23 · 1482 阅读 · 0 评论 -
同步设备IO与异步设备IO
所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行。异步IO是指:线程发起IO请求后并不会挂起而是继续执行。IO完毕后会得到设备的通知。而IO完成端口就是实现这种通知的很好的一种方式。CreateFile当然可以创建和打开磁盘文件。但是不要被它的名字所迷惑。它同样可以打开其他设备。根据传入参数的不同可以让CreateFile打开不同的设备。HANDLE CreateFil原创 2017-03-09 21:49:22 · 557 阅读 · 0 评论 -
进程
一般讲进程定义成一个正在运行的程序的一个实例,它有以下的两部分组成:1.一个内核对象,操作系统用它来管理进程,内核对象也是系统保存进程统计信息的地方2.一个地址空间,其中包括所有的可执行文件或dll模块的代码和数据,此外他包包括动态内存分配,比如线程堆栈和堆的分配。windows支持两种类型的应用程序,GUI程序和CUI程序。前者是图形用户界面,后者是控制台用户界面。用vs来创建一原创 2017-03-06 23:21:36 · 312 阅读 · 0 评论 -
作业
windows提供一个作业(job)内核对象,它允许我们将进程组合在一起并插件一个沙箱来限制进程能够做什么,最好将作业对象想象成一个进程容器。BOOL bInJob = FALSE;IsProcessInJob(GetCurrentProcess(), NULL, &bInJob);if (bInJob) { MessageBox(NULL, TEXT("Process already原创 2017-03-06 23:42:17 · 544 阅读 · 0 评论 -
学好Windows编程要看的书籍
本文是接着前面的学好C++要阅读的书籍而写的,如果想了解C++的学习的话请先看学好C++要阅读的书籍:http://blog.csdn.net/a809146548/article/details/42972535,毕竟本文介绍的书籍都要有一定的C/C++基础,下面来看本文介绍的书籍吧!1、《Windows程序设计(第5版 珍藏版)》:这是很经典的一本介绍Win32 API编程的书了,转载 2017-03-10 18:24:15 · 12798 阅读 · 1 评论 -
线程基础
线程有两个部分组成:1.一个是线程的内核对象,操作系统用它来管理线程。2.一个线程栈,用于维护线程执行时所需的所有函数参数和局部变量。假如一个进程上下文中有两个以上的线程运行,这些线程将共享同一个地址空间。这些线程可以共享同样的代码,可以处理相同的数据,此外这些线程号共享内核对象句柄,因为句柄表示针对每个进程的,而不是针对每一个线程。HANDLE CreateThread(LPS原创 2017-03-07 22:23:28 · 297 阅读 · 0 评论 -
线程调度优先级和关联性
每个现场都有一个上下文。后者保存在线程的内核对象中。这上下文反应了线程上一次执行时CPU寄存器的状态,大约每隔20ms(GetSystemTimeAdjustment函数第二个参数的返回值),windows都会查看所有当前存在的线程内核对象,在这些对象中,只有一些被认为是可以调度的,windows在可调度的线程内核对象中选择一个,并将上次保存在线程上下文中的值载入CPU寄存器,这一操作被称为上下文原创 2017-03-07 23:00:56 · 445 阅读 · 0 评论 -
全面介绍Windows内存管理机制及C++内存分配实例(一):进程空间
本文背景:在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用;根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制。本文目的:对Windows内存管理机制了解清楚,有效的利用C++内存函数管理和使用内存。本文内容:本文一共有六节,由于篇幅较多,故按节发表。其他章节请看本人博客的Windows内存管理及转载 2017-06-29 10:54:08 · 701 阅读 · 0 评论 -
全面介绍Windows内存管理机制及C++内存分配实例(二):内存状态查询
本文背景:在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用;根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制。本文目的:对Windows内存管理机制了解清楚,有效的利用C++内存函数管理和使用内存。本文内容:本文一共有六节,由于篇幅较多,故按节发表。其他章节请看本人博客的Windows内存管理及转载 2017-06-29 10:55:13 · 516 阅读 · 0 评论 -
全面介绍Windows内存管理机制及C++内存分配实例(三):虚拟内存
本文背景:在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用;根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制。本文目的:对Windows内存管理机制了解清楚,有效的利用C++内存函数管理和使用内存。本文内容:本文一共有六节,由于篇幅较多,故按节发表。其他章节请看本人博客的Windows内存管理及转载 2017-06-29 10:55:51 · 1926 阅读 · 0 评论 -
windows 获取系统CPU和进程CPU 内存等信息
#ifndef __GETSYSTEM_INFO_H#define __GETSYSTEM_INFO_H#include "psapi.h"#include "tlhelp32.h"typedef struct PROCESS_INFO_T{ int memUsage; //内存使用率 int threadNum; //线程数 int TotalMemSize...原创 2018-01-30 09:57:09 · 1456 阅读 · 0 评论