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

指向接收所创建的 SPN 的实际长度(包括终止 null 字符)的 ULONG 的指针。

[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,但内存分配请求失败。

言论

SecMakeSPNEx2SecMakeSPNEx的增强版本。

要求

要求 价值
最低支持的客户端 Windows Vista
支持的最低服务器 Windows Server 2008
目标平台 普遍
标头 ntifs.h(包括 Ntifs.h、FltKernel.h)
Ksecdd.lib
IRQL <= APC_LEVEL

另请参阅

SecMakeSPN

SecMakeSPNEx