Here is another higher level API for the Resource Manager above what I showed the other day. It is turning out OK and works with multiple readers on the same machine. I will release the full source code in the next week once I test it out. Thanks Dave #ifndef ResourceManager_h #define ResourceManager_h #ifdef __cplusplus extern "C" { #endif /* * NAME: * ResourceManager.h - Copyright (C) 1998 David Corcoran * [EMAIL PROTECTED] * * DESCRIPTION: * This handles requests and library loading - basically the * core of the resource manager * * AUTHOR: * David Corcoran, 9/22/98 * * LICENSE: See file LICENSE. * */ #include "defines.h" /* Dynamically loads the specified CT-API library */ int Request_IFD_Handler( int *handle, int iTerm, char *id ); int Unlock_IFD_Handler( int handle ); int Close_IFD_Handler( int handle ); int Get_IFD_Status( void ); /* Resets the CT */ int IFD_ResetCT ( int iTerminal, // Terminal Number. unsigned char cUnit, // Slot Number. unsigned int *lr, // Length Atr. unsigned char *Atr // Atr. ); /* Powers the ICC and returns the Atr */ int IFD_RequestICC ( int iTerminal, // Terminal Number. unsigned char cUnit, // Slot Number. unsigned int *lr, // Length Atr. unsigned char *Atr // Returned Atr. ); /* Gets CT status such as Card in/out */ int IFD_GetStatus ( int iTerminal, // Terminal Number. int *iStatus // Status. ); /* Powers off the ICC and ejects if available */ int IFD_EjectICC ( int iTerminal // Terminal Number. ); /* The heart of the CT-API */ int IFD_Data ( unsigned int ctn, // Terminal Number. unsigned char *dad, // Destination. unsigned char *sad, // Source. unsigned int lc, // Length of Command. unsigned char *cmd, // Command. unsigned int *lr, // Length of Response. unsigned char *rsp // Response. ); /************ Some defines *****************************/ #ifndef MAX_RDRID_SIZE #define MAX_RDRID_SIZE (int)20 // Max reader id size. #endif #ifndef MAX_RDRID_SIZE #define MAX_RDRNAME_SIZE (int)50 // Max reader name size. #endif #ifndef MAX_RDRID_SIZE #define MAX_RDRLIB_SIZE (int)50 // Max reader libname size. #endif #define IFD_OK 0 // Everything is OK. #define IFD_NOT_FOUND -201 // Reader Library not Found. #define IFD_FILE_ERROR -202 // Config File not Found. #define IFD_ERROR -203 // General Error. #define IFD_LOCK -204 // Library Lock. #define IFD_UNLOCK -205 // Library Available. #define IFD_NOT_INITIALIZED -206 // Library Lock. #define IFD_INITIALIZED -207 // Library Available. #define IFD_CARD_IN -210 // Card Inserted. #define IFD_CARD_OUT -211 // Card Removed. #define IFD_CARD_NOPOWER -213 // Card Not Powered. #ifdef __cplusplus } #endif #endif -- ****************************************************************** David Corcoran Internet Security/Smartcards Work: School: 205 Industrial Blvd 2252 US Highway 52 West Apt C4 Sugar Land, TX 77478 West Lafayette, IN 47906 Suggestion: Use Linux, it is for IQ's higher than 95. Quote: If you can't make it work, at least make it look good. ~ Bill Gates ****************************************************************** *************************************************************** Linux Smart Card Developers - M.U.S.C.L.E. (Movement for the Use of Smart Cards in a Linux Environment) http://www.linuxnet.com/smartcard/index.html ***************************************************************