CredMarshalCredentialA 函数 (wincred.h)

CredMarshalCredential 函数将凭据转换为文本字符串。 过去,许多函数(如 NetUseAdd)都采用域名、用户名和密码作为凭据。 这些函数不接受证书作为凭据。 CredMarshalCredential 函数将此类凭据转换为可传递到这些 API 的形式。

封送凭据应作为用户名字符串传递给当前传递凭据的任何 API。 传递给该 API 的域名(如果适用)应以 NULL 或空的形式传递。 对于证书凭据,证书的 PIN 应作为密码传递给该 API。

调用方不应修改或打印封送凭据。 可以在 Unicode、ANSI 和 OEM 字符集之间自由转换返回的值。 字符串区分大小写。

语法

BOOL CredMarshalCredentialA(
  [in]  CRED_MARSHAL_TYPE CredType,
  [in]  PVOID             Credential,
  [out] LPSTR             *MarshaledCredential
);

参数

[in] CredType

要封送的凭据的类型。

[in] Credential

要封送的凭据。

这是 CRED_MARSHAL_TYPE 值之一。

如果 CredTypeCertCredential则 Credential 指向 CERT_CREDENTIAL_INFO 结构。

如果 CredTypeUsernameTargetCredential则 Credential 指向 USERNAME_TARGET_CREDENTIAL_INFO 结构。

[out] MarshaledCredential

指向包含封送凭据的 以 null 结尾的字符串的指针。 调用方应使用 CredFree 释放返回的缓冲区。

返回值

此函数在成功时返回 TRUE ,在失败时返回 FALSE 。 可以调用 GetLastError 函数以获取更具体的状态代码。 可以返回以下状态代码:

ERROR_INVALID_PARAMETER

CredType 无效。

注解

注意

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

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 wincred.h
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

CERT_CREDENTIAL_INFO

CRED_MARSHAL_TYPE

CredFree

CredUnmarshalCredential

GetLastError

USERNAME_TARGET_CREDENTIAL_INFO