gpt4 book ai didi

c++ - 转换 : #define xxxxxx ((LPCSTR) 4)

转载 作者:行者123 更新时间:2023-11-28 01:12:21 25 4
gpt4 key购买 nike

在 WinCrypt.h 中我看到:

#define CERT_CHAIN_POLICY_SSL   ((LPCSTR) 4)

WINCRYPT32API BOOL WINAPI CertVerifyCertificateChainPolicy(
IN LPCSTR pszPolicyOID,
IN PCCERT_CHAIN_CONTEXT pChainContext,
IN PCERT_CHAIN_POLICY_PARA pPolicyPara,
IN OUT PCERT_CHAIN_POLICY_STATUS pPolicyStatus
);

第一个参数采用 CERT_CHAIN_POLICY_SSL。这似乎是一个指向 C 字符串的指针,但它是一个整数!?

指针明明是一个32bit的整数,但是它指向的是什么呢?如果数字 < 255 它将占用一个字节,那么 C 字符串实际上是一个单字节“字符串”(即一个字节)吗?

当转换到另一种支持 BYTE 变量的语言时,我可以创建一个 bVar(一个 BYTE 变量)并将其赋值为 4。然后我可以传递一个指向该 BYTE 变量的指针吗?

最佳答案

有时,API 会采用一个参数,该参数可以是众所周知对象的“cookie”或 ID 或指向名称的指针(例如),这里似乎就是这种情况。 4 是众所周知的 CERT_CHAIN_POLICY_SSL 策略的 cookie/句柄/ID。 API 的某些用户可能会提前指定一个库不知道的策略,但由一个名称指定,它可以在某处(或注册表、配置文件或其他内容)查找。

以某种类似的方式,GetProcAddress()可以使用指向您想要地址的函数名称的指针(这是今天 99% 的时间使用的方式),或者指向字符串的指针参数可以是指定函数序数的数字.

像这样重载指针参数是一种不幸的技术,有时用于使 API 更灵活。幸运的是,这并不是特别常见。

无论如何,如果你想从另一种语言调用这个 API 并指定 CERT_CHAIN_POLICY_SSL 策略,你需要为指针的值传递一个 4(不是指针指向到值 4)。

关于c++ - 转换 : #define xxxxxx ((LPCSTR) 4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2055518/

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