SCardGetReaderIconA 函数 (winscard.h)

SCardGetReaderIcon 函数获取给定读取器名称的智能卡读取器的图标。 此函数不会影响卡读取器的状态。

语法

LONG SCardGetReaderIconA(
  [in]      SCARDCONTEXT hContext,
  [in]      LPCSTR       szReaderName,
  [out]     LPBYTE       pbIcon,
  [in, out] LPDWORD      pcbIcon
);

参数

[in] hContext

标识查询的资源管理器上下文的句柄。 可以通过先前调用 SCardEstablishContext 函数来设置资源管理器上下文。 此参数不能为 NULL

[in] szReaderName

读取者名称。 可以通过调用 SCardListReaders 函数来获取此值。

[out] pbIcon

指向缓冲区的指针,该缓冲区包含从图标文件中读取的智能卡读取器图标的 BLOB。 如果此值为 NULL,则该函数将忽略 在参数中 提供的缓冲区长度,如果此参数不是 NULL,则写入本应返回至 该参数的缓冲区 长度,并返回一个成功代码。

[in, out] pcbIcon

pbIcon 缓冲区的长度(以字符为单位)。 此参数接收接收的属性的实际长度。 如果将缓冲区长度指定为SCARD_AUTOALLOCATE,则 pbIcon 将从指针转换为字节指针,并接收包含 属性的内存块的地址。 此内存块必须使用 SCardFreeMemory 函数解除分配。

返回值

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

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

注解

图标应为 256 × 256 像素,无 alpha 通道。

示例

PBYTE    pbIcon = NULL;
DWORD    cbIcon = SCARD_AUTOALLOCATE;
DWORD    i;
LONG     lReturn;
LPTSTR   szReaderName = "USB Smart Card Reader 0";

// Retrieve the reader's icon.
// hContext was set by a previous call to SCardEstablishContext.
lReturn = SCardGetReaderIcon(hContext,
                         szReaderName,
                         (PBYTE)&pbIcon,
                         &cbIcon);

if ( SCARD_S_SUCCESS != lReturn )
{
    printf("Failed SCardGetReaderIcon - %x\n", lReturn);
    // Take appropriate action.
}
else
{
    // Free the memory when done. 
    lReturn = SCardFreeMemory(hContext, pbIcon);
}

注意

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

要求

要求
最低受支持的客户端 Windows 8 [仅限桌面应用]
最低受支持的服务器 Windows Server 2012 [仅限桌面应用]
目标平台 Windows
标头 winscard.h