在 wininet.h 中 SECURITY_SET_MASK 的用途是啥?

Posted

技术标签:

【中文标题】在 wininet.h 中 SECURITY_SET_MASK 的用途是啥?【英文标题】:In wininet.h what is SECURITY_SET_MASK intended to be used for?在 wininet.h 中 SECURITY_SET_MASK 的用途是什么? 【发布时间】:2017-06-14 09:53:14 【问题描述】:

在 wininet.h 中 SECURITY_SET_MASK 的用途是什么?我在网上找不到任何文档。

【问题讨论】:

WINHTTP_OPTION_SECURITY_FLAGS寻找Option Flags 【参考方案1】:

它是一个mask,允许您一次设置或清除多个位(标志)。在这种情况下,它是所有可设置的安全标志。

SDK 标头中此常量的定义是确切包含在掩码中的标志的权威参考:

#define SECURITY_SET_MASK (SECURITY_FLAG_IGNORE_REVOCATION        | 
                           SECURITY_FLAG_IGNORE_UNKNOWN_CA        |
                           SECURITY_FLAG_IGNORE_CERT_CN_INVALID   |
                           SECURITY_FLAG_IGNORE_CERT_DATE_INVALID |
                           SECURITY_FLAG_IGNORE_WRONG_USAGE)

当然,每个标志都有自己的documentation。

【讨论】:

还要注意 wininet.h 中的文件注释:// setable flags。换句话说,掩码过滤掉“setable flags”(相对于仅对查询有效的标志)。 我一直在阅读文档和标题。我只是想了解使用它的上下文。据推测,设置这些标志基本上会禁用所有 SSL 安全功能......这似乎是一件奇怪的事情:) @JCx:您不直接将此常量用作参数。您正在使用它来屏蔽可设置的位。当您需要将可设置标志与其他标志分开时,当您有一个标志值时,就会这样做。 我正在查看某人的代码,内容如下:dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_SET_MASK; InternetSetOption (request, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof (dwFlags));对我来说看起来不太健康...... @JCx:用作掩码的常量绝不应与二元 OR (|) 运算符一起使用。这根本没有意义。它只能与二进制 AND (&) 一起使用。表达式SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_SET_MASKSECURITY_SET_MASK 相同,所以为什么还要对它进行OR 操作。如果没有额外的上下文,这应该被丢弃为 "unintentional"

以上是关于在 wininet.h 中 SECURITY_SET_MASK 的用途是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 winInet.h 或 urlmon.h 下载和恢复下载?

Delphi WinAPI InternetGetConnectedState(wininet.h)

wininet.h 不使用带有代码块的 GNU GCC 编译器进行编译

<WinInet.h> API 中的 InternetOpenUrl 和 InternetReadFile 帮助

Wininet 给出链接器错误我正在使用 devc++

WinInet 只下载网页的一部分