- 博客(4)
- 收藏
- 关注
原创 32位windows 进程和线程基础
进程虚拟地址空间 用户所使用的栈、堆内存空间都是在用户空间去分配 文件系统的缓存、driver使用的缓存都是存在和心态地址空间 用户态虚拟地址空间状态 free:该段地址空间可自由分配 reserving:该段地址空间被预订,但是未被映射到物理地址中,无法被分配 committed:该段地址空间被映射到物理地址空间了 进程使用的内存的类型 private bytes:进程的虚拟地址空间中已被分配的内存,不包括和其他进程共享的内存(如共享的动态链接库文件,kernel32.dll、user32.dl
2022-03-28 15:05:13 374
原创 windows内核基础
windows分层模型 硬件抽象层屏蔽了硬件实现功能的细节。 IRP为内核层重要的数据结构。 物理地址和虚拟地址 x64的cpu仅仅支持64位地址中的前48位。其中若虚拟地址为内核,则前16位为ffff;若虚拟地址为用户模式,则前16位为0000。 用户能看到的所有地址都是虚拟地址,CPU当中的寄存器CR3,保存了页表基地址的物理地址 虚拟地址转换物理地址 Windows Token 访问令牌(Access Token)是WIndows操作系统用于描述进程、线程安全上下文的对象。不同用户登录OS后
2022-03-26 15:29:12 3921 1
原创 visual studio基础
程序解释过程 预处理(宏处理):把头文件和源文件合并 编译:把源码编译为汇编语言,每一个.cpp单独编译处理 汇编:把汇编语言解释为二进制机器语言 (cpp转为.obj) 链接:将.obj与lib文件合并,形成.exe或者.dll文件 windows程序中还包括了资源文件.rc(各种UI组件) visual studio项目文件解析 NOTE:避免使用vs最新版本作为开发IDE,容易出bug。 项目文件: .vcxproj:定义了项目的配置信息 .vcxproj.filters:定义了项目的目录 .
2022-03-25 21:58:01 399
原创 c++常用转换函数
宽字符转UTF-8 std::string UnicodeToUtf8(const LPCWSTR unicode) { int len; len = WideCharToMultiByte(CP_UTF8, 0, unicode, -1, NULL, 0, NULL, NULL); char* szUtf8 = (char*)malloc(len + 1); memset(szUtf8, 0, len + 1); WideCharToMultiByte(CP_UTF
2021-11-16 08:58:09 341
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人