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 函数解除分配。

返回值

此函数返回不同的值,具体取决于它是成功还是失败。

返回代码 描述
成功
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 [仅限桌面应用]
目标平台 窗户
标头 winscard.h