EnumerateSecurityPackagesA 函数 (sspi.h)

EnumerateSecurityPackages 函数返回 SecPkgInfo 结构的数组,这些结构提供有关客户端可用的安全包的信息。

语法

SECURITY_STATUS SEC_ENTRY EnumerateSecurityPackagesA(
  [in] unsigned long *pcPackages,
  [in] PSecPkgInfoA  *ppPackageInfo
);

参数

[in] pcPackages

指向 ULONG 变量的指针,该变量接收系统上可用的包数。 这包括已加载的包和按需提供的包。

[in] ppPackageInfo

指向变量的指针,该变量接收指向 SecPkgInfo 结构数组的指针。 每个结构都包含 安全支持提供程序 (SSP) 的信息,用于描述该 SSP 中可用的安全包的功能。

使用完数组后,通过调用 FreeContextBuffer 函数释放内存。

返回值

如果函数成功,该函数将返回 SEC_E_OK

如果函数失败,它将返回非零错误代码。 可能的值包括(但并不限于)下表中的项。

返回代码/值 说明
SEC_E_INSUFFICIENT_MEMORY
0x80090300L
没有足够的内存来分配一个或多个缓冲区。
SEC_E_INVALID_HANDLE
0x80090301L
指定的句柄无效。
SEC_E_SECPKG_NOT_FOUND
0x80090305L
找不到指定的包。

注解

调用方可以使用 SecPkgInfo 结构的 Name 成员在调用 AcquireCredentialsHandle (General) 函数时指定安全包。

注意

sspi.h 标头将 EnumerateSecurityPackages 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 sspi.h (包括 Security.h)
Library Secur32.lib
DLL SspiCli.dll

另请参阅

AcquireCredentialsHandle (General)

FreeContextBuffer

SSPI 函数

SecPkgInfo