winscard_msg.h File Reference

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

#include <stdint.h>

Include dependency graph for winscard_msg.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  rxSharedSegment
 General structure for client/serve message data exchange. More...
struct  version_struct
 Information transmitted in CMD_VERSION Messages. More...
struct  client_struct
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  transmit_struct_extended
 contained in SCARD_TRANSMIT_EXTENDED Messages. More...
struct  control_struct
 contained in SCARD_CONTROL Messages. More...
struct  control_struct_extended
 contained in SCARD_CONTROL_EXTENDED Messages. More...
struct  getset_struct
 contained in SCARD_GET_ATTRIB and Messages. More...

Defines

#define PROTOCOL_VERSION_MAJOR   3
 Major version of the current message protocol.
#define PROTOCOL_VERSION_MINOR   0
 Minor version of the current message protocol.

Typedefs

typedef struct rxSharedSegment sharedSegmentMsg
 General structure for client/serve message data exchange.
typedef struct rxSharedSegmentpsharedSegmentMsg
typedef struct version_struct version_struct
typedef struct client_struct client_struct
typedef struct establish_struct establish_struct
typedef struct release_struct release_struct
typedef struct connect_struct connect_struct
typedef struct reconnect_struct reconnect_struct
typedef struct disconnect_struct disconnect_struct
typedef struct begin_struct begin_struct
typedef struct end_struct end_struct
typedef struct cancel_struct cancel_struct
typedef struct status_struct status_struct
typedef struct transmit_struct transmit_struct
typedef struct
transmit_struct_extended 
transmit_struct_extended
typedef struct control_struct control_struct
typedef struct
control_struct_extended 
control_struct_extended
typedef struct getset_struct getset_struct

Enumerations

enum  pcsc_adm_commands {
  CMD_FUNCTION = 0xF1,
  CMD_FAILED = 0xF2,
  CMD_SERVER_DIED = 0xF3,
  CMD_CLIENT_DIED = 0xF4,
  CMD_READER_EVENT = 0xF5,
  CMD_SYN = 0xF6,
  CMD_ACK = 0xF7,
  CMD_VERSION = 0xF8
}
 Command types available to use in the field sharedSegmentMsg.mtype. More...
enum  pcsc_msg_commands {
  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,
  SCARD_TRANSMIT_EXTENDED = 0x11,
  SCARD_CONTROL_EXTENDED = 0x12
}
 Commands available to use in the field sharedSegmentMsg.command. More...

Functions

int32_t SHMClientRead (psharedSegmentMsg, uint32_t, int32_t)
 Wrapper for the SHMMessageReceive() function.
int32_t SHMClientSetupSession (uint32_t *)
 Prepares a communication channel for the client to talk to the server.
int32_t SHMClientCloseSession (uint32_t)
 Closes the socket used by the client to communicate with the server.
int32_t SHMInitializeCommonSegment (void)
 Prepares the communication channel used by the server to talk to the clients.
int32_t SHMProcessEventsContext (uint32_t, psharedSegmentMsg)
 Called by ContextThread().
int32_t SHMProcessEventsServer (uint32_t *)
 Looks for messages sent by clients.
int32_t SHMMessageSend (void *buffer, uint64_t buffer_size, int32_t filedes, int32_t blockAmount)
 Sends a menssage from client to server or vice-versa.
int32_t SHMMessageReceive (void *buffer, uint64_t buffer_size, int32_t filedes, int32_t blockAmount)
 Called by the Client to get the reponse from the server or vice-versa.
int32_t WrapSHMWrite (uint32_t command, uint32_t dwClientID, uint64_t size, uint32_t blockAmount, void *data)
 Wrapper for the SHMMessageSend() function.
void SHMCleanupSharedSegment (int32_t, const char *)


Detailed Description

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

Definition in file winscard_msg.h.


Typedef Documentation

General structure for client/serve message data exchange.

It is used in the calls of SHMMessageSend and SHMMessageReceive. The field data is interpreted according to the values of the fields mtype and command. The possible structs the data field can represent are: version_struct client_struct establish_struct release_struct connect_struct reconnect_struct disconnect_struct begin_struct end_struct cancel_struct status_struct transmit_struct control_struct getset_struct


Enumeration Type Documentation

Command types available to use in the field sharedSegmentMsg.mtype.

Enumerator:
CMD_VERSION  version of the IPC

Definition at line 59 of file winscard_msg.h.

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  used by SCardGetStatusChange()
SCARD_CANCEL  used by SCardCancel()
SCARD_GET_ATTRIB  used by SCardGetAttrib()
SCARD_SET_ATTRIB  used by SCardSetAttrib()
SCARD_TRANSMIT_EXTENDED  used by SCardTransmit()
SCARD_CONTROL_EXTENDED  used by SCardControl()

Definition at line 74 of file winscard_msg.h.


Function Documentation

int32_t SHMClientCloseSession ( uint32_t  dwClientID  ) 

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

Parameters:
[in] dwClientID Client socket handle to be closed.
Return values:
0 Success.

Definition at line 122 of file winscard_msg.c.

References SYS_CloseFile().

Referenced by ContextThread().

