ITpmVirtualSmartCardManager::CreateVirtualSmartCard 方法 (tpmvscmgr.h)
使用给定参数创建 TPM 虚拟智能卡。
语法
HRESULT CreateVirtualSmartCard(
[in] LPCWSTR pszFriendlyName,
[in] BYTE bAdminAlgId,
[in] const BYTE *pbAdminKey,
[in] DWORD cbAdminKey,
[in, optional] const BYTE *pbAdminKcv,
[in] DWORD cbAdminKcv,
[in, optional] const BYTE *pbPuk,
[in] DWORD cbPuk,
[in] const BYTE *pbPin,
[in] DWORD cbPin,
[in] BOOL fGenerate,
[in, optional] ITpmVirtualSmartCardManagerStatusCallback *pStatusCallback,
[out] LPWSTR *ppszInstanceId,
[out] BOOL *pfNeedReboot
);
参数
[in] pszFriendlyName
智能卡读取器节点的显示名称。 这在设备管理器中显示,但它不是智能卡资源管理器 (SCRM) 看到的读取者名称。
[in] bAdminAlgId
管理密钥的算法标识符。 目前,若要使用收件箱 GIDS 微型驱动程序,此值应在 CBC 链接模式) 中将 3 键三重 DES 与 ISO/IEC 9797 填充方法 2 一起VSC_DEFAULT_ADMIN_ALGORITHM_ID (。
[in] pbAdminKey
指向字节数组的指针,该字节数组包含要创建的虚拟智能卡的管理密钥。
[in] cbAdminKey
pbAdminKey 参数指向的字节数组的大小(以字节为单位)。
[in, optional] pbAdminKcv
指向包含管理密钥检查值的字节数组的指针。 使用管理密钥加密零块时,密钥检查值定义为输出 BLOB 的前 3 个字节。 如果未提供密钥检查值,则管理密钥没有完整性检查。
[in] cbAdminKcv
pbAdminKcv 参数指向的字节数组的大小(以字节为单位)。
[in, optional] pbPuk
指向包含虚拟智能卡的 PIN 解锁密钥 (PUK) 值的字节数组的指针。 它通常是一个 ASCII 字符序列,最小长度为 8 个字符。 如果未提供 PUK,则会在没有 PUK 角色的情况下创建虚拟智能卡,而是通过管理员角色使用基于质询/响应的 PIN 重置。
[in] cbPuk
pbPuk 参数指向的字节数组的大小(以字节为单位)。
[in] pbPin
指向包含虚拟智能卡 PIN 值的字节数组的指针。 它通常是一个 ASCII 字符序列,最小长度为 8 个字符,最大长度为 127 个字符。
[in] cbPin
pbPin 参数指向的字节数组的大小(以字节为单位)。
[in] fGenerate
指示是否需要为虚拟智能卡预配基本 CSP 和智能卡 KSP 所需的所有必要文件。
[in, optional] pStatusCallback
指向 ITpmVirtualSmartCardManagerStatusCallback 接口的指针。 TPM 虚拟智能卡管理器使用此回调接口在创建虚拟智能卡期间传达进度或错误。 如果 pStatusCallback 参数为 NULL,则不会在操作完成之前向客户端报告任何进度。
[out] ppszInstanceId
指向指向 Unicode 缓冲区的指针的指针,用于接收创建的虚拟智能卡的实例 ID。
[out] pfNeedReboot
指向布尔值的指针,用于接收请求的操作是否需要重新启动计算机。
返回值
如果方法成功,则返回 S_OK。
如果 方法失败,则返回 Win32 错误代码。
注解
方法成功后,ppszInstanceId 参数指向包含新创建的 TPM 虚拟智能卡读取器的实例标识符的 Unicode 缓冲区。 使用完缓冲区后,调用方需要按照 COM 内存管理规则中的指示,通过调用 CoTaskMemFree 函数来释放客户端上的缓冲区。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2012 [仅限桌面应用] |
目标平台 | Windows |
标头 | tpmvscmgr.h |
Library | Vscmgr.lib |