Qt 如何获取GetLastError作为QString的文本表示?
Qt 如何获取GetLastError作为QString的文本表示?,qt,winapi,getlasterror,qtcore,Qt,Winapi,Getlasterror,Qtcore,GetLastError()可以通过某种方式传递到FormatMessageW以获取格式化消息。目标是在最后得到一个QString。正确和安全的方法是什么?这就是关键 QString getLastErrorMsg() { LPWSTR bufPtr = NULL; DWORD err = GetLastError(); FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_M
GetLastError()
可以通过某种方式传递到FormatMessageW
以获取格式化消息。目标是在最后得到一个QString
。正确和安全的方法是什么?这就是关键
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时,应始终指定格式\u消息\u忽略\u插入。某些错误消息确实包含占位符,这将导致错误,除非您的代码通过参数列表。由于我们正在传递NULL,这将是等待发生的bug