pcsc-lite 2.3.0
winscard_msg.h File Reference

This defines some structures and #defines to be used over the transport layer. More...

#include <stdint.h>
#include "pcsclite.h"
#include "wintypes.h"

Go to the source code of this file.

Data Structures

struct  version_struct
 Information transmitted in CMD_VERSION Messages. More...
 
struct  rxHeader
 header structure for client/server message data exchange. More...
 
struct  client_struct
 
struct  wait_reader_state_change
 Information contained in CMD_WAIT_READER_STATE_CHANGE Messages. More...
 
struct  establish_struct
 Information contained in SCARD_ESTABLISH_CONTEXT Messages. More...
 
struct  release_struct
 Information contained in SCARD_RELEASE_CONTEXT Messages. More...
 
struct  connect_struct
 contained in SCARD_CONNECT Messages. More...
 
struct  reconnect_struct
 contained in SCARD_RECONNECT Messages. More...
 
struct  disconnect_struct
 contained in SCARD_DISCONNECT Messages. More...
 
struct  begin_struct
 contained in SCARD_BEGIN_TRANSACTION Messages. More...
 
struct  end_struct
 contained in SCARD_END_TRANSACTION Messages. More...
 
struct  cancel_struct
 contained in SCARD_CANCEL Messages. More...
 
struct  status_struct
 contained in SCARD_STATUS Messages. More...
 
struct  transmit_struct
 contained in SCARD_TRANSMIT Messages. More...
 
struct  control_struct
 contained in SCARD_CONTROL Messages. More...
 
struct  getset_struct
 contained in SCARD_GET_ATTRIB and Messages. More...
 
struct  get_reader_events
 

Macros

#define PROTOCOL_VERSION_MAJOR   4
 Major version of the current message protocol.
 
#define PROTOCOL_VERSION_MINOR   5
 Minor version of the current message protocol.
 

Enumerations

enum  pcsc_msg_commands {
  CMD_ENUM_FIRST ,
  SCARD_ESTABLISH_CONTEXT = 0x01 ,
  SCARD_RELEASE_CONTEXT = 0x02 ,
  SCARD_LIST_READERS = 0x03 ,
  SCARD_CONNECT = 0x04 ,
  SCARD_RECONNECT = 0x05 ,
  SCARD_DISCONNECT = 0x06 ,
  SCARD_BEGIN_TRANSACTION = 0x07 ,
  SCARD_END_TRANSACTION = 0x08 ,
  SCARD_TRANSMIT = 0x09 ,
  SCARD_CONTROL = 0x0A ,
  SCARD_STATUS = 0x0B ,
  SCARD_GET_STATUS_CHANGE = 0x0C ,
  SCARD_CANCEL = 0x0D ,
  SCARD_CANCEL_TRANSACTION = 0x0E ,
  SCARD_GET_ATTRIB = 0x0F ,
  SCARD_SET_ATTRIB = 0x10 ,
  CMD_VERSION = 0x11 ,
  CMD_GET_READERS_STATE = 0x12 ,
  CMD_WAIT_READER_STATE_CHANGE = 0x13 ,
  CMD_STOP_WAITING_READER_STATE_CHANGE = 0x14 ,
  CMD_GET_READER_EVENTS = 0x15 ,
  CMD_ENUM_LAST
}
 Commands available to use in the field sharedSegmentMsg.command. More...
 

Functions

char * getSocketName (void)
 
int32_t ClientSetupSession (uint32_t *)
 Prepares a communication channel for the client to talk to the server.
 
void ClientCloseSession (uint32_t)
 Closes the socket used by the client to communicate with the server.
 
LONG MessageReceiveTimeout (uint32_t command, void *buffer, uint64_t buffer_size, int32_t filedes, long timeOut)
 Called by the Client to get the response from the server or vice-versa.
 
LONG MessageSendWithHeader (uint32_t command, uint32_t dwClientID, uint64_t size, void *data)
 Wrapper for the MessageSend() function.
 
LONG MessageSend (void *buffer, uint64_t buffer_size, int32_t filedes)
 Sends a menssage from client to server or vice-versa.
 
LONG MessageReceive (void *buffer, uint64_t buffer_size, int32_t filedes)
 Called by the Client to get the response from the server or vice-versa.
 

Detailed Description

This defines some structures and #defines to be used over the transport layer.

Definition in file winscard_msg.h.

Macro Definition Documentation

◆ PROTOCOL_VERSION_MAJOR

#define PROTOCOL_VERSION_MAJOR   4

Major version of the current message protocol.

Definition at line 50 of file winscard_msg.h.

◆ PROTOCOL_VERSION_MINOR

#define PROTOCOL_VERSION_MINOR   5

Minor version of the current message protocol.

Definition at line 52 of file winscard_msg.h.

Enumeration Type Documentation

◆ pcsc_msg_commands

