zoukankan      html  css  js  c++  java
  • 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 - 工具 - 错误查找
    如下图所示:

  • 相关阅读:
    VMware虚拟机网络桥接模式下无法与主机ping通解决办法
    (一)编写Bootloader程序应该注意的一些问题
    使用TrueSTUDIO和MDK编译器生成.bin文件
    Linux开发板通过串口与电脑上位机通信
    STM32知识点
    仿真器SWD可不接复位引脚的原因
    ARM内核常用缩写含义
    三大范式(转)
    修改主键示例
    ROW_NUMBER用法详解
  • 原文地址:https://www.cnblogs.com/iBinary/p/10758639.html
Copyright © 2011-2022 走看看