c++ - SSPI 头文件 - fatal error

标签 c++ windows winapi header-files

我的项目出现了一些 fatal error ,错误来自 sspi.h,我必须定义一些东西,但我不知道是什么以及为什么,请有人解释。

sspi.h(60): fatal error C1189: #error :   You must define one of SECURITY_WIN32, SECURITY_KERNEL, or SECURITY_MAC

最佳答案

虽然诊断很清楚必须定义 SECURITY_WIN32SECURITY_KERNELSECURITY_MAC 之一,但它在确定方面没有多大帮助使用哪一个以及为什么。据我所知,这些都没有正式记录在 MSDN 中,因此唯一的信息来源是实际的头文件。

  • SECURITY_MAC:此符号只出现在 中,该文件的版权声明为 1992-1999。据推测,引入此符号是为了支持“经典​​”Mac OS 的编译,当时 MFC 仍计划成为一个针对 Windows 和 Mac 的跨平台框架。该符号今天似乎没有任何实际用途。

  • SECURITY_KERNEL:这里最有启发性的评论来自,阅读//Can't use the windows.h def 'ns 处于内核模式。。这似乎表明,当从以内核模式运行的模块访问安全包时,需要定义 SECURITY_KERNEL 符号。

  • SECURITY_WIN32:整个Windows SDK都没有对这个符号进行任何注释。从用户模式应用程序访问安全 API 时应该使用此符号似乎是合理的。

假设以上所有内容都是正确的,可以使用以下准则来确定要定义的符号:

  • 在编译用户模式应用程序时定义SECURITY_WIN32
  • 在编译内核模式模块时定义SECURITY_KERNEL
  • 永远不要定义过时的 SECURITY_MAC 预处理器符号。

关于c++ - SSPI 头文件 - fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11561475/

相关文章:

c# - 从 C# 更改 for 循环中的 arduino 变量

c++ - 多构造函数继承

c++ - 在 C++ 中的类中调用函数?

c# - 文件夹重命名后的文件存在检查在 UNC 共享上返回不正确的值

c++ - RegisterRawInputDevices函数使用

c# - 用于切换 "Show hidden files, folders and drives"的 API

c++ - g++ 标志只检查语法?

python - Windows 无法正确读取 .py 文件

c++ - 来自 CreateWindowEx() 的 ERROR_INVALID_WINDOW_HANDLE

c++ - 添加作业 + 设置打印机 : is it possible to set dmCopies and get effect?