WIN32

malloc函数的底层实现是Win32API

字符编码

  • 原始的ASCII编码最多能表示127个符号 0-7F(十六进制) 缺点:表示的符号太少了

  • ASCII编码的扩展:GB2312或GB2312-80(中文) 127-255(7F-80) 缺点:不能沟通(可能出现乱码) 相当于一个汉字两个字节

  • UNICODE编码: 这是一个编码方案,说白了就是一张全世界所有文字的编码表,编码范围:0-0x10ffff可以容纳100多万个符号!

    缺点:Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码如何存储。 可能是一个字节,两个字节,三个字节,多了补齐一个字节

  • 如何存储UNICODE:UTF-16/UTF-8是Unicode的实现方式

    (多数中文,少数英文)

  1. UTF-16 编码以16位无符号整数为单位,注意是16位为一个单位,不是一个字符就只有16位,这个要看字符的unicode编码处于什么范围而定,有可能是2个字节,也可能是4个字节现在机器上的unicode编码一般就是指UTF-16 以两个字节为单位进行传输存储,但是传输的话占用空间

  2. UTF-8(平时多英文,在网路中传输)

    Unicode编码(16进制) 对应的 UTF-8字节流(二进制)

    000000-00007F 0xxxxxxx

    000080-0007FF 110xxxxx 10xxxxxx

    000800-00FFFF 1110xxxx 10xxxxxx 10xxxxxx

    010000-10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

    缺点:解析效率低,以一个字节进行解析

    3.BOM(Byte Order Mark)

    UTF-8 EFBB BF

    UTF-16LE(小端存储) FF FE

    UTF-16BE(大端存储) FE FF

进程(PID唯一)

进程给提供程序所需要的资源,如:数据、代码等等。空间上的概念。每个进程都有自己一个虚拟的地址空间(00000000-FFFFFFFF)4GB 前64K的没用,80000000-8FFFFFFF 高2G 给内核用

进程内存空间的地址划分

分区 x86 32bitwindows
空指针赋值区 0x00000000-0x0000FFFF
用户模式区 0x00010000-0x7FFEFFFF
64K禁入区 0x7FFF0000-0x7FFFFFFF
内核 0x80000000-0xFFFFFFFF

进程内的所有所有模块都都遵循一个PE格式,进程就是PE格式文件

进程的创建

1.任何进程都是别的进程创建的:CreateProcess()

2.进程的创建过程

1.映射EXE文件

2.创建内核对象EPROCESS

3.映射系统DLL(ntdll.dll)

4.创建线程内核对象ETHREAD

5.系统启动线程
//DLL注入到目标进程
映射DLL(ntdll.LdrInitializeThunk)
线程开始执行

进程的创建

