secMakeSPNEx2 函数 (ntifs.h)
SecMakeSPNEx2 创建一个服务提供商名称字符串,该字符串可在与特定安全服务提供商通信时使用。
语法
KSECDDDECLSPEC NTSTATUS SecMakeSPNEx2(
[in] IN PUNICODE_STRING ServiceClass,
[in] IN PUNICODE_STRING ServiceName,
[in, optional] IN PUNICODE_STRING InstanceName,
[in, optional] IN USHORT InstancePort,
[in, optional] IN PUNICODE_STRING Referrer,
[in, optional] IN PUNICODE_STRING InTargetInfo,
[in, out] IN OUT PUNICODE_STRING Spn,
[out, optional] OUT PULONG TotalSize,
[in] IN BOOLEAN Allocate,
[in] IN BOOLEAN IsTargetInfoMarshaled
);
参数
[in] ServiceClass
指向 Unicode 字符串的指针,该字符串指定安全服务提供程序的服务类。
[in] ServiceName
指向 Unicode 字符串的指针,该字符串指定安全服务提供程序的服务名称。
[in, optional] InstanceName
指向可选 Unicode 字符串的指针,该字符串指定用于与安全服务提供程序连接的实例名称。
[in, optional] InstancePort
服务实例的端口号。 将 0 用于默认端口。 如果此参数为零,则 SPN 不包含端口号。
[in, optional] Referrer
指向以 null 结尾的常量字符串的指针,该字符串指定提供 IP 地址引用的主机的 DNS 名称。 除非 ServiceName 参数指定 IP 地址,否则将忽略此参数。
[in, optional] InTargetInfo
指向以 null 结尾的字符串的指针,该字符串指示上下文的目标。
[in, out] Spn
指向 Unicode 字符串的指针,该字符串接收由此函数创建的安全服务提供程序名称字符串。
[out, optional] TotalSize
指向 ULONG 的指针,该 ULONG 接收所创建的 SPN 的实际长度,包括终止 null 字符。
[in] Allocate
一个布尔变量,指示用于存储 Spn Unicode 字符串的内存是否应由此函数分配。 如果此参数为 TRUE,则将从分页池分配 Spn 的内存。
[in] IsTargetInfoMarshaled
一个布尔变量,指示调用方提供了封送的 InTargetInfo 结构。 如果 IsTargetInfoMarshaled 为 TRUE,则 InTargetInfo-Buffer> 指向 CredMarshalTargetInfo 函数返回的 CREDENTIAL_TARGET_INFORMATION 结构的字符串表示形式。
返回值
SecMakeSPNEx2 在成功时返回STATUS_SUCCESS或失败时返回以下错误代码之一。
返回代码 | 说明 |
---|---|
STATUS_BUFFER_OVERFLOW | Allocate 参数设置为 false,并出现以下条件之一: (1) Spn 参数为 NULL 指针。 (2) Spn Unicode 字符串参数的最大长度太小。 |
STATUS_INVALID_PARAMETER | Spn 参数的总长度超过 65535 字节。 |
STATUS_NO_MEMORY | Allocate 参数设置为 true,但内存分配请求失败。 |
注解
SecMakeSPNEx2 是 SecMakeSPNEx 的增强版本。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | 通用 |
标头 | ntifs.h (包括 Ntifs.h、FltKernel.h) |
Library | Ksecdd.lib |
IRQL | <= APC_LEVEL |