有没有Unicode替代OutputDebugString的方法?

4

OutputDebugString() 是本地 ASCII,意味着它在调用 ASCII 版本的 OutputDebugStringA() 之前将输入的 Unicode 字符串转换为本地字符串。

有没有支持 Unicode 的替代方法来使用 OutputDebugString()

1个回答

5
OutputDebugStringW 内部调用 OutputDebugStringA,所以无法在系统代码页中表示的 Unicode 字符将被替换为 ?
奇怪的是,操作系统向调试器发送以打印消息的 OUTPUT_DEBUG_STRING_INFO 结构似乎支持让调试器知道字符串是否为 Unicode,但是 OutputDebugStringW 并没有使用它。
不幸的是,我不知道有什么机制可以使操作系统产生带有 Unicode 字符串的 OUTPUT_DEBUG_STRING_EVENT。可能公共 API 无法实现。

5
文档中提到:“重要提示:在过去,操作系统没有通过OutputDebugStringW输出Unicode字符串,而是仅输出ASCII字符串。为了强制OutputDebugStringW正确输出Unicode字符串,调试器需要调用WaitForDebugEventEx以选择新行为。调用WaitForDebugEventEx后,操作系统将知道调试器支持Unicode并专门选择接收Unicode字符串”。请使用最新的调试器。 - Remy Lebeau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接