SCardControl 函数 (winscard.h)

使用 SCardControl 函数可以直接控制读取器。 在成功调用 SCardConnect 之后和成功调用 SCardDisconnect 之前,可以随时调用它。 对读取器 状态 的影响取决于控件代码。

语法

LONG SCardControl(
  [in]  SCARDHANDLE hCard,
  [in]  DWORD       dwControlCode,
  [in]  LPCVOID     lpInBuffer,
  [in]  DWORD       cbInBufferSize,
  [out] LPVOID      lpOutBuffer,
  [in]  DWORD       cbOutBufferSize,
  [out] LPDWORD     lpBytesReturned
);

参数

[in] hCard

SCardConnect 返回的引用值。

[in] dwControlCode

操作的控制代码。 此值标识要执行的特定操作。

[in] lpInBuffer

指向缓冲区的指针,该缓冲区包含执行操作所需的数据。 如果 dwControlCode 参数指定的操作不需要输入数据,则此参数可以为 NULL

[in] cbInBufferSize

lpInBuffer 指向的缓冲区的大小(以字节为单位)。

[out] lpOutBuffer

指向接收操作输出数据的缓冲区的指针。 如果 dwControlCode 参数指定的操作不生成输出数据,则此参数可以为 NULL

[in] cbOutBufferSize

lpOutBuffer 指向的缓冲区的大小(以字节为单位)。

[out] lpBytesReturned

指向 DWORD 的指针,该 DWORD 接收 lpOutBuffer 指向的缓冲区中存储的数据的大小(以字节为单位)。

返回值

此函数根据是成功还是失败返回不同的值。

返回代码 说明
Success
SCARD_S_SUCCESS。
失败
错误代码。 有关详细信息,请参阅 智能卡返回值

注解

SCardControl 函数是直接卡访问函数。 有关其他直接访问函数的详细信息,请参阅 直接卡访问函数

示例

以下示例发出一个控件代码。 该示例假定 hCardHandle 是从上一次调用 SCardConnect 时收到的有效句柄,而 dwControlCode 是以前初始化为有效控件代码的 DWORD 类型的变量。 此特定控制代码不需要输入数据,并且不需要输出数据。


lReturn = SCardControl( hCardHandle,
                        dwControlCode,
                        NULL,
                        0,
                        NULL,
                        0,
                        0 );
if ( SCARD_S_SUCCESS != lReturn )
    printf("Failed SCardControl\n");

要求

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

另请参阅

SCardConnect

SCardDisconnect