静态调用就可以,动态调用就不行,动态调用返回6,没有看到关于返回6错误类型。代码如下,麻烦大家帮忙看看什么问题
参开:http://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;
}