WLog_Print(smartcard->log, WLOG_DEBUG, "EstablishContext_Call {");
- WLog_Print(smartcard->log, WLOG_DEBUG, "dwScope: 0x%08X", call->dwScope);
+ WLog_Print(smartcard->log, WLOG_DEBUG, "dwScope: %s (0x%08X)",
+ SCardGetScopeString(call->dwScope), call->dwScope);
WLog_Print(smartcard->log, WLOG_DEBUG, "}");
}
{
BYTE* pb;
UINT32 index;
+ char* szEventState;
+ char* szCurrentState;
LPSCARD_READERSTATEA readerState;
if (!WLog_IsLevelActive(smartcard->log, WLOG_DEBUG))
readerState = &call->rgReaderStates[index];
WLog_Print(smartcard->log, WLOG_DEBUG,
- "\t[%d]: szReader: %s dwCurrentState: 0x%08X dwEventState: 0x%08X cbAtr: %d",
- index, readerState->szReader, readerState->dwCurrentState,
- readerState->dwEventState, readerState->cbAtr);
+ "\t[%d]: szReader: %s cbAtr: %d",
+ index, readerState->szReader, readerState->cbAtr);
+
+ szCurrentState = SCardGetReaderStateString(readerState->dwCurrentState);
+ szEventState = SCardGetReaderStateString(readerState->dwEventState);
+
+ WLog_Print(smartcard->log, WLOG_DEBUG,
+ "\t[%d]: dwCurrentState: %s (0x%08X)",
+ index, szCurrentState, readerState->dwCurrentState);
+
+ WLog_Print(smartcard->log, WLOG_DEBUG,
+ "\t[%d]: dwEventState: %s (0x%08X)",
+ index, szEventState, readerState->dwEventState);
+
+ free(szCurrentState);
+ free(szEventState);
}
WLog_Print(smartcard->log, WLOG_DEBUG, "}");
{
BYTE* pb;
UINT32 index;
+ char* szEventState;
+ char* szCurrentState;
LPSCARD_READERSTATEW readerState;
if (!WLog_IsLevelActive(smartcard->log, WLOG_DEBUG))
ConvertFromUnicode(CP_UTF8, 0, readerState->szReader, -1, &szReaderA, 0, NULL, NULL);
WLog_Print(smartcard->log, WLOG_DEBUG,
- "\t[%d]: szReader: %s dwCurrentState: 0x%08X dwEventState: 0x%08X cbAtr: %d",
- index, szReaderA, readerState->dwCurrentState,
- readerState->dwEventState, readerState->cbAtr);
+ "\t[%d]: szReader: %s cbAtr: %d",
+ index, szReaderA, readerState->cbAtr);
+
+ szCurrentState = SCardGetReaderStateString(readerState->dwCurrentState);
+ szEventState = SCardGetReaderStateString(readerState->dwEventState);
+
+ WLog_Print(smartcard->log, WLOG_DEBUG,
+ "\t[%d]: dwCurrentState: %s (0x%08X)",
+ index, szCurrentState, readerState->dwCurrentState);
+
+ WLog_Print(smartcard->log, WLOG_DEBUG,
+ "\t[%d]: dwEventState: %s (0x%08X)",
+ index, szEventState, readerState->dwEventState);
+
+ free(szCurrentState);
+ free(szEventState);
free(szReaderA);
}
rgReaderState = &(ret->rgReaderStates[index]);
pb = (BYTE*) &rgReaderState->rgbAtr;
- szCurrentState = SCardGetStateString(rgReaderState->dwCurrentState);
- szEventState = SCardGetStateString(rgReaderState->dwEventState);
+ szCurrentState = SCardGetReaderStateString(rgReaderState->dwCurrentState);
+ szEventState = SCardGetReaderStateString(rgReaderState->dwEventState);
WLog_Print(smartcard->log, WLOG_DEBUG,
- "\t[%d]: dwCurrentState: 0x%08X (%s)",
- index, rgReaderState->dwCurrentState, szCurrentState);
+ "\t[%d]: dwCurrentState: %s (0x%08X)",
+ index, szCurrentState, rgReaderState->dwCurrentState);
WLog_Print(smartcard->log, WLOG_DEBUG,
- "\t[%d]: dwEventState: 0x%08X (%s)",
- index, rgReaderState->dwCurrentState, szEventState);
+ "\t[%d]: dwEventState: %s (0x%08X)",
+ index, szEventState, rgReaderState->dwEventState);
WLog_Print(smartcard->log, WLOG_DEBUG,
"\t[%d]: cbAtr: %d rgbAtr: "
BYTE* pb;
UINT32 index;
UINT32 length;
- char* szState = NULL;
char* mszReaderNamesA = NULL;
if (!WLog_IsLevelActive(smartcard->log, WLOG_DEBUG))
pb = (BYTE*) &ret->pbAtr;
- szState = SCardGetStateString(ret->dwState);
-
WLog_Print(smartcard->log, WLOG_DEBUG, "Status%s_Return {", unicode ? "W" : "A");
WLog_Print(smartcard->log, WLOG_DEBUG, "ReturnCode: 0x%08X", ret->ReturnCode);
WLog_Print(smartcard->log, WLOG_DEBUG, "dwState: %s (0x%08X) dwProtocol: %s (0x%08X)",
- szState, ret->dwState, SCardGetProtocolString(ret->dwProtocol), ret->dwProtocol);
+ SCardGetCardStateString(ret->dwState), ret->dwState,
+ SCardGetProtocolString(ret->dwProtocol), ret->dwProtocol);
WLog_Print(smartcard->log, WLOG_DEBUG, "cBytes: %d mszReaderNames: %s",
ret->cBytes, mszReaderNamesA);
"cbAtrLen: %d pbAtr: "
"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X"
"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
- index, ret->cbAtrLen,
+ ret->cbAtrLen,
pb[0], pb[1], pb[2], pb[3], pb[4], pb[5], pb[6], pb[7],
pb[8], pb[9], pb[10], pb[11], pb[12], pb[13], pb[14], pb[15],
pb[16], pb[17], pb[18], pb[19], pb[20], pb[21], pb[22], pb[23],
WLog_Print(smartcard->log, WLOG_DEBUG, "}");
free(mszReaderNamesA);
- free(szState);
}
UINT32 smartcard_unpack_get_attrib_call(SMARTCARD_DEVICE* smartcard, wStream* s, GetAttrib_Call* call)
return "SCARD_UNKNOWN_CARD";
}
-WINSCARDAPI char* WINAPI SCardGetStateString(DWORD dwEventState)
+WINSCARDAPI const char* WINAPI SCardGetScopeString(DWORD dwScope)
{
- char* szEventState = malloc(512);
+ switch (dwScope)
+ {
+ case SCARD_SCOPE_USER:
+ return "SCARD_SCOPE_USER";
+ break;
+ case SCARD_SCOPE_TERMINAL:
+ return "SCARD_SCOPE_TERMINAL";
+ break;
+ case SCARD_SCOPE_SYSTEM:
+ return "SCARD_SCOPE_SYSTEM";
+ break;
+ default:
+ return "SCARD_SCOPE_UNKNOWN";
+ break;
+ }
+
+ return "SCARD_SCOPE_UNKNOWN";
+}
+
+WINSCARDAPI const char* WINAPI SCardGetCardStateString(DWORD dwCardState)
+{
+ switch (dwCardState)
+ {
+ case SCARD_UNKNOWN:
+ return "SCARD_UNKNOWN";
+ break;
+ case SCARD_ABSENT:
+ return "SCARD_ABSENT";
+ break;
+ case SCARD_PRESENT:
+ return "SCARD_PRESENT";
+ break;
+ case SCARD_SWALLOWED:
+ return "SCARD_SWALLOWED";
+ break;
+ case SCARD_POWERED:
+ return "SCARD_POWERED";
+ break;
+ case SCARD_NEGOTIABLE:
+ return "SCARD_NEGOTIABLE";
+ break;
+ case SCARD_SPECIFIC:
+ return "SCARD_SPECIFIC";
+ break;
+ default:
+ return "SCARD_UNKNOWN";
+ break;
+ }
+
+ return "SCARD_UNKNOWN";
+}
+
+WINSCARDAPI char* WINAPI SCardGetReaderStateString(DWORD dwReaderState)
+{
+ char* szReaderState = malloc(512);
- if (!szEventState)
+ if (!szReaderState)
return NULL;
- szEventState[0] = '\0';
+ szReaderState[0] = '\0';
- if (dwEventState & SCARD_STATE_IGNORE)
+ if (dwReaderState & SCARD_STATE_IGNORE)
{
- if (szEventState[0])
- strcat(szEventState, " | ");
- strcat(szEventState, "SCARD_STATE_IGNORE");
+ if (szReaderState[0])
+ strcat(szReaderState, " | ");
+ strcat(szReaderState, "SCARD_STATE_IGNORE");
}
- if (dwEventState & SCARD_STATE_CHANGED)
+ if (dwReaderState & SCARD_STATE_CHANGED)
{
- if (szEventState[0])
- strcat(szEventState, " | ");
- strcat(szEventState, "SCARD_STATE_CHANGED");
+ if (szReaderState[0])
+ strcat(szReaderState, " | ");
+ strcat(szReaderState, "SCARD_STATE_CHANGED");
}
- if (dwEventState & SCARD_STATE_UNKNOWN)
+ if (dwReaderState & SCARD_STATE_UNKNOWN)
{
- if (szEventState[0])
- strcat(szEventState, " | ");
- strcat(szEventState, "SCARD_STATE_UNKNOWN");
+ if (szReaderState[0])
+ strcat(szReaderState, " | ");
+ strcat(szReaderState, "SCARD_STATE_UNKNOWN");
}
- if (dwEventState & SCARD_STATE_UNAVAILABLE)
+ if (dwReaderState & SCARD_STATE_UNAVAILABLE)
{
- if (szEventState[0])
- strcat(szEventState, " | ");
- strcat(szEventState, "SCARD_STATE_UNAVAILABLE");
+ if (szReaderState[0])
+ strcat(szReaderState, " | ");
+ strcat(szReaderState, "SCARD_STATE_UNAVAILABLE");
}
- if (dwEventState & SCARD_STATE_EMPTY)
+ if (dwReaderState & SCARD_STATE_EMPTY)
{
- if (szEventState[0])
- strcat(szEventState, " | ");
- strcat(szEventState, "SCARD_STATE_EMPTY");
+ if (szReaderState[0])
+ strcat(szReaderState, " | ");
+ strcat(szReaderState, "SCARD_STATE_EMPTY");
}
- if (dwEventState & SCARD_STATE_PRESENT)
+ if (dwReaderState & SCARD_STATE_PRESENT)
{
- if (szEventState[0])
- strcat(szEventState, " | ");
- strcat(szEventState, "SCARD_STATE_PRESENT");
+ if (szReaderState[0])
+ strcat(szReaderState, " | ");
+ strcat(szReaderState, "SCARD_STATE_PRESENT");
}
- if (dwEventState & SCARD_STATE_ATRMATCH)
+ if (dwReaderState & SCARD_STATE_ATRMATCH)
{
- if (szEventState[0])
- strcat(szEventState, " | ");
- strcat(szEventState, "SCARD_STATE_ATRMATCH");
+ if (szReaderState[0])
+ strcat(szReaderState, " | ");
+ strcat(szReaderState, "SCARD_STATE_ATRMATCH");
}
- if (dwEventState & SCARD_STATE_EXCLUSIVE)
+ if (dwReaderState & SCARD_STATE_EXCLUSIVE)
{
- if (szEventState[0])
- strcat(szEventState, " | ");
- strcat(szEventState, "SCARD_STATE_EXCLUSIVE");
+ if (szReaderState[0])
+ strcat(szReaderState, " | ");
+ strcat(szReaderState, "SCARD_STATE_EXCLUSIVE");
}
- if (dwEventState & SCARD_STATE_INUSE)
+ if (dwReaderState & SCARD_STATE_INUSE)
{
- if (szEventState[0])
- strcat(szEventState, " | ");
- strcat(szEventState, "SCARD_STATE_INUSE");
+ if (szReaderState[0])
+ strcat(szReaderState, " | ");
+ strcat(szReaderState, "SCARD_STATE_INUSE");
}
- if (dwEventState & SCARD_STATE_MUTE)
+ if (dwReaderState & SCARD_STATE_MUTE)
{
- if (szEventState[0])
- strcat(szEventState, " | ");
- strcat(szEventState, "SCARD_STATE_MUTE");
+ if (szReaderState[0])
+ strcat(szReaderState, " | ");
+ strcat(szReaderState, "SCARD_STATE_MUTE");
}
- if (dwEventState & SCARD_STATE_UNPOWERED)
+ if (dwReaderState & SCARD_STATE_UNPOWERED)
{
- if (szEventState[0])
- strcat(szEventState, " | ");
- strcat(szEventState, "SCARD_STATE_UNPOWERED");
+ if (szReaderState[0])
+ strcat(szReaderState, " | ");
+ strcat(szReaderState, "SCARD_STATE_UNPOWERED");
}
- if (!szEventState[0])
- strcat(szEventState, "SCARD_STATE_UNAWARE");
+ if (!szReaderState[0])
+ strcat(szReaderState, "SCARD_STATE_UNAWARE");
- return szEventState;
+ return szReaderState;
}
void InitializeSCardApiStubs(void)