函数出错会返回值
来源:互联网 发布:上海linux招聘 编辑:程序博客网 时间:2024/06/05 09:00
一直只知道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的别名而已。
- 函数出错会返回值
- 函数返回出错
- intel processor unicode下strlen函数返回值出错原因
- dialog proc的返回值(TRUE),会引发界面显示出错
- bool返回值的函数如果不return会咋样
- 需要有返回值的函数没定义返回值会怎样
- 父类中不存在无参数构造函数会出错吗?
- wb格式读入文件下使用fread函数会出错
- php递归函数return会出现无法正确返回想要值的情况
- C++函数返回临时变量的引用运行要出错
- gethostname()函数出错,但返回success的问题解决
- 函数返回值 返回引用
- System.getProperty()会返回什么值
- mysql_insert_id 为什么会返回空值
- 返回值会出现随机情况
- 为什么会出错?
- crontab 里 % 会出错
- CMainFrame::OnClose()函数中不能调用wcsncpy()函数,不然会造成内存访问出错
- .Netframework introduction
- C#验证控件的使用方法说明
- 多个存储的写法和应用
- ORACLE自增字段的创建
- Sun Solaris 9 下DNS + apache + tomcat 的配置文档
- 函数出错会返回值
- 关于LNK2001错误的一些总结 (摘录) - David Hu - 网大博客 - powered by phpwind.net
- 漂浮广告的代码汇总
- 这样做服务器的都有
- 用C#生成随机中文汉字验证码的基本原理
- SqlCommandBuilder 批量更新数据库的怪异问题?
- J2ME代码效率测试_for循环和除法
- 纯资源dll库连接的LNK1120错误! - 宁静以致远 - CSDNBlog
- 可以说是全世界最简单的VB动态调用外部函数(附源代码)