char* p, *q;
char* tokens[64][2];
char* nameWinSCard;
+ char *checkAliasName;
/**
* pcsc-lite reader name format:
* name [interface] (serial) index slot
/**
* pcsc-lite appears to use an index number based on all readers,
* while WinSCard uses an index number based on readers of the same name.
- * Force an index number of 0 for now, fix later.
+ * Set index for this reader by checking if index is already used by another reader
+ * and incrementing until available index found.
*/
index = 0;
sprintf_s(nameWinSCard, size, "%.*s %d", length, p, index);
+
+ checkAliasName = PCSC_GetReaderNameFromAlias(nameWinSCard);
+ while ((checkAliasName != NULL) && (strcmp(checkAliasName, name) != 0))
+ {
+ index++;
+ sprintf_s(nameWinSCard, size, "%.*s %d", length, p, index);
+ checkAliasName = PCSC_GetReaderNameFromAlias(nameWinSCard);
+ }
+
return nameWinSCard;
}