编程语言
首页 > 编程语言> > Win32编程

Win32编程

作者:互联网

WIN32
malloc函数的底层实现是Win32API

字符编码

  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, //对象名称 :完整的路径加对象名字
LPCWSTR pszCmdLine, //命令行
LPSECURITY_ATTRIBUTES psaProcess, //不继承进程句柄
LPSECURITY_ATTRIBUTES psaThread, //不继承线程句柄
BOOL fInheritHandles, //不继承句柄
DWORD fdwCreate, //没用创建标志
LPVOID pvEnvironment, //使用父进程环境变量
LPWSTR pszCurDir, //使用父进程目录作为当前目录,可以自己设置目录
LPSTARTUPINFOW psiStartInfo, //STARTUPINFO结构体详细信息
LPPROCESS_INFORMATION pProcInfo//PROCESS_INFORMATION结构体进程信息
);

标签:编码,UTF,字节,16,编程,Win32,10xxxxxx,进程
来源: https://www.cnblogs.com/doubleconquer/p/16089521.html