[Pcsclite-cvs-commit] r2319 - in trunk/PCSC/src: . PCSC
Ludovic Rousseau
rousseau at alioth.debian.org
Tue Jan 9 16:27:56 CET 2007
Author: rousseau
Date: 2007-01-09 16:27:56 +0100 (Tue, 09 Jan 2007)
New Revision: 2319
Modified:
trunk/PCSC/src/PCSC/winscard.h
trunk/PCSC/src/winscard_clnt.c
Log:
implement SCardIsValidContext()
Modified: trunk/PCSC/src/PCSC/winscard.h
===================================================================
--- trunk/PCSC/src/PCSC/winscard.h 2007-01-08 08:01:04 UTC (rev 2318)
+++ trunk/PCSC/src/PCSC/winscard.h 2007-01-09 15:27:56 UTC (rev 2319)
@@ -32,6 +32,8 @@
PCSC_API LONG SCardReleaseContext(SCARDCONTEXT hContext);
+ PCSC_API LONG SCardIsValidContext(SCARDCONTEXT hContext);
+
PCSC_API LONG SCardSetTimeout(SCARDCONTEXT hContext, DWORD dwTimeout);
PCSC_API LONG SCardConnect(SCARDCONTEXT hContext,
Modified: trunk/PCSC/src/winscard_clnt.c
===================================================================
--- trunk/PCSC/src/winscard_clnt.c 2007-01-08 08:01:04 UTC (rev 2318)
+++ trunk/PCSC/src/winscard_clnt.c 2007-01-09 15:27:56 UTC (rev 2319)
@@ -3057,6 +3057,50 @@
}
/**
+ * @brief check if a \ref SCARDCONTEXT is valid.
+ *
+ * Call this function to determine whether a smart card context handle is still
+ * valid. After a smart card context handle has been set by \ref
+ * SCardEstablishContext, it may become not valid if the resource manager
+ * service has been shut down.
+ *
+ * @param[in] hContext Connection context to the PC/SC Resource Manager.
+ *
+ * @return Error code.
+ * @retval SCARD_S_SUCCESS Successful (\ref SCARD_S_SUCCESS)
+ * @retval SCARD_E_INVALID_HANDLE Invalid Handle (\ref SCARD_E_INVALID_HANDLE)
+ *
+ * @test
+ * @code
+ * SCARDCONTEXT hContext;
+ * LONG rv;
+ * ...
+ * rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext);
+ * rv = SCardIsValidContext(hContext);
+ * @endcode
+ */
+LONG SCardIsValidContext(SCARDCONTEXT hContext)
+{
+ LONG rv;
+ LONG dwContextIndex;
+
+ PROFILE_START
+
+ rv = SCARD_S_SUCCESS;
+
+ /*
+ * Make sure this context has been opened
+ */
+ dwContextIndex = SCardGetContextIndice(hContext);
+ if (dwContextIndex == -1)
+ rv = SCARD_E_INVALID_HANDLE;
+
+ PROFILE_END
+
+ return rv;
+}
+
+/**
* Functions for managing instances of SCardEstablishContext These functions
* keep track of Context handles and associate the blocking
* variable contextBlockStatus to an hContext
More information about the Pcsclite-cvs-commit
mailing list