|
pcsc-lite
1.8.23
|
This demarshalls functions over the message queue and keeps track of clients and their handles. More...
#include "config.h"#include <time.h>#include <stdio.h>#include <string.h>#include <stddef.h>#include <stdlib.h>#include <unistd.h>#include <pthread.h>#include "pcscd.h"#include "winscard.h"#include "debuglog.h"#include "winscard_msg.h"#include "winscard_svc.h"#include "sys_generic.h"#include "utils.h"#include "readerfactory.h"#include "eventhandler.h"#include "simclist.h"#include "auth.h"Go to the source code of this file.
Data Structures | |
| struct | _psContext |
Macros | |
| #define | READ_BODY(v) |
| #define | WRITE_BODY(v) WRITE_BODY_WITH_COMMAND(CommandsText[header.command], v) |
| #define | WRITE_BODY_WITH_COMMAND(command, v) |
Typedefs | |
| typedef struct _psContext | SCONTEXT |
Functions | |
| static LONG | MSGCheckHandleAssociation (SCARDHANDLE, SCONTEXT *) |
| static LONG | MSGAddContext (SCARDCONTEXT, SCONTEXT *) |
| static LONG | MSGRemoveContext (SCARDCONTEXT, SCONTEXT *) |
| static LONG | MSGAddHandle (SCARDCONTEXT, SCARDHANDLE, SCONTEXT *) |
| static LONG | MSGRemoveHandle (SCARDHANDLE, SCONTEXT *) |
| static void | MSGCleanupClient (SCONTEXT *) |
| static void | ContextThread (LPVOID pdwIndex) |
| static int | contextsListhContext_seeker (const void *el, const void *key) |
| LONG | ContextsInitialize (int customMaxThreadCounter, int customMaxThreadCardHandles) |
| void | ContextsDeinitialize (void) |
| LONG | CreateContextThread (uint32_t *pdwClientID) |
| Creates threads to handle messages received from Clients. More... | |
| LONG | MSGSignalClient (uint32_t filedes, LONG rv) |
Variables | |
| char | AutoExit |
| Represents an Application Context on the Server side. More... | |
| static int | contextMaxThreadCounter = PCSC_MAX_CONTEXT_THREADS |
| static int | contextMaxCardHandles = PCSC_MAX_CONTEXT_CARD_HANDLES |
| static list_t | contextsList |
| Context tracking list. | |
| pthread_mutex_t | contextsList_lock |
| lock for the above list | |
| READER_STATE | readerStates [PCSCLITE_MAX_READERS_CONTEXTS] |
| static const char * | CommandsText [] |
| Handles messages received from Clients. More... | |
This demarshalls functions over the message queue and keeps track of clients and their handles.
Each Client message is deald by creating a thread (CreateContextThread). The thread establishes reands and demarshalls the message and calls the appropriate function to threat it.
Definition in file winscard_svc.c.
| #define READ_BODY | ( | v | ) |
Definition at line 309 of file winscard_svc.c.
| #define WRITE_BODY_WITH_COMMAND | ( | command, | |
| v | |||
| ) |
Definition at line 322 of file winscard_svc.c.
| LONG CreateContextThread | ( | uint32_t * | pdwClientID | ) |
Creates threads to handle messages received from Clients.
| [in] | pdwClientID | Connection ID used to reference the Client. |
| SCARD_S_SUCCESS | Success. |
| SCARD_F_INTERNAL_ERROR | Exceded the maximum number of simultaneous Application Contexts. |
| SCARD_E_NO_MEMORY | Error creating the Context Thread. |
Definition at line 171 of file winscard_svc.c.
| char AutoExit |
Represents an Application Context on the Server side.
An Application Context contains Channels (hCard).
Definition at line 80 of file pcscdaemon.c.
|
static |
Handles messages received from Clients.
For each Client message a new instance of this thread is created.
| [in] | dwIndex | Index of an avaiable Application Context slot in SCONTEXT *. |
Definition at line 283 of file winscard_svc.c.
1.8.14