FreeCalypso > hg > freecalypso-hwlab
annotate pcsc-test/pcsc-test1.c @ 89:fb75855a74a9
fc-simtool: select response parsing: show number of records
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 24 Jan 2021 18:03:55 +0000 |
parents | 1d7d8615d628 |
children |
rev | line source |
---|---|
84
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 #include <sys/types.h> |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 #include <string.h> |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 #include <strings.h> |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 #include <stdio.h> |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 #include <stdlib.h> |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #include <pcsclite.h> |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <winscard.h> |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 main(argc, argv) |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 char **argv; |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 { |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 SCARDCONTEXT hContext; |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 LONG rv; |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 DWORD dwReaders; |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 LPSTR mszReaders; |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 char *cp; |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 if (rv != SCARD_S_SUCCESS) { |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 fprintf(stderr, "SCardEstablishContext: %s\n", |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 pcsc_stringify_error(rv)); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 exit(1); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 } |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 rv = SCardListReaders(hContext, NULL, NULL, &dwReaders); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 if (rv != SCARD_S_SUCCESS) { |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 fprintf(stderr, "SCardListReaders 1st call: %s\n", |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 pcsc_stringify_error(rv)); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 SCardReleaseContext(hContext); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 exit(1); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 } |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 printf("dwReaders = %u\n", (unsigned) dwReaders); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 if (dwReaders < 1) { |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 fprintf(stderr, |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 "error: dwReaders returned by SCardListReaders() is less than 1\n"); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 SCardReleaseContext(hContext); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 exit(1); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 } |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 mszReaders = malloc(dwReaders); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 if (!mszReaders) { |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 perror("malloc for readers list"); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 SCardReleaseContext(hContext); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 exit(1); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 } |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 *mszReaders = '\0'; |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 rv = SCardListReaders(hContext, NULL, mszReaders, &dwReaders); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 if (rv != SCARD_S_SUCCESS) { |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 fprintf(stderr, "SCardListReaders 2nd call: %s\n", |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 pcsc_stringify_error(rv)); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 SCardReleaseContext(hContext); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 exit(1); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 } |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 for (cp = mszReaders; *cp; ) { |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 printf("Reader: %s\n", cp); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 cp += strlen(cp) + 1; |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 } |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 printf("End of list of readers\n"); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 SCardReleaseContext(hContext); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 exit(0); |
1d7d8615d628
pcsc-test: some experiments to get pcsc-lite working
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 } |