Here is the call graph for this function:

int32_t SHMClientRead ( psharedSegmentMsg  msgStruct,
uint32_t  dwClientID,
int32_t  blockamount 
)

Wrapper for the SHMMessageReceive() function.

Called by clients to read the server responses.

Parameters:
[out] msgStruct Message read.
[in] dwClientID Client socket handle.
[in] blockamount Timeout in milliseconds.
Returns:
Same error codes as SHMMessageReceive().

Definition at line 57 of file winscard_msg.c.

References SHMMessageReceive().

Referenced by SCardBeginTransaction(), SCardCancelTransaction(), SCardConnect(), SCardControl(), SCardDisconnect(), SCardEndTransaction(), SCardEstablishContextTH(), SCardReconnect(), SCardReleaseContext(), SCardStatus(), and SCardTransmit().

Here is the call graph for this function:

int32_t SHMClientSetupSession ( 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] pdwClientID Client Connection ID.
Return values:
0 Success.
-1 Can not create the socket.
-1 The socket can not open a connection.
-1 Can not set the socket to non-blocking.

Definition at line 75 of file winscard_msg.c.

References SYS_CloseFile().

Referenced by SCardEstablishContextTH().

Here is the call graph for this function:

int32_t SHMInitializeCommonSegment ( void   ) 

Prepares the communication channel used by the server to talk to the clients.

This is called by the server to create a socket for local IPC with the clients. The socket is associated to the file PCSCLITE_CSOCK_NAME. Each client will open a connection to this socket.

Returns:
Error code.
Return values:
0 Success
-1 Can not create the socket.
-1 Can not bind the socket to the file PCSCLITE_CSOCK_NAME.
-1 Can not put the socket in listen mode.

Definition at line 133 of file winscard_msg_srv.c.

References commonSocket, SHMCleanupSharedSegment(), and SYS_RemoveFile().

Referenced by SVCServiceRunLoop().

Here is the call graph for this function:

int32_t SHMMessageReceive ( void *  buffer_void,
uint64_t  buffer_size,
int32_t  filedes,
int32_t  blockAmount 
)

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

Reads the message from the file filedes.

Parameters:
[out] buffer_void Message read.
[in] buffer_size Size to read
[in] filedes Socket handle.
[in] blockAmount Timeout in milliseconds.
Return values:
0 Success.
-1 Timeout.
-1 Socket is closed.
-1 A signal was received.

Definition at line 268 of file winscard_msg.c.

References SCARD_S_SUCCESS, and SCardCheckDaemonAvailability().

Referenced by MSGFunctionDemarshall(), SCardControl(), SCardEstablishContextTH(), SCardTransmit(), SHMClientRead(), and SHMProcessEventsContext().

Here is the call graph for this function:

int32_t SHMMessageSend ( void *  buffer_void,
uint64_t  buffer_size,
int32_t  filedes,
int32_t  blockAmount 
)

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

Writes the message in the shared file filedes.

Parameters:
[in] buffer_void Message to be sent.
[in] buffer_size Size of the message to send
[in] filedes Socket handle.
[in] blockAmount Timeout in milliseconds.
Return values:
0 Success
-1 Timeout.
-1 Socket is closed.
-1 A signal was received.

Definition at line 143 of file winscard_msg.c.

Referenced by ContextThread(), MSGFunctionDemarshall(), SCardEstablishContextTH(), and WrapSHMWrite().

int32_t SHMProcessEventsServer ( uint32_t *  pdwClientID  ) 

Looks for messages sent by clients.

This is called by the Server's function SVCServiceRunLoop().

Parameters:
[out] pdwClientID Connection ID used to reference the Client.
Returns:
Error code.
Return values:
0 Success.
-1 Error accessing the communication channel.
-1 Can not set the connection to non-blocking mode.
2 Timeout.

Definition at line 193 of file winscard_msg_srv.c.

References commonSocket, and SHMProcessCommonChannelRequest().

Referenced by SVCServiceRunLoop().

Here is the call graph for this function:

int32_t WrapSHMWrite ( uint32_t  command,
uint32_t  dwClientID,
uint64_t  size,
uint32_t  blockAmount,
void *  data_void 
)

Wrapper for the SHMMessageSend() 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] command Command to be sent.
[in] dwClientID Client socket handle.
[in] size Size of the message (data).
[in] blockAmount Timeout to the operation in ms.
[in] data_void Data to be sent.
Returns:
Same error codes as SHMMessageSend().

Definition at line 412 of file winscard_msg.c.

References rxSharedSegment::date, SCARD_CONTROL_EXTENDED, SCARD_TRANSMIT, SCARD_TRANSMIT_EXTENDED, SHMMessageSend(), and rxSharedSegment::user_id.

Referenced by SCardBeginTransaction(), SCardCancelTransaction(), SCardConnect(), SCardControl(), SCardDisconnect(), SCardEndTransaction(), SCardEstablishContextTH(), SCardReconnect(), SCardReleaseContext(), SCardStatus(), and SCardTransmit().

Here is the call graph for this function:


Generated on Mon Aug 17 01:00:16 2009 for pcsc-lite by  doxygen 1.5.9