SCardEstablishContext 函数 (winscard.h)

SCardEstablishContext 函数 (执行数据库操作的范围) 建立资源管理器上下文

语法

LONG SCardEstablishContext(
  [in]  DWORD          dwScope,
  [in]  LPCVOID        pvReserved1,
  [in]  LPCVOID        pvReserved2,
  [out] LPSCARDCONTEXT phContext
);

参数

[in] dwScope

资源管理器上下文的范围。 此参数的取值可为下列值之一:

含义
SCARD_SCOPE_USER
数据库操作在用户的域中执行。
SCARD_SCOPE_SYSTEM
数据库操作在系统的域中执行。 调用应用程序必须对任何数据库操作具有适当的访问权限。

[in] pvReserved1

保留以供将来使用,必须为 NULL。 此参数将允许具有适当特权的管理应用程序代表其他用户进行操作。

[in] pvReserved2

保留以供将来使用,必须为 NULL

[out] phContext

已建立的 资源管理器上下文的句柄。 现在可以将此句柄提供给尝试在此上下文中执行工作的其他函数。

返回值

如果函数成功,该函数将返回SCARD_S_SUCCESS。

如果该函数失败,它将返回错误代码。 有关详细信息,请参阅 智能卡返回值

备注

数据库查询和管理功能可以使用 SCardEstablishContext 返回的上下文句柄。 有关详细信息,请参阅 智能卡数据库查询函数智能卡数据库管理功能

若要释放已建立的资源管理器上下文,请使用 SCardReleaseContext

如果客户端尝试在远程会话(例如终端服务器上运行的客户端会话)中执行智能卡操作,并且正在使用的操作系统不支持智能卡重定向,则此函数将返回ERROR_BROKEN_PIPE。

示例

以下示例建立资源管理器上下文。

SCARDCONTEXT    hSC;
LONG            lReturn;
// Establish the context.
lReturn = SCardEstablishContext(SCARD_SCOPE_USER,
                                NULL,
                                NULL,
                                &hSC);
if ( SCARD_S_SUCCESS != lReturn )
    printf("Failed SCardEstablishContext\n");
else
{
    // Use the context as needed. When done,
    // free the context by calling SCardReleaseContext.
    // ...
}

要求

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

另请参阅

SCardReleaseContext