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 - 工具 - 错误查找
如下图所示:

原文地址:https://www.cnblogs.com/iBinary/p/10758639.html