Add comments to modifications
This commit is contained in:
parent
2708a8de5c
commit
bbff8db75f
@ -1469,9 +1469,37 @@ WINSCARDAPI LONG WINAPI PCSC_SCardGetStatusChange_Internal(SCARDCONTEXT hContext
|
|||||||
rgReaderStates[i].dwCurrentState = states[j].dwCurrentState;
|
rgReaderStates[i].dwCurrentState = states[j].dwCurrentState;
|
||||||
rgReaderStates[i].cbAtr = states[j].cbAtr;
|
rgReaderStates[i].cbAtr = states[j].cbAtr;
|
||||||
CopyMemory(&(rgReaderStates[i].rgbAtr), &(states[j].rgbAtr), PCSC_MAX_ATR_SIZE);
|
CopyMemory(&(rgReaderStates[i].rgbAtr), &(states[j].rgbAtr), PCSC_MAX_ATR_SIZE);
|
||||||
|
/**
|
||||||
|
* Why we should interpret the results of pcsc-lite ScardGetStatusChange ?
|
||||||
|
* Should not we just act as a pass-through between the client and the remote smartcard subsystem ?
|
||||||
|
*/
|
||||||
|
#if 0
|
||||||
|
|
||||||
|
/* pcsc-lite puts an event count in the higher bits of dwEventState */
|
||||||
|
states[j].dwEventState &= 0xFFFF;
|
||||||
|
dwEventState = states[j].dwEventState & ~SCARD_STATE_CHANGED;
|
||||||
|
|
||||||
|
if (dwEventState != rgReaderStates[i].dwCurrentState)
|
||||||
|
{
|
||||||
|
rgReaderStates[i].dwEventState = states[j].dwEventState;
|
||||||
|
|
||||||
|
if (dwEventState & SCARD_STATE_PRESENT)
|
||||||
|
{
|
||||||
|
if (!(dwEventState & SCARD_STATE_EXCLUSIVE))
|
||||||
|
rgReaderStates[i].dwEventState |= SCARD_STATE_INUSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
stateChanged = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rgReaderStates[i].dwEventState = dwEventState;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rgReaderStates[i].dwCurrentState & SCARD_STATE_IGNORE)
|
||||||
|
rgReaderStates[i].dwEventState = SCARD_STATE_IGNORE;
|
||||||
|
#endif
|
||||||
rgReaderStates[i].dwEventState = states[j].dwEventState;
|
rgReaderStates[i].dwEventState = states[j].dwEventState;
|
||||||
/*if (rgReaderStates[i].dwCurrentState & SCARD_STATE_ATRMATCH)
|
|
||||||
rgReaderStates[i].dwEventState |= SCARD_STATE_ATRMATCH;*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
free(states);
|
free(states);
|
||||||
@ -1584,6 +1612,11 @@ WINSCARDAPI LONG WINAPI PCSC_SCardConnect_Internal(SCARDCONTEXT hContext,
|
|||||||
if (!szReaderPCSC)
|
if (!szReaderPCSC)
|
||||||
szReaderPCSC = (char*) szReader;
|
szReaderPCSC = (char*) szReader;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* As stated here : https://pcsclite.alioth.debian.org/api/group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5
|
||||||
|
* SCARD_PROTOCOL_UNDEFINED is valid for dwPreferredProtocols (only) if dwShareMode == SCARD_SHARE_DIRECT
|
||||||
|
* and allows to send control commands to the reader (with SCardControl()) even if a card is not present in the reader
|
||||||
|
*/
|
||||||
if (pcsc_dwShareMode == SCARD_SHARE_DIRECT && dwPreferredProtocols == SCARD_PROTOCOL_UNDEFINED)
|
if (pcsc_dwShareMode == SCARD_SHARE_DIRECT && dwPreferredProtocols == SCARD_PROTOCOL_UNDEFINED)
|
||||||
pcsc_dwPreferredProtocols = SCARD_PROTOCOL_UNDEFINED;
|
pcsc_dwPreferredProtocols = SCARD_PROTOCOL_UNDEFINED;
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user