gpt4 book ai didi

c++ - 将注册表项 HANDLE 转换为 HKEY

转载 作者:太空宇宙 更新时间:2023-11-04 13:46:23 25 4
gpt4 key购买 nike

我正在使用混合注册表键函数环境(ntdlladvapi32 导出的环境)。
我面临的问题是 ntdll 使用类型 HANDLE 作为键句柄,而 advapi32 使用 HKEY。我无法找出在 C++ 中将 HANDLE 转换为 HKEY 的语法,并且不断收到编译器错误。

最佳答案

没有什么可以转换的。 HKEY 已经是 HANDLE

winnt.h:

#ifdef STRICT
typedef void *HANDLE;
#if 0 && (_MSC_VER > 1000)
#define DECLARE_HANDLE(name) struct name##__; typedef struct name##__ *name
#else
#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name
#endif
#else
typedef PVOID HANDLE;
#define DECLARE_HANDLE(name) typedef HANDLE name
#endif

windef.h:

DECLARE_HANDLE(HKEY);

如果您遇到编译器错误,您可能定义了 STRICT,这是为了防止 API 混合句柄类型。当定义了 STRICT 时,HKEY 映射到 struct HKEY__*。当未定义 STRICT 时,HKEY 将映射到 HANDLE

因为您知道 NTDLL 的注册表 HANDLE 和 ADVAPI32 的 HKEY 代表相同的东西,所以只需按原样使用它们,在传递在两个注册表 API 之间进行处理。

关于c++ - 将注册表项 HANDLE 转换为 HKEY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25749711/

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