JobMgt.h

Программа А.4. Включаемый файл JobMgt.h

/* JobMgt.h — Определения, необходимые для управления задачами. Глава 6. */

/* Код выхода для программы управления задачами в случае прекращения их выполнения. */

 

#define JM_EXIT_CODE 0x1000

 

typedef struct _JM_JOB {

DWORD ProcessId;

TCHAR CommandLine[MAX_PATH];

} JM_JOB;

#define SJM_JOB sizeof (JM_JOB)

 

/* Функции управления задачами. */

DWORD GetJobNumber(PROCESS_INFORMATION *, LPCTSTR);

BOOL DisplayJobs(void);

DWORD FindProcessId(DWORD);

BOOL GetJobMgtFileName(LPTSTR);

ClntSrvr.h

Программа А.5. Включаемый файл ClntSrvr.h

/* Определения для программ, обеспечивающих клиент-серверное взаимодействие*/

/* Сообщения запроса и ответа. Сообщения имеют кодировку ASCII, поскольку запрос может поступать от системы Windows 95. */

#define MAX_RQRS_LEN 0x1000

 

typedef struct {

DWORD32 RqLen; /* Размер структуры запроса, исключая размер этого поля. */

CHAR Command;

BYTE Record[MAX_RQRS_LEN];

} REQUEST;

 

typedef struct {

DWORD32 RsLen; /* Размер структуры ответа, исключая размер этого поля*/

CHAR Status;

BYTE Record[MAX_RQRS_LEN];

} RESPONSE;

 

#define RQ_SIZE sizeof(REQUEST)

#define RQ_HEADER_LEN RQ_SIZE-MAX_RQRS_LEN

#define RS_SIZE sizeof(RESPONSE)

#define RS_HEADER_LEN RS_SIZE-MAX_RQRS_LEN

 

/* Структура почтового сообщения. */

typedef struct {

DWORD msStatus;

DWORD msUtilization;

TCHAR msName[MAX_PATH];

} MS_MESSAGE;

 

#define MSM_SIZE sizeof(MS_MESSAGE)

#define CS_TIMEOUT 5000 /* Интервал ожидания для взаимодействия через именованный канал и мониторинга производительности. */

#define MAXCLIENTS 10

#define MAX_SERVER_TH 4 /* Максимальное количество серверных потоков для программы serverNPCP.*/

#define MAX_CLIENTS_CP 16 /* Максимальное количество клиентов для программы serverNPCP.*/

 

/* Имена серверных и клиентских каналов и почтовых ящиков. */

#define SERVER_PIPE _Т("\\\\.\\PIPE\\SERVER")

#define CLIENT_PIPE _T("\\\\.\\PIPE\\SERVER")

#define SERVERBROADCAST _T("SrvrBcst.exe")

#define MS_SRVNAME _T("\\\\.\\MAILSLOT\\CLS_MAILSLOT")

#define MS_CLTNAME _T("\\\\.\\MAILSLOT\\CLS_MAILSLOT")

#define MX_NAME _T("ClientServerMutex")

#define SM_NAME _T("ClientServerSemaphore")

 

/* Команды для функции поддержки статистики. */

#define CS_INIT 1

#define CS_RQSTART 2

#define CS_RQCOMPLETE 3

#define CS_REPORT 4

#define CS_TERMTHD 5

 

/* Функции поддержки клиент-серверной системы. */

BOOL LocateServer(LPTSTR);

Exclude.h

В программе А.6 определяются многочисленные переменные, позволяющие исключить определения, которые не требуются для примеров программ, приведенных в данной книге. Этот вопрос подробно обсуждается в [30].