来自MSDN(FormatMessage函数):
Windows 10:
LocalFree 不在现代SDK中,因此无法使用 释放结果缓冲区。相反,使用 HeapFree (GetProcessHeap(), allocatedMessage)。在这种情况下,这与调用LocalFree相同 在记忆中。
我不知道如何使用HeapFree,但我想在Windows 7,Windows 8 / 8.1和Windows 10中运行该应用程序,但我目前只使用LocalFree并且它正在运行。
这是我的代码:
VOID ShowErrorMsg(DWORD messageId)
{
DWORD flags=FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS;
DWORD languageID = LANG_USER_DEFAULT;
LPWSTR errorMsg;
DWORD size = 0;
FormatMessageW(flags, NULL, messageId, languageID, (LPTSTR)&errorMsg, size, NULL);
wprintf(L"\n%s", errorMsg);
LocalFree(errorMsg);
}
我的问题是,在调用IsWindows7SP1OrGreater
或IsWindows8Point1OrGreater
之前,我应该使用IsWindows10OrGreater
,LocalFree
和HeapFree
,from Version Helper functions等函数吗?
如果我必须致电HeapFree
,是否有人可以举例说明如何使用它?
谢谢!
答案 0 :(得分:3)
“现代”在这里表示WinRT / Metro / Modern / Store应用程序。每个版本的Windows都存在LocalFree
,并且可以在所有Windows版本上由Classic / Desktop应用程序使用。