C++ 定义函数指针

C++ 定义函数指针,c++,function-pointers,C++,Function Pointers,我正在尝试调用内部Windows NT API函数NtOpenProcess。我知道调用内部API可能是个坏主意,但是对于这个特定的工具,我需要这个API提供的低级访问 我的问题是,要使用这样的内部API,我需要使用运行时动态链接,如中所述 为此,我需要定义一个指向NtOpenProcess的函数指针。这是我的声明: typedef NTSTATUS (NTAPI *_NtOpenProcess) ( OUT PHANDLE, IN ACCESS_MASK, IN POBJECT_ATTRIBU

我正在尝试调用内部Windows NT API函数NtOpenProcess。我知道调用内部API可能是个坏主意,但是对于这个特定的工具,我需要这个API提供的低级访问

我的问题是,要使用这样的内部API,我需要使用运行时动态链接,如中所述

为此,我需要定义一个指向NtOpenProcess的函数指针。这是我的声明:

typedef NTSTATUS (NTAPI *_NtOpenProcess) (
OUT PHANDLE,
IN ACCESS_MASK,
IN POBJECT_ATTRIBUTES,
IN PCLIENT_ID OPTIONAL);

class procManager
{
    HINSTANCE hNTDLL;
public:
    procManager()
    {
        hNTDLL = LoadLibrary(L"ntdll.dll");
        if (!hNTDLL)
            throw std::runtime_error("NTDLL.DLL failure.");
        _NtOpenProcess NtOpenProcess;
        NtOpenProcess = reinterpret_cast <_NtOpenProcess> (GetProcAddress(hNTDLL, L"NtOpenProcess"));
        if (!NtOpenProcess)
            throw std::runtime_error("NtOpenProcess not found.");
        //Use NTOpenProcess for stuff here
    };
    ~procManager()
    {
        FreeLibrary(hNTDLL);
    };
};
导致另一个错误:

错误C2065:“\u NtOpenProcess”: 未声明的标识符

在这一点上,我说“当然它是未定义的,这就是为什么它是typedef!”

有人在声明中看到我的错误吗?

是否包含“ntdef.h”和“ntstatus.h”?
编译器可能无法理解NTSTATUS。

我想我确实理解了。。。但问题是->#如果取消NTSTATUS#定义长NTSTATUS#如果我切换了长NTSTATUS。谢谢从DDK获取ntdll.lib并静态链接。
typedef NTSTATUS (*_NtOpenProcess) (
OUT PHANDLE,
IN ACCESS_MASK,
IN POBJECT_ATTRIBUTES,
IN PCLIENT_ID OPTIONAL);