Blame winpr/libwinpr/smartcard/test/TestSmartCardListReaders.c

Packit 1fb8d4
Packit 1fb8d4
#include <winpr/crt.h>
Packit 1fb8d4
#include <winpr/smartcard.h>
Packit 1fb8d4
Packit 1fb8d4
int TestSmartCardListReaders(int argc, char* argv[])
Packit 1fb8d4
{
Packit 1fb8d4
	LONG lStatus;
Packit 1fb8d4
	LPSTR pReader;
Packit 1fb8d4
	SCARDCONTEXT hSC;
Packit 1fb8d4
	LPSTR mszReaders = NULL;
Packit 1fb8d4
	DWORD cchReaders = SCARD_AUTOALLOCATE;
Packit 1fb8d4
Packit 1fb8d4
	lStatus = SCardEstablishContext(SCARD_SCOPE_USER, NULL, NULL, &hSC);
Packit 1fb8d4
Packit 1fb8d4
	if (lStatus != SCARD_S_SUCCESS)
Packit 1fb8d4
	{
Packit Service 5a9772
		printf("SCardEstablishContext failure: %s (0x%08" PRIX32 ")\n",
Packit Service 5a9772
		       SCardGetErrorString(lStatus), lStatus);
Packit 1fb8d4
		return 0;
Packit 1fb8d4
	}
Packit 1fb8d4
Packit Service 5a9772
	lStatus = SCardListReadersA(hSC, NULL, (LPSTR)&mszReaders, &cchReaders);
Packit 1fb8d4
Packit 1fb8d4
	if (lStatus != SCARD_S_SUCCESS)
Packit 1fb8d4
	{
Packit 1fb8d4
		if (lStatus == SCARD_E_NO_READERS_AVAILABLE)
Packit 1fb8d4
			printf("SCARD_E_NO_READERS_AVAILABLE\n");
Packit 1fb8d4
		else
Packit 1fb8d4
			return -1;
Packit 1fb8d4
	}
Packit 1fb8d4
	else
Packit 1fb8d4
	{
Packit 1fb8d4
		pReader = mszReaders;
Packit 1fb8d4
Packit 1fb8d4
		while (*pReader)
Packit 1fb8d4
		{
Packit 1fb8d4
			printf("Reader: %s\n", pReader);
Packit Service 5a9772
			pReader = pReader + strlen((CHAR*)pReader) + 1;
Packit 1fb8d4
		}
Packit 1fb8d4
Packit 1fb8d4
		lStatus = SCardFreeMemory(hSC, mszReaders);
Packit 1fb8d4
Packit 1fb8d4
		if (lStatus != SCARD_S_SUCCESS)
Packit 1fb8d4
			printf("Failed SCardFreeMemory\n");
Packit 1fb8d4
	}
Packit 1fb8d4
Packit 1fb8d4
	SCardReleaseContext(hSC);
Packit 1fb8d4
Packit 1fb8d4
	return 0;
Packit 1fb8d4
}