阅读759 返回首页    go 微软 go windows


动态调用winscard.dll里的SCardListReadersA不行,静态就可以。

静态调用就可以,动态调用就不行,动态调用返回6,没有看到关于返回6错误类型。代码如下,麻烦大家帮忙看看什么问题

参开:https://pcsclite.alioth.debian.org/api/group__API.html#ga93b07815789b3cf2629d439ecf20f0d9

LONG  ScardListReaders(SCARDCONTEXT hContext, 
LPSTR mszReader, 
LPDWORD pcchReaders)
{
ULONG status = 0;
HMODULE hModule = LoadLibraryA("winscard.dll");

if (hModule != NULL)
{
FUNADDR  ScardListReaders = (FUNADDR)GetProcAddress(hModule, "SCardListReadersA");

if (ScardListReaders != NULL)
{
status = ScardListReaders(hContext, NULL, NULL, pcchReaders);
//SCardListReaders(hContext, NULL, NULL, pcchReaders);静态调用
LPSTR mszReaders = (LPSTR)malloc(sizeof(char) * (*pcchReaders));
status = ScardListReaders(hContext,
NULL,
mszReaders,
pcchReaders);

char* p = mszReaders;
char* k = mszReader;

for (int i = 0; i < *pcchReaders; i++)
{
if (*p == '\0')
{
*k = '#';
}
else
{
*k = *p;
}

k++;
p++;
}

free(mszReaders);
}
}
else
{
status = -1;
}
FreeLibrary(hModule);

return status;
}



最后更新:2017-11-27 14:04:37

  上一篇:go win10管理员权限
  下一篇:go win10内部最新版本17046.1000更新不了,测试模式也开启不了