Windows核心编程学习笔记

  • 字符串处理
    strcpywcscpy不安全,是因为无法判断缓冲区最大长度的参数,不知道是否会破坏内存

  • 一个进程—》 一个内核对象+一个地址空间

  • 每个对象只是一个内存块

  • 文件地址包括字节偏移量。实际地址=段首地址+字节偏移量,原因是因为,地址占的内存大小太大,而一段的大小无法满足要求,所以需要在通用寄存器中开辟一段内存,用于存放剩余的字节地址,所以其为偏移量。

  • 内核对象的数据结构只能由操作系统来访问。

  • 内核对象中,包含使用计数,每创建一个对象后,使用计数+1,一旦对象的使用计数为0时,则系统销毁对象。

  • 调用API注意权限的设置,即是否拥有查询,或者写入写出权限

  • 进程初始化时候,系统将会为其分配句柄表

  • 句柄表主要包括:1.指向内核对象内存块的指针,访问掩码:即设置权限读取写入,所有权限等等
    **创建对象流程:**初始化一个内存块,内核扫描空的句柄表,进行初始化。

  • CloseHandle进行的操作:1.检查是否该句柄为进程中可以访问的对象,2.系统内核对象中的使用计数降为0,当为0的时候,可以进行销毁操作。

  • 文件映像对象(共享内存实质)

  • 当复制句柄表的记录项时候,系统还是会递增内核对象的使用计数。

  • 内核对象的内容被保存在内核地址空间中,所有进程都拥有这个空间

  • 终端服务命名空间

  • 专有命名空间

进程

  • 进程主要包括两部分:内核对象和地址空间
    地址空间:代码和数据,动态内存分配等等
  • 每个进程都有一个与它关联的环境块
  • 系统信任级别:低、中、高、系统权限
  • 用户界面特权隔离,防止SendMessage或者PostMessage。windows挂钩拦截完整性级别较高的进程的消息

作业

  • Job类似于沙箱一个容器,可以存放多个进程运行,并且可以对进程进行限制等操作
  • CreateThread:系统会创建一个内核对象,这个线程内核对象不是线程本身,而是一个小的数据结构

你可能感兴趣的:(Windows)