BOOL (WINAPI *ZTSQueryUserToken)(ULONG SessionId, PHANDLE phToken) = NULL;
对我来说,它看起来像是为结构或其他东西创建的变量,但我从未见过这种类型的语法,所以有人可以为我分解吗?

最佳答案

WINAPI 约定通常用于调用 Win32 API 函数。
WINAPI 只是 __stdcall#define WINAPI __stdcall__stdcall 调用约定一般具有以下特点:

  • 从右向左传递参数,并放入堆栈。
  • 堆栈的清理由调用函数执行。
  • 函数名包含一个下划线字符并附加一个“@”字符以及所需的堆栈空间字节数。

  • 所以留下 __stdcall ,使用 "Spiral Rule" 得到
                +----------------------+
                |   +----------------+ |
                |   |                | |
                |   ^                | |
    BOOL (WINAPI* ZTSQueryUserToken  ) ( ULONG SessionId, PHANDLE phToken)
     ^          ^                    | |
     |          +--------------------+ |
     +---------------------------------+
    

    因此,标识符:
  • ZTSQueryUserToken 是一个
  • 指向具有 __stdcallULONG
  • 类型参数的 ( PHANDLE ) 函数的指针
  • 返回 BOOL

  • 在你的情况下,指针被分配给 NULL

    关于c++ - 为什么这个带有 WINAPI 的 C++ 语法是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20128194/

    10-11 21:49