BOOL CreateProcess(
LPCWSTR pszImageName, //// name of executable module 进程名(完整文件路径) LPCWSTR pszCmdLine, //命令行 LPSECURITY_ATTRIBUTES psaProcess, //不继承进程句柄 SD进程句柄 LPSECURITY_ATTRIBUTES psaThread, //不继承线程句柄 SD线程句柄 BOOL fInheritHandles, //不继承句柄 DWORD fdwCreate, //没用创建标志 LPVOID pvEnvironment, //使用父进程环境变量 LPWSTR pszCurDir, //使用父进程目录作为当前目录,可以自己设置目录 LPSTARTUPINFOW psiStartInfo, //STARTUPINFO结构体详细信息(启动进程相关信息) LPPROCESS_INFORMATION pProcInfo//PROCESS_INFORMATION结构体进程信息(进程ID、线程ID、进程句柄、线程句柄) );

CreateProcess函数的了解就是前2个参数和后2个参数,前两个参数:lpApplicationName、

lpCommandLine,第一个是需要启动的进程文件路径,第二个是命令行参数,如果你启动的进程有参数的可以可以传入。

Win32编程的更多相关文章

  1. Win32编程之静态库编写与使用.动态链接库的编写与使用

    Win32编程之静态库编写与使用.动态链接库的编写与使用 一丶什么是静态库.什么是动态链接库. 静态库其实就是解决模块开发的一种解决方案.在以前.我们写代码的时候.每个人都可以独立写一个项目.但是现在 ...

  2. win32编程简介

    win32编程简介 复习Win32整理下知识. 为什么学习win32? 我们要编写windos程序.都离不开API. 也就是我们所说的win32程序. 所以学好win32是你能不能再windows下编 ...

  3. 【WIN32编程】利用汇编写cs1.6辅助

    这篇文章本来在2018.5.1号就写完发圈子去了,这两天跟朋友在网吧打单击才想起来,就顺便把内容发上去把 作者:admin-神风 用CE找到功能的地址 CS1.6下载地址:https://pan.ba ...

  4. Win32编程API 基础篇 -- 1.入门指南 根据英文教程翻译

    入门指南 本教程是关于什么的 本教程的目的是向你介绍使用win32 API编写程序的基础知识(和通用的写法).使用的语言是C,但大多数C++编译器也能成功编译,事实上,教程中的绝大多数内容都适用于任何 ...

  5. 5-9 c语言之【初识win32编程】

    ---恢复内容开始--- 今天学习了win32的相关知识,首先win32是指是指可以在32位或以上Windows系统中运行的程序,我学习的主要利用c/c++语言编写的win32程序, 首先在win32 ...

  6. 3D游戏引擎一 win32编程

    Windows程序一般都等待用户进行一些操作,然后响应并採取行动. 一般来说.对win32的程序的操作都会转换为系统事件队列中的消息,如按键消息WM_KEYDOWN,WM_MOUSECLICK等传递键 ...

  7. win32编程中消息循环和WndProc()窗口过程函数

    原文地址:https://blog.csdn.net/zxxSsdsd/article/details/45504383 在win32程序的消息循环函数中  while (GetMessage (&a ...

  8. WIN32编程经验总结

    一 窗口和消息 1. 前缀: 2 WPARAM和LPARAM的意义在Windows是一种16位系统时,WndProc的第三个参数被定义为WORD,是一个16位的无符号整数,而第四个参数被定义为一个LO ...

  9. Win32编程中如何处理控制台消息

    这篇文章讨论如何处理所有的控制台消息. 第一步,首先要安装一个事件钩子,也就是说要建立一个回调函数.调用Win32 API,原型如下: BOOL SetConsoleCtrlHandler(PHAND ...

  10. Win32编程API 基础篇 -- 4.消息循环

    消息循环 理解消息循环 为了编写任何即使是最简单的程序,了解windows程序的消息循环和整个消息发送结构是非常有必要的.既然我们已经尝试了一点消息处理的东西,我们应该对整个程序有更深入的理解,如果你 ...

随机推荐

  1. [Pytorch框架]3.2 MNIST数据集手写数字识别

    文章目录 3.2 MNIST数据集手写数字识别 3.2.1 数据集介绍 3.2.2 手写数字识别 3.2 MNIST数据集手写数字识别 import torch import torch.nn as ...

  2. 使用ChatGPT4协助完成读取文件中不同字的数量

    使用ChatGPT4识别:用java读取文件中不同字的个数. 解析:该程序将读取名为"file.txt"的文件,并计算文件中每个不同字的出现次数.它使用一些字符串操作来清理单词,并 ...

  3. flutter系列之:做一个修改组件属性的动画

    目录 简介 flutter中的动画widget AnimatedContainers使用举例 总结 简介 什么是动画呢?动画实际上就是不同的图片连续起来形成的.flutter为我们提供了一个Anima ...

  4. 麻了,一个操作把MySQL主从复制整崩了

    前言 最近公司某项目上反馈mysql主从复制失败,被运维部门记了一次大过,影响到了项目的验收推进,那么究竟是什么原因导致的呢?而主从复制的原理又是什么呢?本文就对排查分析的过程做一个记录. 主从复制原 ...

  5. Docker compose单机编排工具

    Docker compose单机编排工具 目录 Docker compose单机编排工具 docker-compose介绍 Docker Compose使用的三步: docker-compose安装部 ...

  6. 关于python中的OSError报错问题

    Traceback (most recent call last):  File "main.py", line 1, in <module>    from trai ...

  7. 2022-06-16:给定一个数组arr,含有n个数字,都是非负数, 给定一个正数k, 返回所有子序列中,累加和最小的前k个子序列累加和。 假设K不大,怎么算最快? 来自亚马逊。

    2022-06-16:给定一个数组arr,含有n个数字,都是非负数, 给定一个正数k, 返回所有子序列中,累加和最小的前k个子序列累加和. 假设K不大,怎么算最快? 来自亚马逊. 答案2022-06- ...

  8. 2021-09-28:合并区间。以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠

    2021-09-28:合并区间.以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] .请你合并所有重叠的区间,并返回一个不重叠 ...

  9. 【GiraKoo】Visual Studio开启Asan提示“LINK : fatal error LNK1104: cannot open file 'LIBVCASAN.lib'”

    [解决]Visual Studio开启Asan提示"LINK fatal error LNK1104 cannot open file 'LIBVCASAN.lib'" 环境 Vi ...

  10. 【Java】Java代码拷贝文件的速度

    Java代码拷贝文件的速度究竟有多快? 前言 最近学习Java到了流处理,其中有种流叫FileInputStream和FileOutputStream,简单来说,就是操作文件的,老师给我们示范了一个非 ...