diff --git a/channels/smartcard/client/smartcard_main.c b/channels/smartcard/client/smartcard_main.c index 97d9161db..e60926ab6 100644 --- a/channels/smartcard/client/smartcard_main.c +++ b/channels/smartcard/client/smartcard_main.c @@ -509,7 +509,7 @@ int DeviceServiceEntry(PDEVICE_SERVICE_ENTRY_POINTS pEntryPoints) smartcard->log = WLog_Get("com.freerdp.channel.smartcard.client"); - WLog_SetLogLevel(smartcard->log, WLOG_DEBUG); + //WLog_SetLogLevel(smartcard->log, WLOG_DEBUG); smartcard->IrpQueue = MessageQueue_New(NULL); smartcard->rgSCardContextList = ListDictionary_New(TRUE); diff --git a/winpr/libwinpr/smartcard/smartcard_inspect.c b/winpr/libwinpr/smartcard/smartcard_inspect.c index 2de783d1b..ada50b44a 100644 --- a/winpr/libwinpr/smartcard/smartcard_inspect.c +++ b/winpr/libwinpr/smartcard/smartcard_inspect.c @@ -22,11 +22,16 @@ #endif #include +#include +#include +#include #include #include #include "smartcard_inspect.h" +static wLog* g_Log = NULL; + static PSCardApiFunctionTable g_SCardApi = NULL; /** @@ -38,8 +43,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardEstablishContext(DWORD dwScope, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardEstablishContext { dwScope: %s (0x%08X)", + SCardGetScopeString(dwScope), dwScope); + status = g_SCardApi->pfnSCardEstablishContext(dwScope, pvReserved1, pvReserved2, phContext); + WLog_Print(g_Log, WLOG_DEBUG, "SCardEstablishContext } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -47,8 +58,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardReleaseContext(SCARDCONTEXT hContext) { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardReleaseContext { hContext: %p", hContext); + status = g_SCardApi->pfnSCardReleaseContext(hContext); + WLog_Print(g_Log, WLOG_DEBUG, "SCardReleaseContext } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -56,8 +72,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardIsValidContext(SCARDCONTEXT hContext) { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardIsValidContext { hContext: %p", hContext); + status = g_SCardApi->pfnSCardIsValidContext(hContext); + WLog_Print(g_Log, WLOG_DEBUG, "SCardIsValidContext } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -66,8 +87,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardListReaderGroupsA(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardListReaderGroupsA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardListReaderGroupsA(hContext, mszGroups, pcchGroups); + WLog_Print(g_Log, WLOG_DEBUG, "SCardListReaderGroupsA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -76,8 +102,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardListReaderGroupsW(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardListReaderGroupsW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardListReaderGroupsW(hContext, mszGroups, pcchGroups); + WLog_Print(g_Log, WLOG_DEBUG, "SCardListReaderGroupsW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -86,8 +117,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardListReadersA(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardListReadersA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardListReadersA(hContext, mszGroups, mszReaders, pcchReaders); + WLog_Print(g_Log, WLOG_DEBUG, "SCardListReadersA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -96,8 +132,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardListReadersW(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardListReadersW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardListReadersW(hContext, mszGroups, mszReaders, pcchReaders); + WLog_Print(g_Log, WLOG_DEBUG, "SCardListReadersW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -106,9 +147,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardListCardsA(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardListCardsA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardListCardsA(hContext, pbAtr, rgquidInterfaces, cguidInterfaceCount, mszCards, pcchCards); + WLog_Print(g_Log, WLOG_DEBUG, "SCardListCardsA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -117,9 +163,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardListCardsW(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardListCardsW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardListCardsW(hContext, pbAtr, rgquidInterfaces, cguidInterfaceCount, mszCards, pcchCards); + WLog_Print(g_Log, WLOG_DEBUG, "SCardListCardsW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -128,8 +179,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardListInterfacesA(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardListInterfacesA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardListInterfacesA(hContext, szCard, pguidInterfaces, pcguidInterfaces); + WLog_Print(g_Log, WLOG_DEBUG, "SCardListInterfacesA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -138,8 +194,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardListInterfacesW(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardListInterfacesW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardListInterfacesW(hContext, szCard, pguidInterfaces, pcguidInterfaces); + WLog_Print(g_Log, WLOG_DEBUG, "SCardListInterfacesW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -148,8 +209,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardGetProviderIdA(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetProviderIdA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardGetProviderIdA(hContext, szCard, pguidProviderId); + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetProviderIdA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -158,8 +224,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardGetProviderIdW(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetProviderIdW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardGetProviderIdW(hContext, szCard, pguidProviderId); + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetProviderIdW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -168,9 +239,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardGetCardTypeProviderNameA(SCARDCONTEXT hCont { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetCardTypeProviderNameA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardGetCardTypeProviderNameA(hContext, szCardName, dwProviderId, szProvider, pcchProvider); + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetCardTypeProviderNameA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -179,9 +255,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardGetCardTypeProviderNameW(SCARDCONTEXT hCont { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetCardTypeProviderNameW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardGetCardTypeProviderNameW(hContext, szCardName, dwProviderId, szProvider, pcchProvider); + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetCardTypeProviderNameW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -189,8 +270,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardIntroduceReaderGroupA(SCARDCONTEXT hContext { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardIntroduceReaderGroupA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardIntroduceReaderGroupA(hContext, szGroupName); + WLog_Print(g_Log, WLOG_DEBUG, "SCardIntroduceReaderGroupA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -198,8 +284,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardIntroduceReaderGroupW(SCARDCONTEXT hContext { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardIntroduceReaderGroupW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardIntroduceReaderGroupW(hContext, szGroupName); + WLog_Print(g_Log, WLOG_DEBUG, "SCardIntroduceReaderGroupW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -207,8 +298,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardForgetReaderGroupA(SCARDCONTEXT hContext, L { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardForgetReaderGroupA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardForgetReaderGroupA(hContext, szGroupName); + WLog_Print(g_Log, WLOG_DEBUG, "SCardForgetReaderGroupA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -216,8 +312,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardForgetReaderGroupW(SCARDCONTEXT hContext, L { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardForgetReaderGroupW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardForgetReaderGroupW(hContext, szGroupName); + WLog_Print(g_Log, WLOG_DEBUG, "SCardForgetReaderGroupW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -226,8 +327,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardIntroduceReaderA(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardIntroduceReaderA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardIntroduceReaderA(hContext, szReaderName, szDeviceName); + WLog_Print(g_Log, WLOG_DEBUG, "SCardIntroduceReaderA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -236,8 +342,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardIntroduceReaderW(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardIntroduceReaderW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardIntroduceReaderW(hContext, szReaderName, szDeviceName); + WLog_Print(g_Log, WLOG_DEBUG, "SCardIntroduceReaderW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -245,8 +356,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardForgetReaderA(SCARDCONTEXT hContext, LPCSTR { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardForgetReaderA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardForgetReaderA(hContext, szReaderName); + WLog_Print(g_Log, WLOG_DEBUG, "SCardForgetReaderA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -254,8 +370,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardForgetReaderW(SCARDCONTEXT hContext, LPCWST { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardForgetReaderW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardForgetReaderW(hContext, szReaderName); + WLog_Print(g_Log, WLOG_DEBUG, "SCardForgetReaderW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -264,8 +385,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardAddReaderToGroupA(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardAddReaderToGroupA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardAddReaderToGroupA(hContext, szReaderName, szGroupName); + WLog_Print(g_Log, WLOG_DEBUG, "SCardAddReaderToGroupA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -274,8 +400,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardAddReaderToGroupW(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardAddReaderToGroupW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardAddReaderToGroupW(hContext, szReaderName, szGroupName); + WLog_Print(g_Log, WLOG_DEBUG, "SCardAddReaderToGroupW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -284,8 +415,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardRemoveReaderFromGroupA(SCARDCONTEXT hContex { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardRemoveReaderFromGroupA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardRemoveReaderFromGroupA(hContext, szReaderName, szGroupName); + WLog_Print(g_Log, WLOG_DEBUG, "SCardRemoveReaderFromGroupA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -294,8 +430,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardRemoveReaderFromGroupW(SCARDCONTEXT hContex { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardRemoveReaderFromGroupW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardRemoveReaderFromGroupW(hContext, szReaderName, szGroupName); + WLog_Print(g_Log, WLOG_DEBUG, "SCardRemoveReaderFromGroupW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -305,9 +446,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardIntroduceCardTypeA(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardIntroduceCardTypeA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardIntroduceCardTypeA(hContext, szCardName, pguidPrimaryProvider, rgguidInterfaces, dwInterfaceCount, pbAtr, pbAtrMask, cbAtrLen); + WLog_Print(g_Log, WLOG_DEBUG, "SCardIntroduceCardTypeA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -317,9 +463,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardIntroduceCardTypeW(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardIntroduceCardTypeW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardIntroduceCardTypeW(hContext, szCardName, pguidPrimaryProvider, rgguidInterfaces, dwInterfaceCount, pbAtr, pbAtrMask, cbAtrLen); + WLog_Print(g_Log, WLOG_DEBUG, "SCardIntroduceCardTypeW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -328,8 +479,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardSetCardTypeProviderNameA(SCARDCONTEXT hCont { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardSetCardTypeProviderNameA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardSetCardTypeProviderNameA(hContext, szCardName, dwProviderId, szProvider); + WLog_Print(g_Log, WLOG_DEBUG, "SCardSetCardTypeProviderNameA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -338,8 +494,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardSetCardTypeProviderNameW(SCARDCONTEXT hCont { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardSetCardTypeProviderNameA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardSetCardTypeProviderNameW(hContext, szCardName, dwProviderId, szProvider); + WLog_Print(g_Log, WLOG_DEBUG, "SCardSetCardTypeProviderNameW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -347,8 +508,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardForgetCardTypeA(SCARDCONTEXT hContext, LPCS { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardForgetCardTypeA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardForgetCardTypeA(hContext, szCardName); + WLog_Print(g_Log, WLOG_DEBUG, "SCardForgetCardTypeA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -356,8 +522,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardForgetCardTypeW(SCARDCONTEXT hContext, LPCW { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardForgetCardTypeW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardForgetCardTypeW(hContext, szCardName); + WLog_Print(g_Log, WLOG_DEBUG, "SCardForgetCardTypeW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -365,8 +536,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardFreeMemory(SCARDCONTEXT hContext, LPCVOID p { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardFreeMemory { hContext: %p", hContext); + status = g_SCardApi->pfnSCardFreeMemory(hContext, pvMem); + WLog_Print(g_Log, WLOG_DEBUG, "SCardFreeMemory } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -374,14 +550,22 @@ WINSCARDAPI HANDLE WINAPI Inspect_SCardAccessStartedEvent(void) { HANDLE hEvent; + WLog_Print(g_Log, WLOG_DEBUG, "SCardAccessStartedEvent {"); + hEvent = g_SCardApi->pfnSCardAccessStartedEvent(); + WLog_Print(g_Log, WLOG_DEBUG, "SCardAccessStartedEvent } hEvent: %p", hEvent); + return hEvent; } WINSCARDAPI void WINAPI Inspect_SCardReleaseStartedEvent(void) { + WLog_Print(g_Log, WLOG_DEBUG, "SCardReleaseStartedEvent {"); + g_SCardApi->pfnSCardReleaseStartedEvent(); + + WLog_Print(g_Log, WLOG_DEBUG, "SCardReleaseStartedEvent }"); } WINSCARDAPI LONG WINAPI Inspect_SCardLocateCardsA(SCARDCONTEXT hContext, @@ -389,8 +573,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardLocateCardsA(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardLocateCardsA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardLocateCardsA(hContext, mszCards, rgReaderStates, cReaders); + WLog_Print(g_Log, WLOG_DEBUG, "SCardLocateCardsA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -399,8 +588,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardLocateCardsW(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardLocateCardsW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardLocateCardsW(hContext, mszCards, rgReaderStates, cReaders); + WLog_Print(g_Log, WLOG_DEBUG, "SCardLocateCardsW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -409,8 +603,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardLocateCardsByATRA(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardLocateCardsByATRA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardLocateCardsByATRA(hContext, rgAtrMasks, cAtrs, rgReaderStates, cReaders); + WLog_Print(g_Log, WLOG_DEBUG, "SCardLocateCardsByATRA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -419,8 +618,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardLocateCardsByATRW(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardLocateCardsByATRW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardLocateCardsByATRW(hContext, rgAtrMasks, cAtrs, rgReaderStates, cReaders); + WLog_Print(g_Log, WLOG_DEBUG, "SCardLocateCardsByATRW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -429,8 +633,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardGetStatusChangeA(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetStatusChangeA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardGetStatusChangeA(hContext, dwTimeout, rgReaderStates, cReaders); + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetStatusChangeA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -439,8 +648,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardGetStatusChangeW(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetStatusChangeW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardGetStatusChangeW(hContext, dwTimeout, rgReaderStates, cReaders); + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetStatusChangeW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -448,8 +662,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardCancel(SCARDCONTEXT hContext) { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardCancel { hContext: %p", hContext); + status = g_SCardApi->pfnSCardCancel(hContext); + WLog_Print(g_Log, WLOG_DEBUG, "SCardCancel } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -459,9 +678,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardConnectA(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardConnectA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardConnectA(hContext, szReader, dwShareMode, dwPreferredProtocols, phCard, pdwActiveProtocol); + WLog_Print(g_Log, WLOG_DEBUG, "SCardConnectA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -471,9 +695,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardConnectW(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardConnectW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardConnectW(hContext, szReader, dwShareMode, dwPreferredProtocols, phCard, pdwActiveProtocol); + WLog_Print(g_Log, WLOG_DEBUG, "SCardConnectW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -482,9 +711,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardReconnect(SCARDHANDLE hCard, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardReconnect { hCard: %p", hCard); + status = g_SCardApi->pfnSCardReconnect(hCard, dwShareMode, dwPreferredProtocols, dwInitialization, pdwActiveProtocol); + WLog_Print(g_Log, WLOG_DEBUG, "SCardReconnect } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -492,8 +726,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardDisconnect(SCARDHANDLE hCard, DWORD dwDispo { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardDisconnect { hCard: %p", hCard); + status = g_SCardApi->pfnSCardDisconnect(hCard, dwDisposition); + WLog_Print(g_Log, WLOG_DEBUG, "SCardDisconnect } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -501,8 +740,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardBeginTransaction(SCARDHANDLE hCard) { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardBeginTransaction { hCard: %p", hCard); + status = g_SCardApi->pfnSCardBeginTransaction(hCard); + WLog_Print(g_Log, WLOG_DEBUG, "SCardBeginTransaction } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -510,8 +754,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardEndTransaction(SCARDHANDLE hCard, DWORD dwD { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardEndTransaction { hCard: %p", hCard); + status = g_SCardApi->pfnSCardEndTransaction(hCard, dwDisposition); + WLog_Print(g_Log, WLOG_DEBUG, "SCardEndTransaction } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -519,8 +768,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardCancelTransaction(SCARDHANDLE hCard) { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardCancelTransaction { hCard: %p", hCard); + status = g_SCardApi->pfnSCardCancelTransaction(hCard); + WLog_Print(g_Log, WLOG_DEBUG, "SCardCancelTransaction } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -529,8 +783,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardState(SCARDHANDLE hCard, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardState { hCard: %p", hCard); + status = g_SCardApi->pfnSCardState(hCard, pdwState, pdwProtocol, pbAtr, pcbAtrLen); + WLog_Print(g_Log, WLOG_DEBUG, "SCardState } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -540,9 +799,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardStatusA(SCARDHANDLE hCard, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardStatusA { hCard: %p", hCard); + status = g_SCardApi->pfnSCardStatusA(hCard, mszReaderNames, pcchReaderLen, pdwState, pdwProtocol, pbAtr, pcbAtrLen); + WLog_Print(g_Log, WLOG_DEBUG, "SCardStatusA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -552,9 +816,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardStatusW(SCARDHANDLE hCard, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardStatusW { hCard: %p", hCard); + status = g_SCardApi->pfnSCardStatusW(hCard, mszReaderNames, pcchReaderLen, pdwState, pdwProtocol, pbAtr, pcbAtrLen); + WLog_Print(g_Log, WLOG_DEBUG, "SCardStatusW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -564,9 +833,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardTransmit(SCARDHANDLE hCard, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardTransmit { hCard: %p", hCard); + status = g_SCardApi->pfnSCardTransmit(hCard, pioSendPci, pbSendBuffer, cbSendLength, pioRecvPci, pbRecvBuffer, pcbRecvLength); + WLog_Print(g_Log, WLOG_DEBUG, "SCardTransmit } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -574,8 +848,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardGetTransmitCount(SCARDHANDLE hCard, LPDWORD { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetTransmitCount { hCard: %p", hCard); + status = g_SCardApi->pfnSCardGetTransmitCount(hCard, pcTransmitCount); + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetTransmitCount } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -585,9 +864,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardControl(SCARDHANDLE hCard, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardControl { hCard: %p", hCard); + status = g_SCardApi->pfnSCardControl(hCard, dwControlCode, lpInBuffer, cbInBufferSize, lpOutBuffer, cbOutBufferSize, lpBytesReturned); + WLog_Print(g_Log, WLOG_DEBUG, "SCardControl } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -595,8 +879,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardGetAttrib(SCARDHANDLE hCard, DWORD dwAttrId { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetAttrib { hCard: %p", hCard); + status = g_SCardApi->pfnSCardGetAttrib(hCard, dwAttrId, pbAttr, pcbAttrLen); + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetAttrib } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -604,8 +893,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardSetAttrib(SCARDHANDLE hCard, DWORD dwAttrId { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardSetAttrib { hCard: %p", hCard); + status = g_SCardApi->pfnSCardSetAttrib(hCard, dwAttrId, pbAttr, cbAttrLen); + WLog_Print(g_Log, WLOG_DEBUG, "SCardSetAttrib } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -613,8 +907,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardUIDlgSelectCardA(LPOPENCARDNAMEA_EX pDlgStr { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardUIDlgSelectCardA {"); + status = g_SCardApi->pfnSCardUIDlgSelectCardA(pDlgStruc); + WLog_Print(g_Log, WLOG_DEBUG, "SCardUIDlgSelectCardA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -622,8 +921,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardUIDlgSelectCardW(LPOPENCARDNAMEW_EX pDlgStr { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardUIDlgSelectCardW {"); + status = g_SCardApi->pfnSCardUIDlgSelectCardW(pDlgStruc); + WLog_Print(g_Log, WLOG_DEBUG, "SCardUIDlgSelectCardW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -631,8 +935,13 @@ WINSCARDAPI LONG WINAPI Inspect_GetOpenCardNameA(LPOPENCARDNAMEA pDlgStruc) { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "GetOpenCardNameA {"); + status = g_SCardApi->pfnGetOpenCardNameA(pDlgStruc); + WLog_Print(g_Log, WLOG_DEBUG, "GetOpenCardNameA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -640,8 +949,13 @@ WINSCARDAPI LONG WINAPI Inspect_GetOpenCardNameW(LPOPENCARDNAMEW pDlgStruc) { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "GetOpenCardNameW {"); + status = g_SCardApi->pfnGetOpenCardNameW(pDlgStruc); + WLog_Print(g_Log, WLOG_DEBUG, "GetOpenCardNameW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -649,8 +963,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardDlgExtendedError(void) { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardDlgExtendedError {"); + status = g_SCardApi->pfnSCardDlgExtendedError(); + WLog_Print(g_Log, WLOG_DEBUG, "SCardDlgExtendedError } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -659,9 +978,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardReadCacheA(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardReadCacheA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardReadCacheA(hContext, CardIdentifier, FreshnessCounter, LookupName, Data, DataLen); + WLog_Print(g_Log, WLOG_DEBUG, "SCardReadCacheA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -670,9 +994,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardReadCacheW(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardReadCacheW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardReadCacheW(hContext, CardIdentifier, FreshnessCounter, LookupName, Data, DataLen); + WLog_Print(g_Log, WLOG_DEBUG, "SCardReadCacheW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -681,9 +1010,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardWriteCacheA(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardWriteCacheA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardWriteCacheA(hContext, CardIdentifier, FreshnessCounter, LookupName, Data, DataLen); + WLog_Print(g_Log, WLOG_DEBUG, "SCardWriteCacheA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -692,9 +1026,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardWriteCacheW(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardWriteCacheW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardWriteCacheW(hContext, CardIdentifier, FreshnessCounter, LookupName, Data, DataLen); + WLog_Print(g_Log, WLOG_DEBUG, "SCardWriteCacheW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -703,8 +1042,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardGetReaderIconA(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetReaderIconA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardGetReaderIconA(hContext, szReaderName, pbIcon, pcbIcon); + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetReaderIconA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -713,8 +1057,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardGetReaderIconW(SCARDCONTEXT hContext, { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetReaderIconW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardGetReaderIconW(hContext, szReaderName, pbIcon, pcbIcon); + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetReaderIconW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -722,8 +1071,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardGetDeviceTypeIdA(SCARDCONTEXT hContext, LPC { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetDeviceTypeIdA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardGetDeviceTypeIdA(hContext, szReaderName, pdwDeviceTypeId); + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetDeviceTypeIdA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -731,8 +1085,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardGetDeviceTypeIdW(SCARDCONTEXT hContext, LPC { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetDeviceTypeIdW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardGetDeviceTypeIdW(hContext, szReaderName, pdwDeviceTypeId); + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetDeviceTypeIdW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -741,9 +1100,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardGetReaderDeviceInstanceIdA(SCARDCONTEXT hCo { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetReaderDeviceInstanceIdA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardGetReaderDeviceInstanceIdA(hContext, szReaderName, szDeviceInstanceId, pcchDeviceInstanceId); + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetReaderDeviceInstanceIdA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -752,9 +1116,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardGetReaderDeviceInstanceIdW(SCARDCONTEXT hCo { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetReaderDeviceInstanceIdW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardGetReaderDeviceInstanceIdW(hContext, szReaderName, szDeviceInstanceId, pcchDeviceInstanceId); + WLog_Print(g_Log, WLOG_DEBUG, "SCardGetReaderDeviceInstanceIdW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -763,9 +1132,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardListReadersWithDeviceInstanceIdA(SCARDCONTE { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardListReadersWithDeviceInstanceIdA { hContext: %p", hContext); + status = g_SCardApi->pfnSCardListReadersWithDeviceInstanceIdA(hContext, szDeviceInstanceId, mszReaders, pcchReaders); + WLog_Print(g_Log, WLOG_DEBUG, "SCardListReadersWithDeviceInstanceIdA } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -774,9 +1148,14 @@ WINSCARDAPI LONG WINAPI Inspect_SCardListReadersWithDeviceInstanceIdW(SCARDCONTE { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardListReadersWithDeviceInstanceIdW { hContext: %p", hContext); + status = g_SCardApi->pfnSCardListReadersWithDeviceInstanceIdW(hContext, szDeviceInstanceId, mszReaders, pcchReaders); + WLog_Print(g_Log, WLOG_DEBUG, "SCardListReadersWithDeviceInstanceIdW } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -784,8 +1163,13 @@ WINSCARDAPI LONG WINAPI Inspect_SCardAudit(SCARDCONTEXT hContext, DWORD dwEvent) { LONG status; + WLog_Print(g_Log, WLOG_DEBUG, "SCardAudit { hContext: %p", hContext); + status = g_SCardApi->pfnSCardAudit(hContext, dwEvent); + WLog_Print(g_Log, WLOG_DEBUG, "SCardAudit } status: %s (0x%08X)", + SCardGetErrorString(status), status); + return status; } @@ -876,8 +1260,44 @@ SCardApiFunctionTable Inspect_SCardApiFunctionTable = Inspect_SCardAudit /* SCardAudit */ }; +#ifndef _WIN32 +#define SMARTCARD_INSPECT_FILEPATH "/tmp" +#else +#define SMARTCARD_INSPECT_FILEPATH "C:\\Windows\\Temp" +#endif + +void Inspect_InitLog() +{ + wLogLayout* layout; + wLogFileAppender* appender; + const char* filepath = SMARTCARD_INSPECT_FILEPATH; + + if (g_Log) + return; + + g_Log = WLog_Get("WinSCard"); + + WLog_SetLogLevel(g_Log, WLOG_DEBUG); + WLog_SetLogAppenderType(g_Log, WLOG_APPENDER_FILE); + appender = (wLogFileAppender*) WLog_GetLogAppender(g_Log); + + if (!PathFileExistsA(filepath)) + CreateDirectoryA(filepath, NULL); + + WLog_FileAppender_SetOutputFileName(g_Log, appender, "WinSCard.txt"); + WLog_FileAppender_SetOutputFilePath(g_Log, appender, filepath); + + layout = WLog_GetLogLayout(g_Log); + WLog_Layout_SetPrefixFormat(g_Log, layout, "[%mn] "); + + WLog_OpenAppender(g_Log); +} + PSCardApiFunctionTable Inspect_RegisterSCardApi(PSCardApiFunctionTable pSCardApi) { g_SCardApi = pSCardApi; + + Inspect_InitLog(); + return &Inspect_SCardApiFunctionTable; } diff --git a/winpr/libwinpr/utils/wlog/Layout.c b/winpr/libwinpr/utils/wlog/Layout.c index 9e13e480a..7656316f2 100644 --- a/winpr/libwinpr/utils/wlog/Layout.c +++ b/winpr/libwinpr/utils/wlog/Layout.c @@ -237,21 +237,23 @@ wLogLayout* WLog_GetLogLayout(wLog* log) void WLog_Layout_SetPrefixFormat(wLog* log, wLogLayout* layout, const char* format) { if (layout->FormatString) + { free(layout->FormatString); + layout->FormatString = NULL; + } - layout->FormatString = _strdup(format); + if (format) + layout->FormatString = _strdup(format); } wLogLayout* WLog_Layout_New(wLog* log) { wLogLayout* layout; - layout = (wLogLayout*) malloc(sizeof(wLogLayout)); + layout = (wLogLayout*) calloc(1, sizeof(wLogLayout)); if (layout) { - ZeroMemory(layout, sizeof(wLogLayout)); - layout->FormatString = _strdup("[%lv][%mn] - "); } @@ -263,7 +265,10 @@ void WLog_Layout_Free(wLog* log, wLogLayout* layout) if (layout) { if (layout->FormatString) + { free(layout->FormatString); + layout->FormatString = NULL; + } free(layout); }