gpt4 book ai didi

c - 为什么 FormatMessage() 无法找到 WinINet 错误消息?

转载 作者:可可西里 更新时间:2023-11-01 12:25:11 25 4
gpt4 key购买 nike

我正在运行它来测试 FormatMessage :

LPVOID lpMsgBuf;
errCode=12163;

FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM ,
0,
errCode,
0,
(LPTSTR) &lpMsgBuf,
0, NULL );

然而,当它返回 lpMsgBuf 包含 NULL 时...我期待类似 ERROR_INTERNET_DISCONNECTED 的结果.

有什么不对吗?谢谢。

最佳答案

这是一个 WinINet 错误,因此与之关联的消息存在于 WinINet.dll 中。您只需将此事告诉 FormatMessage() 以便它检索正确的消息:

FormatMessage( 
// flags:
FORMAT_MESSAGE_ALLOCATE_BUFFER // allocate buffer (free with LocalFree())
| FORMAT_MESSAGE_IGNORE_INSERTS // don't process inserts
<b>| FORMAT_MESSAGE_FROM_HMODULE, // retrieve message from specified DLL</b>
// module to retrieve message text from
<b>GetModuleHandle(_T("wininet.dll")),</b>
// error code to look up
errCode,
// default language
0,
// address of location to hold pointer to allocated buffer
(LPTSTR)&lpMsgBuf,
// no minimum size
0,
// no arguments
NULL );

这在 "Handling Errors" section 下正式记录在 MSDN 上WinINet 文档。

请注意,如果您想对可能来自 WinINet 的错误使用此例程,则可以重新添加 FORMAT_MESSAGE_FROM_SYSTEM 标志:在该标志中如果在 wininet.dll 中未发现错误,FormatMessage() 将回退到系统消息表。然而,do not remove the FORMAT_MESSAGE_IGNORE_INSERTS flag .

关于c - 为什么 FormatMessage() 无法找到 WinINet 错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2159458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com