gpt4 book ai didi

interface - 为什么 AddRef() 和 Release() 的返回类型不是 HRESULT

转载 作者:行者123 更新时间:2023-12-03 06:49:35 25 4
gpt4 key购买 nike

最近开始学习COM。在 COM 中,函数的返回类型应该是 HRESULT。已阅读 HRESULT , GetLastError() 的问题,但是为什么,IUnknown 的函数,AddRef()Release()有返回类型 ULONG ?

我想出的答案是AddRef() (几乎)总是从 QueryInterface() 调用,并且客户端不应该调用它。而对于 Release() ,它的返回值永远不会被检查。

虽然我可以争论我自己的答案 -
AddRef() - 客户可能有他不得不打电话的情况。并且由于客户端可以访问该函数,因此客户端不会调用它的保证是什么。

Release() - 同样,用户可以检查其返回类型,因为他可以

请说清楚。

也是这样 --> 它的约定是让 HRESULT 返回 COM 相关函数的类型,而不是强制 --> 如果这是真的,它将停止我大脑中的困惑。

最佳答案

"AddRef and Release can't ever fail, so there's no point in having them return HRESULT." -Igor Tandetnik



我发布这个作为答案只是因为我的眼睛因阅读整个问题和所有评论而流血,希望能帮助某人......来SO社区,让我们关闭这些类型的问题。如果没有这些垃圾要筛选,帮助人们会容易得多。

关于interface - 为什么 AddRef() 和 Release() 的返回类型不是 HRESULT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21274267/

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