SCardGetStatusChange/rgReaderStates changes for compatibility
with older and/or modified pcsc-lite releases. git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@135 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
0a77426aa0
commit
a327209319
|
@ -326,7 +326,8 @@ int sc_connect_card(struct sc_context *ctx,
|
|||
|
||||
rgReaderStates[0].szReader = ctx->readers[reader];
|
||||
rgReaderStates[0].dwCurrentState = SCARD_STATE_UNAWARE;
|
||||
rv = SCardGetStatusChange(ctx->pcsc_ctx, 0, rgReaderStates, 1);
|
||||
rgReaderStates[0].dwEventState = SCARD_STATE_UNAWARE;
|
||||
rv = SCardGetStatusChange(ctx->pcsc_ctx, SC_STATUS_TIMEOUT, rgReaderStates, 1);
|
||||
if (rv != 0) {
|
||||
error(ctx, "SCardGetStatusChange failed: %s\n", pcsc_stringify_error(rv));
|
||||
SC_FUNC_RETURN(ctx, 1, SC_ERROR_RESOURCE_MANAGER); /* FIXME */
|
||||
|
|
|
@ -33,4 +33,10 @@
|
|||
/* Internal use only */
|
||||
int sc_sw_to_errorcode(struct sc_card *card, int sw1, int sw2);
|
||||
|
||||
/* Default timeout value for SCardGetStatusChange */
|
||||
#ifndef SC_CUSTOM_STATUS_TIMEOUT
|
||||
#define SC_STATUS_TIMEOUT 0
|
||||
#else SC_STATUS_TIMEOUT SC_CUSTOM_STATUS_TIMEOUT
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -33,4 +33,10 @@
|
|||
/* Internal use only */
|
||||
int sc_sw_to_errorcode(struct sc_card *card, int sw1, int sw2);
|
||||
|
||||
/* Default timeout value for SCardGetStatusChange */
|
||||
#ifndef SC_CUSTOM_STATUS_TIMEOUT
|
||||
#define SC_STATUS_TIMEOUT 0
|
||||
#else SC_STATUS_TIMEOUT SC_CUSTOM_STATUS_TIMEOUT
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -79,7 +79,8 @@ int sc_detect_card(struct sc_context *ctx, int reader)
|
|||
|
||||
rgReaderStates[0].szReader = ctx->readers[reader];
|
||||
rgReaderStates[0].dwCurrentState = SCARD_STATE_UNAWARE;
|
||||
ret = SCardGetStatusChange(ctx->pcsc_ctx, 0, rgReaderStates, 1);
|
||||
rgReaderStates[0].dwEventState = SCARD_STATE_UNAWARE;
|
||||
ret = SCardGetStatusChange(ctx->pcsc_ctx, SC_STATUS_TIMEOUT, rgReaderStates, 1);
|
||||
if (ret != 0) {
|
||||
error(ctx, "SCardGetStatusChange failed: %s\n", pcsc_stringify_error(ret));
|
||||
SC_FUNC_RETURN(ctx, 1, -1); /* FIXME */
|
||||
|
@ -110,17 +111,17 @@ int sc_wait_for_card(struct sc_context *ctx, int reader, int timeout)
|
|||
SC_FUNC_RETURN(ctx, 1, SC_ERROR_NO_READERS_FOUND);
|
||||
for (i = 0; i < ctx->reader_count; i++) {
|
||||
rgReaderStates[i].szReader = ctx->readers[i];
|
||||
rgReaderStates[i].dwCurrentState =
|
||||
SCARD_STATE_EMPTY;
|
||||
rgReaderStates[i].dwCurrentState = SCARD_STATE_UNAWARE;
|
||||
rgReaderStates[i].dwEventState = SCARD_STATE_UNAWARE;
|
||||
}
|
||||
count = ctx->reader_count;
|
||||
} else {
|
||||
rgReaderStates[0].szReader = ctx->readers[reader];
|
||||
rgReaderStates[0].dwCurrentState = SCARD_STATE_EMPTY;
|
||||
rgReaderStates[0].dwCurrentState = SCARD_STATE_UNAWARE;
|
||||
rgReaderStates[0].dwEventState = SCARD_STATE_UNAWARE;
|
||||
count = 1;
|
||||
}
|
||||
ret = SCardGetStatusChange(ctx->pcsc_ctx, timeout, rgReaderStates,
|
||||
count);
|
||||
ret = SCardGetStatusChange(ctx->pcsc_ctx, timeout, rgReaderStates, count);
|
||||
if (ret != 0) {
|
||||
error(ctx, "SCardGetStatusChange failed: %s\n", pcsc_stringify_error(ret));
|
||||
SC_FUNC_RETURN(ctx, 1, -1);
|
||||
|
|
Loading…
Reference in New Issue