Win32编程
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的实现方式
(多数中文,少数英文)
UTF-16 编码以16位无符号整数为单位,注意是16位为一个单位,不是一个字符就只有16位,这个要看字符的unicode编码处于什么范围而定,有可能是2个字节,也可能是4个字节现在机器上的unicode编码一般就是指UTF-16 以两个字节为单位进行传输存储,但是传输的话占用空间
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编程的更多相关文章
- Win32编程之静态库编写与使用.动态链接库的编写与使用
Win32编程之静态库编写与使用.动态链接库的编写与使用 一丶什么是静态库.什么是动态链接库. 静态库其实就是解决模块开发的一种解决方案.在以前.我们写代码的时候.每个人都可以独立写一个项目.但是现在 ...
- win32编程简介
win32编程简介 复习Win32整理下知识. 为什么学习win32? 我们要编写windos程序.都离不开API. 也就是我们所说的win32程序. 所以学好win32是你能不能再windows下编 ...
- 【WIN32编程】利用汇编写cs1.6辅助
这篇文章本来在2018.5.1号就写完发圈子去了,这两天跟朋友在网吧打单击才想起来,就顺便把内容发上去把 作者:admin-神风 用CE找到功能的地址 CS1.6下载地址:https://pan.ba ...
- Win32编程API 基础篇 -- 1.入门指南 根据英文教程翻译
入门指南 本教程是关于什么的 本教程的目的是向你介绍使用win32 API编写程序的基础知识(和通用的写法).使用的语言是C,但大多数C++编译器也能成功编译,事实上,教程中的绝大多数内容都适用于任何 ...
- 5-9 c语言之【初识win32编程】
---恢复内容开始--- 今天学习了win32的相关知识,首先win32是指是指可以在32位或以上Windows系统中运行的程序,我学习的主要利用c/c++语言编写的win32程序, 首先在win32 ...
- 3D游戏引擎一 win32编程
Windows程序一般都等待用户进行一些操作,然后响应并採取行动. 一般来说.对win32的程序的操作都会转换为系统事件队列中的消息,如按键消息WM_KEYDOWN,WM_MOUSECLICK等传递键 ...
- win32编程中消息循环和WndProc()窗口过程函数
原文地址:https://blog.csdn.net/zxxSsdsd/article/details/45504383 在win32程序的消息循环函数中 while (GetMessage (&a ...
- WIN32编程经验总结
一 窗口和消息 1. 前缀: 2 WPARAM和LPARAM的意义在Windows是一种16位系统时,WndProc的第三个参数被定义为WORD,是一个16位的无符号整数,而第四个参数被定义为一个LO ...
- Win32编程中如何处理控制台消息
这篇文章讨论如何处理所有的控制台消息. 第一步,首先要安装一个事件钩子,也就是说要建立一个回调函数.调用Win32 API,原型如下: BOOL SetConsoleCtrlHandler(PHAND ...
- Win32编程API 基础篇 -- 4.消息循环
消息循环 理解消息循环 为了编写任何即使是最简单的程序,了解windows程序的消息循环和整个消息发送结构是非常有必要的.既然我们已经尝试了一点消息处理的东西,我们应该对整个程序有更深入的理解,如果你 ...
随机推荐
- MySQL中binlog备份脚本分享
关于MySQL的二进制日志(binlog),我们都知道二进制日志(binlog)非常重要,尤其当你需要point to point灾难恢复的时侯,所以我们要对其进行备份.关于二进制日志(binlog) ...
- Spring源码系列(补充):详解ApplicationContext
前言 在之前的文章中,我们已经对Spring源码中的一些核心概念进行了分析.由于篇幅限制,我们并没有详细解释ApplicationContext类所继承的父接口及其作用.因此,本文将单独为Applic ...
- ROS机器人雷达跟随
ROS机器人雷达跟随 初始化 打开一个终端输入: ssh clbrobot@ip # 连接小车 roslaunch clbrobot bringup.launch # 激活主板 开启摄像头 开新终端输 ...
- Caused by: java.net.BindException: Address already in use: JVM_Bind(ActiveMq已经启动)
1.本地启动项目开启两个启动类出错. Error creating bean with name 'brokerService' defined in class path resource [com ...
- vue 项目全局修改element-ui的样式/主题颜色
一,安装sass 1 npm i sass sass-loader --save 二,安装element主题生成工具 // 全局安装npm i element-theme --save // 安装主体 ...
- C语言快速入门教程1快速入门 2指令 3条件选择
快速入门 什么是C语言? C是一种编程语言,1972年由Dennis Ritchie在美国AT & T的贝尔实验室开发.C语言变得很流行,因为它很简单,很容易使用.今天经常听到的一个观点是-- ...
- 【Ubuntu】4.挂载/连接VM共享文件夹
第一步 首先需要在虚拟机设置中开启共享文件夹 第二步 修改fstab文件自动挂载 如果您想要自动挂载共享文件夹,可以编辑/etc/fstab文件并添加以下内容:(二选一即可,推荐) sudo gedi ...
- 2020-10-30:给定一个正数数组arr(即数组元素全是正数),找出该数组中,两个元素相减的最大值,其中被减数的下标不小于减数的下标。即求出: maxValue = max{arr[j]-arr[i] and j >= i}?
福哥答案2020-10-30:1.双重遍历法.2.一次遍历法.golang代码如下: package main import "fmt" const INT_MAX = int(^ ...
- 2022-03-01:k8s安装phpmyadmin,yaml如何写?
2022-03-01:k8s安装phpmyadmin,yaml如何写? 答案2022-03-01: yaml如下: apiVersion: apps/v1 kind: Deployment metad ...
- IIC通信协议
1.IIC 通信协议简介 I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的, 由于它引脚少,硬件实现简单,可扩展性强,不需要 USART.CAN 等 ...