为什么这个函数有Unicode和ANSI两个版本?

4
1个回答

4

由于 BeginUpdateResource 函数有一个 LPCTSTR 参数,因此两个版本产生的句柄可能需要不同的内部清理。(即使它们今天没有,谨慎的 API 设计者也会留下明天可能会有的可能性)。


实现细节泄漏,有人吗? :-) +1 - user541686
依我的看法,该API试图尽力避免泄露实现细节。在这种情况下,它不泄露的细节是使用BeginUpdateResourceA和BeginUpdateResourceW创建的句柄是否需要不同的清理。如果只有一个EndUpdateResource,它将泄露清理相同的信息。 - hmakholm left over Monica
CloseHandle 不就是做这个的吗? - user541686
CloseHandle 关闭内核对象句柄,但有很多返回 HANDLE 的 API 实际上并不是(或不完全是)内核对象句柄,只是因为设计者不必定义自己的不透明 typedef。你可以认为这构成了一个细节泄漏,但我会说这是 API 在错误使用 HANDLE 类型时未能暴露足够信息的情况。 - hmakholm left over Monica

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