GetLastError()
可以以某种方式传递给以FormatMessageW
获取格式化的消息。目标是在最后得到一个QString
。什么是正确和安全的方法?
问问题
1883 次
1 回答
8
这可以解决问题。
QString getLastErrorMsg() {
LPWSTR bufPtr = NULL;
DWORD err = GetLastError();
FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, err, 0, (LPWSTR)&bufPtr, 0, NULL);
const QString result =
(bufPtr) ? QString::fromUtf16((const ushort*)bufPtr).trimmed() :
QString("Unknown Error %1").arg(err);
LocalFree(bufPtr);
return result;
}
调用 FormatMessage 时应始终指定 FORMAT_MESSAGE_IGNORE_INSERTS。一些错误消息确实包含占位符,这将导致错误,除非您的代码传递参数列表。由于我们正在传递 NULL 这将是等待发生的错误。
于 2013-10-03T04:10:05.970 回答