Windows核心编程学习笔记
字符串处理
strcpy
和wcscpy
不安全,是因为无法判断缓冲区最大长度的参数,不知道是否会破坏内存一个进程—》 一个内核对象+一个地址空间
每个对象只是一个内存块
文件地址包括字节偏移量。实际地址=段首地址+字节偏移量,原因是因为,地址占的内存大小太大,而一段的大小无法满足要求,所以需要在通用寄存器中开辟一段内存,用于存放剩余的字节地址,所以其为偏移量。
内核对象的数据结构只能由操作系统来访问。
内核对象中,包含使用计数,每创建一个对象后,使用计数+1,一旦对象的使用计数为0时,则系统销毁对象。
调用API注意权限的设置,即是否拥有查询,或者写入写出权限
进程初始化时候,系统将会为其分配句柄表
句柄表主要包括:1.指向内核对象内存块的指针,访问掩码:即设置权限读取写入,所有权限等等
**创建对象流程:**初始化一个内存块,内核扫描空的句柄表,进行初始化。CloseHandle进行的操作:1.检查是否该句柄为进程中可以访问的对象,2.系统内核对象中的使用计数降为0,当为0的时候,可以进行销毁操作。
文件映像对象(共享内存实质)
当复制句柄表的记录项时候,系统还是会递增内核对象的使用计数。
内核对象的内容被保存在内核地址空间中,所有进程都拥有这个空间
终端服务命名空间
专有命名空间
进程
- 进程主要包括两部分:内核对象和地址空间
地址空间:代码和数据,动态内存分配等等 - 每个进程都有一个与它关联的环境块
- 系统信任级别:低、中、高、系统权限
- 用户界面特权隔离,防止SendMessage或者PostMessage。windows挂钩拦截完整性级别较高的进程的消息
作业
- Job类似于沙箱一个容器,可以存放多个进程运行,并且可以对进程进行限制等操作
- CreateThread:系统会创建一个内核对象,这个线程内核对象不是线程本身,而是一个小的数据结构
Windows核心编程学习笔记相关推荐
- 转 windows核心编程 学习笔记 目录
windows核心编程--SEH(结构异常处理) SEH 的工作原理. Windows 程序设计中最重要的理念就是消息传递,事件驱动.当GUI应用程序触发一个消息时,系统将把该消息放入 ...
- windows核心编程学习笔记(六)动态链接库
动态链接库有很多优点: •扩展了应用程序的特性 •可以用许多种编程语言来编写 •简化了软件项目的管理 •有助于节省内存 •有助于资源的共享 •有助于应用程序的本地化 •有助于解决平台差异 •可以用于一 ...
- windows核心编程学习笔记(八)结构化异常处理(Structured Exception Handling)
首先要要知道,结构化异常处理(SEH)和C++提供的异常处理不相同. 一.Termination HandlersTermination Handlers使用很简单.在想使用SEH处理的地方使用 __ ...
- 窗口消息——Windows核心编程学习手札之二十六
窗口消息 --Windows核心编程学习手札之二十六 Windows允许一个进程至多建立10000个不同类型的用户对象(user object):图符.光标.窗口类.菜单.加速键表等,当一个线程调用一 ...
- 未处理异常和C++异常——Windows核心编程学习手札之二十五
未处理异常和C++异常 --Windows核心编程学习手札之二十五 当一个异常过滤器返回EXCEPTION_CONTINUE_SEARCH标识符时是告诉系统继续上溯调用树,寻找另外的异常过滤器,但当每 ...
- 异常处理程序和软件异常——Windows核心编程学习手札之二十四
异常处理程序和软件异常 --Windows核心编程学习手札之二十四 CPU负责捕捉无效内存访问和用0除一个数值这种错误,并相应引发一个异常作为对错误的反应,CPU引发的异常称为硬件异常(hardwar ...
- 结束处理程序——Windows核心编程学习手札之二十三
结束处理程序 --Windows核心编程学习手札之二十三 使用SEH可以只关注程序要完成任务,而运行中发生的错误,系统将会发现并通知.Windows引入SHE是为了便于操作系统的开发,使用SHE所造成 ...
- 插入DLL和挂接API——Windows核心编程学习手札之二十二
插入DLL和挂接API --Windows核心编程学习手札之二十二 如下情况,可能要打破进程的界限,访问另一个进程的地址空间: 1)为另一个进程创建的窗口建立子类时: 2)需要调试帮助时,如需要确定另 ...
- 线程本地存储器——Windows核心编程学习手札之二十一
线程本地存储器 --Windows核心编程学习手札之二十一 C/C++运行期库使用线程本地存储器,运行期库是在多线程应用程序出现前设计的,因此运行期库里的大多数函数是用于单线程应用程序的.函数strt ...
最新文章
- 中国治理蝗灾是生物防治的成就,根本不是靠鸡靠鸭靠吃货换来的!
- linux必会命令 - 后台运行程序 - nohup、
- Android 4.1最终版SDK和ADT Plugin全线发布
- Ubuntu 16.04 LTS apt-get connect refuse Unable to connect to 127.0.0.1:1080
- 一文说通C#中的异步迭代器
- [转]Java7中的ForkJoin并发框架初探(上)——需求背景和设计原理
- Java的一些学习心得
- Programming .Net Component - Chapter 1. introducting component-oriented programming
- c语言怎么实现模块化vc,原创:在C语言中大概实现VC++中的CArray部分功能的两种方法...
- html5+css3第一次作业_老娘我,饿死也不要陪孩子做手工作业,高考陪考真香!...
- 【ubuntu】更换下载源
- 贺利坚老师汇编课程29笔记:在代码段使用栈将程序定义的数据逆序
- 计算机网络自学指南,简直太全了!
- 牛逼!女生怒考 692 分,想当程序员,卷了卷了。。
- ubuntu经常断网、掉线、上不去网的原因
- 多线程&高并发(全网最新:面试题 + 导图 + 核心学习笔记)面试手稳心不慌,轻松拿下 offer,秋招跳槽必不可少的底层能力
- 周金涛:繁荣的起点并非沸腾的年代,或将在2020年出现首次证券市场大繁荣
- 无线路由器的DNS服务器怎么设置,无线路由器dns服务器怎么设置
- “加密上海·喜玛拉雅Web3.0数字艺术大展”落幕,AIGC和数字艺术衍生品是最大赢家?...
- PDF文档电子公章的初试
热门文章
- springboot 插入返回id_Spring Boot实现分布式微服务开发实战系列(七)
- cdr非法软件 您的产品已被禁用怎么回事_多层刺网非法捕鱼 顺庆男子被取保候审...
- leetcode题解46-全排列
- ORA-03113: end-of-file on communication channel
- 十五的学习日记20160926-你不知道的JS笔记/
- 转载:SQL server2005 里面没有management studio!下载SQL开发版本
- [转载]如何做一个出色的程序员
- 原来 JS 也支持跟 Lua 语意一样的内嵌函数的闭包概念
- 使用XmlPullParser
- php 点击下拉显示内容,php+ajax实现仿百度查询下拉内容功能示例