加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么这个带有WINAPI的语法是什么意思?

发布时间:2020-12-16 10:25:20 所属栏目:百科 来源:网络整理
导读:BOOL(WINAPI * ZTSQueryUserToken)(ULONG SessionId,PHANDLE phToken)= NULL; 对我而言,它看起来像是为结构或其他东西创建的变量,但我从未见过这种类型的语法,所以有人可以为我分解它吗? 解决方法 WINAPI约定通常用于调用Win32 API函数. WINAPI只是__stdcal
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是一个
>指向具有ULONG和PHANDLE类型参数的(__stdcall)函数的指针
>返回BOOL

在你的情况下指针被指定为NULL.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读