函数出错会返回值

一直只知道CreateFile出错时会返回INVALID_HANDLE_VALUE,今天看MSDN才发现原来FindFirstFile出错时也会返回这个破东西,差点儿就又为windows mobile添了一个潜在的bug.特此留念以示警钟长鸣.

调用windows函数时,首先要检验传递给他的各个函数的有效性,然后再设法执行任务~
windows对函数调用错误的返回值:
VOID:运行基本不会出错。但是windows的返回值很少是void;
BOOL:如果函数运行失败,那么返回值为0,在对该函数进行调用是否正确的测试时候,不要判断结果是否为0,不要判断结果是不是Ture。
HANDLE:如果HANDLE的函数运行失败,返回值为NULL,否则返回值为你要调用窗体的HANDLE。有时候返回值为invalid_HANDLE_VALUE,INVALID定义为-1。
PVOID:失败时返回值为NULL,否则为标识数据块的内存地址。
long/DWORD:一般出现错误时返回的数值为LONG或DWORD。函数无法对参数进行计数的时候返回0或-1(根据函数而定)。

windows检测到一个线程调用错误以后,会首先用本地线程存储器保存错误代码和调用的线程,通过用getlasterror函数得到32位错误代码,然后在WinError.h中找到该错误的文本显示
在自己编写被别人调用的.dll文件时,就必须做到能向函数调用者说明它已经运行失败了~在自己编写被别人调用的程序时,只需要设定线程的最后错误代码,让你的函数返回合适的错误数据类型。设定线程最后错误代码函数:VOID SetLastError(DWORD dwErrCode)。可以将任何合适的32位号码传给该函数。只要该号码能够在winerror.h中正确的表达错误即可~也可以自己设置错误代码。
32位代码的域:
位        31~~30            29                   28              27~26               15~0
内容     严重性       Microsoft/客户       保留           设备代码          异常代码
含义     0=成功     0=microsoft公司   必须是0   由micosoft定义   由Micosoft
                                                                           定义的代码        /客户定义
           1=供参考   1=客户定义的代码               

         2=警告 3=错误

typedef HANDLE HLOCAL;

HLOCAL 只是HANDLE的别名而已。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值