Hello,
Here is the new C-style API that will be provided with the new release
upcoming early next week. It is identical to that on the Microsoft system
and all you have to do is #include <winscard.h> and link to libpcsc.
LONG SCardEstablishContext(
DWORD dwScope,
LPCVOID pvReserved1,
LPCVOID pvReserved2,
LPSCARDCONTEXT phContext
);
LONG SCardReleaseContext(
SCARDCONTEXT hContext
);
LONG SCardListReaderGroupsA(
SCARDCONTEXT hContext,
LPSTR mszGroups,
LPDWORD pcchGroups
);
LONG SCardListReaders(
SCARDCONTEXT hContext,
LPCSTR mszGroups,
LPSTR mszReaders,
LPDWORD pcchReaders
);
LONG SCardListCards(
SCARDCONTEXT hContext,
LPCBYTE pbAtr,
LPCGUID rgquidInterfaces,
DWORD cguidInterfaceCount,
LPSTR mszCards,
LPDWORD pcchCards
);
LONG SCardListInterfaces(
SCARDCONTEXT hContext,
LPCSTR szCard,
LPGUID pguidInterfaces,
LPDWORD pcguidInterfaces
);
LONG SCardGetProviderId(
SCARDCONTEXT hContext,
LPCSTR szCard,
LPGUID pguidProviderId
);
LONG SCardGetCardTypeProviderName(
SCARDCONTEXT hContext,
LPCSTR szCardName,
DWORD dwProviderId,
LPSTR szProvider,
LPDWORD pcchProvider
);
LONG SCardIntroduceReaderGroup(
SCARDCONTEXT hContext,
LPCSTR szGroupName
);
LONG SCardForgetReaderGroup(
SCARDCONTEXT hContext,
LPCSTR szGroupName
);
LONG SCardIntroduceReader(
SCARDCONTEXT hContext,
LPCSTR szReaderName,
LPCSTR szDeviceName
);
LONG SCardForgetReader(
SCARDCONTEXT hContext,
LPCSTR szReaderName
);
LONG SCardAddReaderToGroup(
SCARDCONTEXT hContext,
LPCSTR szReaderName,
LPCSTR szGroupName
);
LONG SCardRemoveReaderFromGroup(
SCARDCONTEXT hContext,
LPCSTR szReaderName,
LPCSTR szGroupName
);
LONG SCardIntroduceCardType(
SCARDCONTEXT hContext,
LPCSTR szCardName,
LPCGUID pguidPrimaryProvider,
LPCGUID rgguidInterfaces,
DWORD dwInterfaceCount,
LPCBYTE pbAtr,
LPCBYTE pbAtrMask,
DWORD cbAtrLen
);
LONG SCardSetCardTypeProviderName(
SCARDCONTEXT hContext,
LPCSTR szCardName,
DWORD dwProviderId,
LPCSTR szProvider
);
LONG SCardForgetCardType(
SCARDCONTEXT hContext,
LPCSTR szCardName
);
LONG SCardFreeMemory(
SCARDCONTEXT hContext,
LPVOID pvMem
);
LONG SCardLocateCards(
SCARDCONTEXT hContext,
LPCSTR mszCards,
LPSCARD_READERSTATE_A rgReaderStates,
DWORD cReaders
);
LONG SCardGetStatusChange(
SCARDCONTEXT hContext,
DWORD dwTimeout,
LPSCARD_READERSTATE_A rgReaderStates,
DWORD cReaders
);
LONG SCardCancel(
SCARDCONTEXT hContext
);
LONG SCardConnect(
SCARDCONTEXT hContext,
LPCSTR szReader,
DWORD dwShareMode,
DWORD dwPreferredProtocols,
LPSCARDHANDLE phCard,
LPDWORD pdwActiveProtocol
);
LONG SCardReconnect(
SCARDHANDLE hCard,
DWORD dwShareMode,
DWORD dwPreferredProtocols,
DWORD dwInitialization,
LPDWORD pdwActiveProtocol
);
LONG SCardDisconnect(
SCARDHANDLE hCard,
DWORD dwDisposition
);
LONG SCardBeginTransaction(
SCARDHANDLE hCard
);
LONG SCardEndTransaction(
SCARDHANDLE hCard,
DWORD dwDisposition
);
LONG SCardCancelTransaction(
SCARDHANDLE hCard
);
LONG SCardState(
SCARDHANDLE hCard,
LPDWORD pdwState,
LPDWORD pdwProtocol,
LPBYTE pbAtr,
LPDWORD pcbAtrLen
);
LONG SCardStatus(
SCARDHANDLE hCard,
LPSTR szReaderName,
LPDWORD pcchReaderLen,
LPDWORD pdwState,
LPDWORD pdwProtocol,
LPBYTE pbAtr,
LPDWORD pcbAtrLen
);
LONG SCardTransmit(
SCARDHANDLE hCard,
LPCSCARD_IO_REQUEST pioSendPci,
LPCBYTE pbSendBuffer,
DWORD cbSendLength,
LPSCARD_IO_REQUEST pioRecvPci,
LPBYTE pbRecvBuffer,
LPDWORD pcbRecvLength
);
LONG SCardControl(
SCARDHANDLE hCard,
DWORD dwControlCode,
LPCVOID lpInBuffer,
DWORD nInBufferSize,
LPVOID lpOutBuffer,
DWORD nOutBufferSize,
LPDWORD lpBytesReturned
);
LONG SCardGetAttrib(
SCARDHANDLE hCard,
DWORD dwAttrId,
LPBYTE pbAttr,
LPDWORD pcbAttrLen
);
LONG SCardSetAttrib(
SCARDHANDLE hCard,
DWORD dwAttrId,
LPCBYTE pbAttr,
DWORD cbAttrLen
);
*************************************************************
David Corcoran Internet Security/Smartcards
Home: Purdue University
2252 US Highway 52 West Department of Computer Science
West Lafayette, IN 47906 CERIAS/COAST Laboratory
Home: (765) 463-2455
Cell: (317) 514-4797
http://www.linuxnet.com
*************************************************************
***************************************************************
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
***************************************************************