Пример #1
0
LONG RFRemoveReader(const char *readerName, int port)
{
	char lpcStripReader[MAX_READERNAME];
	int i;

	if (readerName == NULL)
		return SCARD_E_INVALID_VALUE;

	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
	{
		if (sReadersContexts[i]->vHandle != 0)
		{
			strncpy(lpcStripReader,
				sReadersContexts[i]->readerState->readerName,
				sizeof(lpcStripReader));
			lpcStripReader[strlen(lpcStripReader) - 6] = 0;

			/* Compare only the significant part of the reader name */
			if ((strncmp(readerName, lpcStripReader, MAX_READERNAME - sizeof(" 00 00")) == 0)
				&& (port == sReadersContexts[i]->port))
			{
				/* remove the reader */
				UNREF_READER(sReadersContexts[i])
			}
		}
	}
LONG RFRemoveReader(const char *readerName, int port)
{
	char lpcStripReader[MAX_READERNAME];
	int i;
#ifdef FILTER_NAMES
	const char *extend;
#endif
	int extend_size = 0;

	if (readerName == NULL)
		return SCARD_E_INVALID_VALUE;

#ifdef FILTER_NAMES
	extend = getenv("PCSCLITE_FILTER_EXTEND_READER_NAMES");
	if (extend)
		extend_size = strlen(extend);
#endif

	for (i = 0; i < PCSCLITE_MAX_READERS_CONTEXTS; i++)
	{
		if (sReadersContexts[i]->vHandle != 0)
		{
			strncpy(lpcStripReader,
				sReadersContexts[i]->readerState->readerName,
				sizeof(lpcStripReader));
			lpcStripReader[strlen(lpcStripReader) - 6 - extend_size] = 0;

			/* Compare only the significant part of the reader name */
			if ((strncmp(readerName, lpcStripReader, MAX_READERNAME - sizeof(" 00 00")) == 0)
				&& (port == sReadersContexts[i]->port))
			{
				/* remove the reader */
				UNREF_READER(sReadersContexts[i])
			}
		}
	}