DsCrackSpnW 函数 (dsparse.h)

DsCrackSpn 函数将服务主体名称(SPN)分析为其组件字符串。

语法

DSPARSE DWORD DsCrackSpnW(
  [in]                LPCWSTR pszSpn,
  [in, out, optional] DWORD   *pcServiceClass,
  [out, optional]     LPWSTR  ServiceClass,
  [in, out, optional] DWORD   *pcServiceName,
  [out, optional]     LPWSTR  ServiceName,
  [in, out, optional] DWORD   *pcInstanceName,
  [out, optional]     LPWSTR  InstanceName,
  [out, optional]     USHORT  *pInstancePort
);

参数

[in] pszSpn

指向包含要分析的 SPN 的常量以 null 结尾的字符串的指针。 SPN 采用以下格式,其中 <服务类> 和 <实例名称> 组件必须存在,<端口号> 和 <服务名称> 组件是可选的。 <端口号> 组件必须是数值字符串值。

<service class>/<instance name>:<port number>/<service name>

[in, out, optional] pcServiceClass

指向 DWORD 值的指针,该值包含 ServiceClass 缓冲区 TCHAR的大小,包括终止 null 字符。 退出时,此参数包含 ServiceClass 字符串中的 TCHAR 数,包括终止 null 字符。

如果此参数 NULL、包含零或 ServiceClassNULL,则忽略此参数和 ServiceClass

若要获取 ServiceClass 字符串所需的字符数(包括 null 终止符),请使用有效的 SPN、非NULLServiceClass 调用此函数,并将此参数设置为 1。

[out, optional] ServiceClass

指向 TCHAR 缓冲区的指针,该缓冲区接收包含 SPN <服务类> 组件的 null 终止字符串。 此缓冲区必须至少 *pcServiceClass TCHAR 的大小。 如果不需要服务类,则此参数可能会 NULL

[in, out, optional] pcServiceName

指向 DWORD 值的指针,该值包含 ServiceName 缓冲区 TCHAR的大小,包括终止 null 字符。 退出时,此参数包含 ServiceName 字符串中 TCHAR 的数量,包括终止 null 字符。

如果此参数 NULL,则包含零或 ServiceNameNULL,则忽略此参数和 ServiceName

若要获取 ServiceName 字符串(包括 null 终止符)所需的字符数,请使用有效的 SPN、非NULLServiceName 调用此函数,并将此参数设置为 1。

[out, optional] ServiceName

指向 TCHAR 缓冲区的指针,该缓冲区接收包含 SPN <服务名称> 组件的 null 终止字符串。 此缓冲区必须至少 *pcServiceName TCHAR 的大小。 如果 SPN 中不存在 <服务名称> 组件,则此缓冲区将接收 <实例名称> 组件。 如果不需要服务名称,则此参数可能会 NULL

[in, out, optional] pcInstanceName

指向 DWORD 值的指针,该值包含 InstanceName 缓冲区 TCHAR的大小,包括终止 null 字符。 退出时,此参数包含 InstanceName 字符串中的 TCHAR 数,包括终止 null 字符。

如果此参数 NULL,则包含零或 InstanceNameNULL,则忽略此参数和 InstanceName

若要获取 InstanceName 字符串(包括 null 终止符)所需的字符数,请使用有效的 SPN、非NULLInstanceName 调用此函数,并将此参数设置为 1。

[out, optional] InstanceName

指向 TCHAR 缓冲区的指针,该缓冲区接收包含 SPN <实例名称> 组件的 null 终止字符串。 此缓冲区必须至少 *pcInstanceName TCHAR 的大小。 如果不需要实例名称,则此参数可能会 NULL

[out, optional] pInstancePort

指向 DWORD 值的指针,该值接收 SPN> 组件 <端口号的整数值。 如果 SPN 不包含 <端口号> 组件,则此参数接收零。 如果不需要端口号,此参数可能会 NULL

返回值

返回 Win32 错误代码,包括以下内容。

言论

注意

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

要求

要求 价值
最低支持的客户端 Windows Vista
支持的最低服务器 Windows Server 2008
目标平台 窗户
标头 dsparse.h (包括 Ntdsapi.h)
Ntdsapi.lib
DLL Ntdsapi.dll

另请参阅

域控制器和复制管理功能