dsCrackSpnA 函数 (dsparse.h)

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

语法

DSPARSE DWORD DsCrackSpnA(
  [in]                LPCSTR  pszSpn,
  [in, out, optional] LPDWORD pcServiceClass,
  [out, optional]     LPSTR   ServiceClass,
  [in, out, optional] LPDWORD pcServiceName,
  [out, optional]     LPSTR   ServiceName,
  [in, out, optional] LPDWORD pcInstanceName,
  [out, optional]     LPSTR   InstanceName,
  [out, optional]     USHORT  *pInstancePort
);

参数

[in] pszSpn

指向常量以 null 结尾的字符串的指针,该字符串包含要分析的 SPN。 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 缓冲区的指针,该缓冲区接收一个以 null 结尾的字符串,其中包含 <SPN 的服务类> 组件。 此缓冲区的大小必须至少为 *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 缓冲区的指针,该缓冲区接收一个以 null 结尾的字符串, <其中包含 SPN 的服务名称> 组件。 此缓冲区的大小必须至少 为 *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 缓冲区的指针,该缓冲区接收一个以 null 结尾的字符串,其中包含 <SPN 的实例名称> 组件。 此缓冲区的大小必须至少 为 *pcInstanceName TCHAR 。 如果不需要实例名称,此参数可能为 NULL

[out, optional] pInstancePort

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

返回值

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

注解

注意

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

要求

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

另请参阅

域控制器和复制管理功能