Window错误处理

1. 主要了解Window错误代码结构,这样就可以构造自己的错误处理


调用 VOID SetLastError(DWORD);

如何不是写供其他人调用的库, 感觉没有必要定义自己的错误代码, 当是理解WIN处理原理吧.


2. 显示系统已存在代码主要是理解

DWORD WINAPI FormatMessage(
  __in          DWORD dwFlags,
  __in          LPCVOID lpSource,
  __in          DWORD dwMessageId,
  __in          DWORD dwLanguageId,
  __out         LPTSTR lpBuffer,
  __in          DWORD nSize,
  __in          va_list* Arguments
);
这个函数, 而显示相应的代码文本已经有比较固定的代码,可以直接使用:

void PrintWin32Error()
{
	LPTSTR lpMsgBuf;

	HMODULE hModule = NULL;

	DWORD dwFlag = 		FORMAT_MESSAGE_ALLOCATE_BUFFER | 
		FORMAT_MESSAGE_FROM_SYSTEM | 
		FORMAT_MESSAGE_IGNORE_INSERTS;

	hModule = LoadLibraryEx(TEXT("NetMsg.dll"), NULL, DONT_RESOLVE_DLL_REFERENCES);
	if (hModule)
	{
		dwFlag |= FORMAT_MESSAGE_FROM_HMODULE;
	}

	DWORD dwError = FormatMessage( 
		dwFlag,
		hModule,
		GetLastError(),
		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
		(LPTSTR) &lpMsgBuf,
		0,
		NULL 
		);


	if (dwError)
	{
		TRACE(TEXT("Error Id:%08X Text:%s"), GetLastError(), lpMsgBuf);
		// Free the buffer.
		LocalFree( lpMsgBuf );
	}

}

需要注意的是要在WIN API调用后马上调用此函数, 防止其它API调用重置子错误代码.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值