public OperationResult GetCardReadersList(out string[] readersList)
{
var resourceManagerContext = EstablishContextIfNotEstablished();
readersList = new string[0];
OperationResult result;
int sizeOfReadersListStructure = 0;
int returnCode = WinscardWrapper.SCardListReaders(resourceManagerContext, null, null, ref sizeOfReadersListStructure);
if (returnCode != WinscardWrapper.SCARD_S_SUCCESS)
{
result = ReturnCodeManager.GetErrorMessage(returnCode);
}
else
{
// Fill reader list
var cardReadersList = new byte[sizeOfReadersListStructure];
returnCode = WinscardWrapper.SCardListReaders(resourceManagerContext, null, cardReadersList, ref sizeOfReadersListStructure);
if (returnCode != WinscardWrapper.SCARD_S_SUCCESS)
{
result = ReturnCodeManager.GetErrorMessage(returnCode);
}
else
{
// Convert to strings
readersList = ConvertReadersBuffer(cardReadersList);
result = ReturnCodeManager.GetErrorMessage(returnCode);
}
}
return result;
}