Windows函数错误处理
来源:互联网 发布:linux mplayer 缩小 编辑:程序博客网 时间:2024/06/09 20:06
当调用一个Windows函数时,它首先要检验传递给它的各个参数的有效性,然后再设法执行任务.如果传递一个无效参数,或者由于某种原因无法执行这项操作,那么操作系统就会返回一个值,指明该函数在某种程度上运行失败了。
Windows函数常用的返回值类型:
void
BOOL:0,非0,TURE,FALSE
HANDLE:HANDLE,NULL,INVALID_HANDLE_VALID)
PVOID:NULL,PVOID
LONG/DWORD:具体函数而定
...
Microsoft编译了一个所有可能的错误代码列表,并且为每个错误代码分配了一个32位的号码. WinError.h头文件(大约2万多行)包含了Micorsoft定义的错误代码列表.
当一个Windows函数检测到一个错误时,它会使用线程本地存储(thread-local storage)机制,将相应的错误代码号码与调用的线程关联起来.这将使线程能够互相独立的运行,而不会影响各自的错误代码.
当函数返回时,它的返回值就能指明是否有错误发生,若有且要确定是什么错误,就需要调用DWORD GetLastError()函数,它返回线程的32位错误代码.Visual Studio有一个Error Lookup程序可用将错误代码的号码换成相应文本描述.Windows还提供了一个函数FormatMessage可以将错误代码转换成它的文本描述.
DWORD FormatMessage(
DWORD dwFlags, // source and processing options
LPCVOID lpSource, // message source
DWORD dwMessageId, // message identifier
DWORD dwLanguageId, // language identifier
LPTSTR lpBuffer, // message buffer
DWORD nSize, // maximum size of message buffer
va_list *Arguments // array of message inserts
);
我们也可以在自己的函数中使用该机制,只需要使用VOID SetLastError(DWORD dwErrCode)函数即可,如果WinError.h中的任何代码都不能正确地反映该错误的性质,那么可以创建你自己的代码。错误代码的域的划分表:
位 31~30 29 28 27~16 15~0
内容 严重性 Microsoft/客户 保留 设备代码 异常代码
含义 0=成功 0=MS定义的代码 必顺是0 由MS定义 由MS或客户定义
1=参考
2=警告 1=客户定义的代码
3=错误
注:如果创建自己的错误代码,必顺使29位为1.
Windows函数常用的返回值类型:
void
BOOL:0,非0,TURE,FALSE
HANDLE:HANDLE,NULL,INVALID_HANDLE_VALID)
PVOID:NULL,PVOID
LONG/DWORD:具体函数而定
...
Microsoft编译了一个所有可能的错误代码列表,并且为每个错误代码分配了一个32位的号码. WinError.h头文件(大约2万多行)包含了Micorsoft定义的错误代码列表.
当一个Windows函数检测到一个错误时,它会使用线程本地存储(thread-local storage)机制,将相应的错误代码号码与调用的线程关联起来.这将使线程能够互相独立的运行,而不会影响各自的错误代码.
当函数返回时,它的返回值就能指明是否有错误发生,若有且要确定是什么错误,就需要调用DWORD GetLastError()函数,它返回线程的32位错误代码.Visual Studio有一个Error Lookup程序可用将错误代码的号码换成相应文本描述.Windows还提供了一个函数FormatMessage可以将错误代码转换成它的文本描述.
DWORD FormatMessage(
DWORD dwFlags, // source and processing options
LPCVOID lpSource, // message source
DWORD dwMessageId, // message identifier
DWORD dwLanguageId, // language identifier
LPTSTR lpBuffer, // message buffer
DWORD nSize, // maximum size of message buffer
va_list *Arguments // array of message inserts
);
我们也可以在自己的函数中使用该机制,只需要使用VOID SetLastError(DWORD dwErrCode)函数即可,如果WinError.h中的任何代码都不能正确地反映该错误的性质,那么可以创建你自己的代码。错误代码的域的划分表:
位 31~30 29 28 27~16 15~0
内容 严重性 Microsoft/客户 保留 设备代码 异常代码
含义 0=成功 0=MS定义的代码 必顺是0 由MS定义 由MS或客户定义
1=参考
2=警告 1=客户定义的代码
3=错误
注:如果创建自己的错误代码,必顺使29位为1.
0 0
- Windows函数错误处理
- Windows函数错误处理
- Windows平台下函数返回错误的处理
- 函数错误处理一(总结自windows编程核心)
- 函数错误处理二(总结自己windows编程核心)
- Windows错误处理
- Windows 错误处理机制
- Windows中的错误处理
- windows内核错误处理
- windows错误处理
- windows 错误处理
- LoadRunner错误处理函数
- PHP错误处理函数
- LoadRunner错误处理函数
- 错误处理函数
- PHP错误处理函数
- objectARX错误处理函数
- loadrunner 错误函数处理
- 积分
- Redis repl-disable-tcp-nodelay配置
- [黑马程序员]集合_HashSet的equals方法
- 四、CCS编译后各种section概述
- poj 3233 矩阵
- Windows函数错误处理
- n<1+1/2+1/3.....+1/m<n+1问题解决算法
- 注册ActiveX控件的几种方法
- 编程回忆之Android回忆(创建导航抽屉)
- Memcached源码阅读之服务器资源调整
- Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)
- ArrayList的使用方法【转载】
- C# Socket 线程
- Java通过反射创建对象