Windows核心编程:第一章 错误处理
1.1 Windows函数使用的返回值的数据类型
->VOID:当一个函数的返回值类型是VOID,那么这个函数是不肯能失败的,
只有极少数的Windows函数的返回值类型为VOID。
->BOOL:函数失败返回0,函数成功返回非0。
->HANDLE: 函数失败返回NULL,函数成功返回一个可以操作的对象,有些
函数失败会返回INVALID_HANDLE_VALUE(-1),具体失败返回值
需要查看SDK。
->PVOID:函数失败返回NULL,函数成功将标识一个数据块的内存地址。
->LONG/DWORD:函数失败通常返回0或-1。
注意:Windows函数失败后可以马上调用GetLastError()获取错误代码,
要想知道具体的文本描述需要用FormatMessage()函数
函数原型:DWORD FormatMessage(
DWORD dwFlags,
LPCVOID pSource,
DWORD dwMessageId,
DWORD dwLanguageId,
PTSTR pszBuffer,
DWORD nSize,
va_list *Arguments);
FormatMessage的pSource可以是一个DLL的句柄,具体做法是用MC.exe创
建资源并将其添加到DLL(或exe)模块中。
1.2 定义自己的错误代码
->VOID SetLastError(DWORD dwErrCode);dwErrCode可以是WinError.h中的
的一个错误代码,也可以是自己定义的错误代码:
自定义错误代码格式:
位 31-30 29 28 27-16 15-0
内容 严重性 Microsoft/客户 保留 Facility代码 异常代码
含义 0=成功 0 = Microsoft定义 必须为0 前256个值由Microsoft Microsoft/客户定义
1=信息 的代码 保留 的代码
2=警告 1 = 客户定义的代码
3=错误
1.1 Windows函数使用的返回值的数据类型
->VOID:当一个函数的返回值类型是VOID,那么这个函数是不肯能失败的,
只有极少数的Windows函数的返回值类型为VOID。
->BOOL:函数失败返回0,函数成功返回非0。
->HANDLE: 函数失败返回NULL,函数成功返回一个可以操作的对象,有些
函数失败会返回INVALID_HANDLE_VALUE(-1),具体失败返回值
需要查看SDK。
->PVOID:函数失败返回NULL,函数成功将标识一个数据块的内存地址。
->LONG/DWORD:函数失败通常返回0或-1。
注意:Windows函数失败后可以马上调用GetLastError()获取错误代码,
要想知道具体的文本描述需要用FormatMessage()函数
函数原型:DWORD FormatMessage(
DWORD dwFlags,
LPCVOID pSource,
DWORD dwMessageId,
DWORD dwLanguageId,
PTSTR pszBuffer,
DWORD nSize,
va_list *Arguments);
FormatMessage的pSource可以是一个DLL的句柄,具体做法是用MC.exe创
建资源并将其添加到DLL(或exe)模块中。
1.2 定义自己的错误代码
->VOID SetLastError(DWORD dwErrCode);dwErrCode可以是WinError.h中的
的一个错误代码,也可以是自己定义的错误代码:
自定义错误代码格式:
位 31-30 29 28 27-16 15-0
内容 严重性 Microsoft/客户 保留 Facility代码 异常代码
含义 0=成功 0 = Microsoft定义 必须为0 前256个值由Microsoft Microsoft/客户定义
1=信息 的代码 保留 的代码
2=警告 1 = 客户定义的代码
3=错误