[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