对于我的一生,我无法弄清楚如何在我的设备驱动程序中解析声明的 NTQueryKey 值。我找了一个设备驱动程序论坛,但没有找到。
有人能指出我正确的地方吗?OSR 对如何链接到 NTQueryKey 之类的愚蠢问题反应不快。
这是我的原型:
NTSYSAPI NTSTATUS NTAPI NtQueryKey(HANDLE, KEY_INFORMATION_CLASS, PVOID, ULONG, ULONG *);
它编译得很好,但链接器不喜欢它。
谢谢
对于我的一生,我无法弄清楚如何在我的设备驱动程序中解析声明的 NTQueryKey 值。我找了一个设备驱动程序论坛,但没有找到。
有人能指出我正确的地方吗?OSR 对如何链接到 NTQueryKey 之类的愚蠢问题反应不快。
这是我的原型:
NTSYSAPI NTSTATUS NTAPI NtQueryKey(HANDLE, KEY_INFORMATION_CLASS, PVOID, ULONG, ULONG *);
它编译得很好,但链接器不喜欢它。
谢谢
不应从内核模式调用 NtXXXX 函数。请改用 ZwXXXX 函数。在你的情况下,你想要ZwQueryKey
. 它与 具有相同的签名NtQueryKey
,但它在 x86 上执行与内核模式对话所需的操作,并且它由提供ntoskrnl.exe
而不是由提供ntdll.dll
。
在内核模式下,您链接到 Zw.... 等效函数。见这里。NT.... 函数从用户模式调用(例如 Win32 子系统将调用 NT... 函数)。