代碼片段
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
0,
(LPTSTR)&lpMsgBuf,
0,
NULL);
關鍵參數解析
| 參數 | 含義 |
FORMAT_MESSAGE_ALLOCATE_BUFFER | 系統自動分配緩衝區存放格式化字符串,緩衝區指針通過 lpMsgBuf 返回。 |
FORMAT_MESSAGE_FROM_SYSTEM | 從系統消息表查找錯誤代碼對應的文本。 |
FORMAT_MESSAGE_IGNORE_INSERTS | 忽略消息中的插入序列(%1, %2...),直接返回原始模板。 |
(LPTSTR)&lpMsgBuf | 輸出參數:接收系統分配的緩衝區地址。LPTSTR 是 TCHAR*,&lpMsgBuf 取緩衝區指針變量的地址,供 API 填寫指針值。 |
使用後清理
// 使用完畢必須釋放緩衝區
LocalFree(lpMsgBuf);
常見誤區
- 以為
lpMsgBuf 是字符數組,實為指針變量。
- 忘記
LocalFree 導致內存洩漏。
- 未包含
windows.h 或鏈接 kernel32.lib。