gpt4 book ai didi

c++ - 如何确保并强制拥有句柄以防止不需要的 CloseHandle 调用?

转载 作者:太空宇宙 更新时间:2023-11-04 15:57:50 26 4
gpt4 key购买 nike

长话短说

假设我实现了一个类,该类实现了一个返回 HANDLE 的 API。假设我的类(class)是 HANDLE 的所有者并负责创建、更新和关闭它。

如何防止我的 API 调用者关闭我的句柄并破坏我的设计?

背景

CreateToolhelp32Snapshot 是一个昂贵的调用,必须明智地使用。我的解决方案中有很多项目,每个项目都粗心地调用了 CreateToolhelp32Snapshot

我想实现一个包装类,它提供对 CreateToolhelp32Snapshot 的“智能”访问。

我的类将是 CreateToolhelp32Snapshot 返回的 HADNLE 的所有者,并将在需要时更新它(重新调用 CreateToolhelp32Snapshot)(不是但完全定义何时需要)。

为了简单起见,我们假设我的应用程序是单个进程和线程,并且我的类只有一个实例。

最佳答案

Say I implement a class that implements an API that returns a HANDLE

您退回 handle 破坏了您的设计。您的包装器的用户不应该关心句柄,而是关心他们想要的数据,例如您案例中的模块列表。公开一个可以将此类数据返回给您的用户的 API。

class snapshot
{
public:
snapshot()
{
m_handle = CreateToolhelp32Snapshot(...);
}
~snapshot()
{
CloseHandle(m_handle);
}
getModules()
{
// use m_handle to return a list of modules.
}
private:
HANDLE m_handle;
};

关于c++ - 如何确保并强制拥有句柄以防止不需要的 CloseHandle 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52697893/

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