专栏首页逆向技术Windows核心编程第一章.错误处理

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 优秀程序员共有的7种优秀编程习惯

    编程是一个很有趣、容易的事情,但是编写好的程序可能是一项艰巨的任务。在大多数情况下,我们发现自己绞尽脑汁,试图了解我们撰写的意大利面条代码,或者是因为新添加的次...

    奋斗蒙
  • 搭建vscode golang开发环境

    由于网络限制,go的很多工具都无法直接下载,因此在github上自定义一个gopath的仓,将需要的工具仓都加入进来:

    DifficultWork
  • Facebook开源AI硬件,一口气推出“三件套”

    为了应对大量的算力要求,这家位于Menlo Park的技术巨头,硬是从通用硬件转移到了专用加速器。这些加速器的作用,是保证其数据中心的性能,功耗和效率,特别是在...

    新智元
  • 前台商城系统及后台管理系统

    mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展...

    程序源代码
  • 滴滴梁李印:滴滴是如何从零构建中式实时计算平台的?

    作者 | 梁李印,滴滴出行大数据架构部技术专家。梁李印将于5月18-19日在上海A2M峰会分享《滴滴实时计算平台架构与实践》话题,更多峰会议题请至A2M峰会官网...

    AI研习社
  • Bosque语言问世,超越结构化编程,开启第二个开发黄金年代

    当地时间 4 月 18 日,微软正式发布了一种名为 Bosque 的全新编程语言。微软方面介绍说:Bosque 受 TypeScript 启发,是一种超越了结构...

    新智元
  • 与程序员打交道,千万别“嘴欠”说这 11 句话

    身为一名非开发人员,如果想要与自己的开发团队建立良好的沟通关系,那么就需要知道哪些东西是开发人员喜欢听的,而哪些是开发人员不喜欢听的。例如,开发人员喜欢听到你在...

    奋斗蒙
  • 碾压 Python!为什么 Julia 速度这么快?

    来源:AI前线(ID:ai-front) 作者: UCI Data Science Initiative

    新智元
  • Github项目推荐 | 微软最新开源Python静态类型检查器Pyright

    创建Pyright是为了填补像 mypy 这样的现有Python类型检查器的漏洞。

    AI研习社
  • 干货 | PyCharm+Docker:打造最舒适的深度学习炼丹炉

    AI 科技评论按:本文作者是四川大学数据智能实验室在读硕士刘震,这是他在知乎上发表的一篇文章,雷锋网转载。

    AI科技评论

扫码关注云+社区

领取腾讯云代金券