Commands available to use in the field sharedSegmentMsg.command.

Enumerator
SCARD_ESTABLISH_CONTEXT 

used by SCardEstablishContext()

SCARD_RELEASE_CONTEXT 

used by SCardReleaseContext()

SCARD_LIST_READERS 

used by SCardListReaders()

SCARD_CONNECT 

used by SCardConnect()

SCARD_RECONNECT 

used by SCardReconnect()

SCARD_DISCONNECT 

used by SCardDisconnect()

SCARD_BEGIN_TRANSACTION 

used by SCardBeginTransaction()

SCARD_END_TRANSACTION 

used by SCardEndTransaction()

SCARD_TRANSMIT 

used by SCardTransmit()

SCARD_CONTROL 

used by SCardControl()

SCARD_STATUS 

used by SCardStatus()

SCARD_GET_STATUS_CHANGE 

not used

SCARD_CANCEL 

used by SCardCancel()

SCARD_CANCEL_TRANSACTION 

not used

SCARD_GET_ATTRIB 

used by SCardGetAttrib()

SCARD_SET_ATTRIB 

used by SCardSetAttrib()

CMD_VERSION 

get the client/server protocol version

CMD_GET_READERS_STATE 

get the readers state

CMD_WAIT_READER_STATE_CHANGE 

wait for a reader state change

CMD_STOP_WAITING_READER_STATE_CHANGE 

stop waiting for a reader state change

CMD_GET_READER_EVENTS 

get the number of reader events

Definition at line 76 of file winscard_msg.h.

Function Documentation

◆ ClientCloseSession()

void ClientCloseSession ( uint32_t dwClientID)

Closes the socket used by the client to communicate with the server.

Parameters
[in]dwClientIDClient socket handle to be closed.

Definition at line 173 of file winscard_msg.c.

◆ ClientSetupSession()

int32_t ClientSetupSession ( uint32_t * pdwClientID)

Prepares a communication channel for the client to talk to the server.

This is called by the application to create a socket for local IPC with the server. The socket is associated to the file PCSCLITE_CSOCK_NAME.

Parameters
[out]pdwClientIDClient Connection ID.
Return values
0Success.
-1
  • Can not create the socket
  • or the socket can not open a connection
  • or can not set the socket to non-blocking.

Definition at line 119 of file winscard_msg.c.

◆ getSocketName()

char * getSocketName ( void )

Definition at line 99 of file winscard_msg.c.

◆ MessageReceive()

LONG MessageReceive ( void * buffer_void,
uint64_t buffer_size,
int32_t filedes )

Called by the Client to get the response from the server or vice-versa.

Reads the message from the file filedes.

Parameters
[out]buffer_voidMessage read.
[in]buffer_sizeSize to read
[in]filedesSocket handle.
Return values
SCARD_S_SUCCESSSuccess.
SCARD_F_COMM_ERROR
  • Socket is closed
  • or a signal was received.

Definition at line 455 of file winscard_msg.c.

◆ MessageReceiveTimeout()

LONG MessageReceiveTimeout ( uint32_t command,
void * buffer_void,
uint64_t buffer_size,
int32_t filedes,
long timeOut )

Called by the Client to get the response from the server or vice-versa.

Reads the message from the file filedes.

Parameters
[in]commandone of the pcsc_msg_commands commands
[out]buffer_voidMessage read.
[in]buffer_sizeSize to read
[in]filedesSocket handle.
[in]timeOutTimeout in milliseconds.
Return values
SCARD_S_SUCCESSSuccess.
SCARD_E_TIMEOUTTimeout.
SCARD_F_COMM_ERROR
  • Socket is closed
  • or a signal was received.

Definition at line 195 of file winscard_msg.c.

◆ MessageSend()

LONG MessageSend ( void * buffer_void,
uint64_t buffer_size,
int32_t filedes )

Sends a menssage from client to server or vice-versa.

Writes the message in the shared file filedes.

Parameters
[in]buffer_voidMessage to be sent.
[in]buffer_sizeSize of the message to send
[in]filedesSocket handle.
Return values
SCARD_S_SUCCESSSuccess
SCARD_E_TIMEOUTTimeout.
SCARD_F_COMM_ERROR
  • Socket is closed
  • or a signal was received.

Definition at line 355 of file winscard_msg.c.

◆ MessageSendWithHeader()

LONG MessageSendWithHeader ( uint32_t command,
uint32_t dwClientID,
uint64_t size,
void * data_void )

Wrapper for the MessageSend() function.

Called by clients to send messages to the server. The parameters command and data are set in the sharedSegmentMsg struct in order to be sent.

Parameters
[in]commandCommand to be sent.
[in]dwClientIDClient socket handle.
[in]sizeSize of the message (data).
[in]data_voidData to be sent.
Returns
Same error codes as MessageSend().

Definition at line 318 of file winscard_msg.c.