閱讀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更新不了,測試模式也開啟不了