public ConnectResult Connect(string cardreaderName, Guid? idOverride = null)
{
var resourceManagerContext = EstablishContextIfNotEstablished();
IntPtr cardConnectionHandle;
int connectionProtocolType;
int returnCode = WinscardWrapper.SCardConnect(
resourceManagerContext,
cardreaderName,
WinscardWrapper.SCARD_SHARE_SHARED,
WinscardWrapper.SCARD_PROTOCOL_T0 | WinscardWrapper.SCARD_PROTOCOL_T1,
out cardConnectionHandle,
out connectionProtocolType);
var operationResult = ReturnCodeManager.GetErrorMessage(returnCode);
var connectResult = new ConnectResult(operationResult);
if (operationResult.IsSuccessful)
{
var newCard = new Card(
Thread.CurrentThread.ManagedThreadId,
cardConnectionHandle,
cardreaderName,
connectionProtocolType);
_cardConnectionManager.AddConnection(
idOverride ?? newCard.InternalUid,
Thread.CurrentThread.ManagedThreadId,
cardConnectionHandle);
connectResult.ConnectedCard = newCard;
}
return connectResult;
}