我应该在使用LocalFree / HeapFree,FormatMessage,Windows 7 / 8.1和Windows 10之前查询操作系统吗?

时间:2017-09-07 23:17:38

标签: c windows winapi

来自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);

}

我的问题是,在调用IsWindows7SP1OrGreaterIsWindows8Point1OrGreater之前,我应该使用IsWindows10OrGreaterLocalFreeHeapFreefrom Version Helper functions等函数吗?

如果我必须致电HeapFree,是否有人可以举例说明如何使用它?

谢谢!

1 个答案:

答案 0 :(得分:3)

“现代”在这里表示WinRT / Metro / Modern / Store应用程序。每个版本的Windows都存在LocalFree,并且可以在所有Windows版本上由Classic / Desktop应用程序使用。