Windows核心编程第一章.错误处理
Windows核心编程第一章,错误处理.
一丶错误处理
1.核心编程学习总结
不管是做逆向,开始做开发.在Windows下.你都需要看一下核心编程这本书.这本书确实写得很好.所以自己在学习这本书的同时,也把自己所学的知识进行 总结,以及巩固.
2.常见的Windows函数返回类型总结
数据类型 作用
VOID 如果是Void表示函数不可能失败.极少数windows函数会返回void
BOOL 表示这个函数会有失败情况.0失败.否则就是非0.但是一般都会使用TRUE FALSE来判断.
HANDLE Windows中的句柄类型.返回值同创为NULL.否则的话HANDLE将标识一个可以操纵的对象.有些函数会返回INVALID_HANDLE_VALUE来表示
具体要查看MSDN文档看看对函数的返回值要求.
PVOID 如果失败返回NULL,否则将会是一个void *的地址.
LONG/DWORD 这种类型也很多.返回值通常是一个LONG(long)类型或者DWORD(unsigned int)类型的值.如果返回值是这两个.那么要仔细检查出现的错误.
3.错误代码获取设置格式化输出
错误代码获取是一个Windows提供的API函数.
函数名称/圆形 作用
DWORD WINAPI GetLastError(void)
返回值: 返回调用线程之后的错误代码调用成功则返回ERROR_SUCESS
void WINAPI SetLastError(
_In_ DWORD dwErrCode
);
传入一个DWORD错误值进行设置
DWORD FormatMessage(
DWORD dwFlags,
LPCVOID lpSource,
DWORD dwMessageId,
DWORD dwLanguageId, LPTSTR lpBuffer, DWORD nSize, va_list *Arguments );
根据GetlastError获取的错误代码值.进行格式化输出.自动匹配错误码代表的意思.
4.调试小技巧
如果你使用VC++或者VS编译器,你可以在监视窗口输入 @err,hr 这个命令.那么程序在调试的时候会自动获取API的错误代码.
如果调用的API没有错误,就是返回0 也就是说ERROR_SUCESS 否则则就会返回错误代码.这个错误代码可以用工具查看.
当然,你可以查询MSDN. MSDN上有介绍GetLastError配合ForMatMessage来打印错误代码.
5.错误代码查找工具的使用
VS编译器还提供了了错误代码查看工具.我们可以输入那么就会显示错误代码代表的什么意思.
VS2013 - 工具 - 错误查找
如下图所示:

Windows核心编程第一章.错误处理的更多相关文章
- windows核心编程-第一章 对程序错误的处理
第一章-对程序错误的处理 在开始介绍Microsoft Windows 的特性之前,必须首先了解 Wi n d o w s的各个函数是如何进行错误处理的. 当调用一个Wi n d o w s函数时,它 ...
- windows核心编程---第一章 谈谈windows中的错误处理机制
我们写的函数会用返回值表示程序执行的正确与否,使用void,就意味着程序一定不会出错.Bool类型标识true时为真,false时为假.其他类型根据需要可以定义成不同意义. Win ...
- windows核心编程---第二章 字符和字符串处理
使用vc编程时项目-->属性-->常规栏下我们可以设置项目字符集合,它可以是ANSI(多字节)字符集,也可以是unicode字符集.一般情况下说Unicode都是指UTF-16.也 ...
- windows核心编程---第九章 同步设备IO与异步设备IO之同步IO
同步设备IO 所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行. 异步IO是指:线程发起IO请求后并不会挂起而是继续执行.IO完毕后会得到设备的通知.而IO完成端口就是实现这种通知的很 ...
- Windows核心编程第二章,字符串的表示以及宽窄字符的转换
目录 Windows核心编程,字符串的表示以及宽窄字符的转换 1.字符集 1.1.双字节字符集DBCS 1.2 Unicode字符集 1.3 UTF-8编码 1.4 UTF - 32编码. 1.5 U ...
- Windows核心编程 第九章 线程与内核对象的同步(下)
9.4 等待定时器内核对象 等待定时器是在某个时间或按规定的间隔时间发出自己的信号通知的内核对象.它们通常用来在某个时间执行某个操作. 若要创建等待定时器,只需要调用C r e a t e Wa i ...
- windows核心编程-第二章 Unicode
第2章U n i c o d e 随着M i c r o s o f t公司的Wi n d o w s操作系统在全世界日益广泛的流行,对于软件开发人员来说,将目标瞄准国际上的各个不同市场,已经成为一个 ...
- Windows核心编程 第九章 线程与内核对象的同步(上)
第9章 线程与内核对象的同步 上一章介绍了如何使用允许线程保留在用户方式中的机制来实现线程同步的方法.用户方式同步的优点是它的同步速度非常快.如果强调线程的运行速度,那么首先应该确定用户方式的线程同步 ...
- Windows核心编程笔记之错误处理
0x01 GetLastError() 函数用于获取上一个操作的错误代码 #include <Windows.h> #include <iostream> using name ...
随机推荐
- Effective C++ 读书笔记(1-7)
作者 Scott Meyers 翻译作者 侯捷 C++ 神牛 台湾人 术语: 1.explicit C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生.声明 ...
- python捕获异常、处理异常
https://blog.csdn.net/jmilk/article/details/50047457
- keystonejs开发中解决bug--版本要对应
今天要调试bug,先说明一下背景!有需求要修改keystonejs的后台管理页面,然后是看官方文档知道后台管理也是react+redux.然后为了加强后台管理页的功能(如汉化),然后将keystone ...
- SpringMVC中Json数据格式转换
1 @RequestBody 作用: @RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为 ...
- @Controller和@RestController之间的区别
1. Controller, RestController的共同点 都是用来表示Spring某个类的是否可以接收HTTP请求 2. Controller, RestController的不同点 @Co ...
- RestTemplate的设置及使用
概述 RestTemplate是spring内置的http请求封装,在使用spring的情况下,http请求直接使用RestTemplate是不错的选择. Rest服务端 使用RestTemplate ...
- JavaScript设计模式 Item 2 -- 接口的实现
1.接口概述 1.什么是接口? 接口是提供了一种用以说明一个对象应该具有哪些方法的手段.尽管它可以表明这些方法的语义,但它并不规定这些方法应该如何实现. 2. 接口之利 促进代码的重用. 接口可以告诉 ...
- 巩固java(三)---java修饰符
正文: 下面的表格列出了java中修饰符的一些信息: 修饰符名称 类型 类 变量 方法 abstract 非访问控制符 抽象类 -- 抽象方法 final ...
- Javascript 进阶 面向对象编程 继承的一个例子
Javascript的难点就是面向对象编程,上一篇介绍了Javascript的两种继承方式:Javascript 进阶 继承,这篇使用一个例子来展示js如何面向对象编程,以及如何基于类实现继承. 1. ...
- pymongo 学习总结
1.简介 MongoDB是一种强大.灵活.追求性能.易扩展的数据存储方式.是面向文档的数据库,不是关系型数据库,是NoSQL(not only SQL)的一种.所谓的面向文档,就是将原来关系型数据库中 ...