Windows System Programming Third Edition



Download 3.41 Mb.
Page28/31
Date31.07.2017
Size3.41 Mb.
#24970
1   ...   23   24   25   26   27   28   29   30   31

Include File Listings

EvryThng.h

Program A-1. EvryThng.h Include File

/* EvryThng.h -- All standard and custom include files. */

#include "Exclude.h"

/* Excludes definitions not required by sample programs. */

#include "envirmnt.h"

#include

#include

#include

#include

#include "support.h"

#ifdef _MT

#include

/* DWORD_PTR (pointer precision unsigned integer) is used for integers

* that are converted to handles or pointers.

* This eliminates Win64 warnings regarding conversion between

* 32-bit and 64-bit data, as HANDLEs and pointers are 64 bits in

* Win64 (see Chapter 16). This is enabled only if _Wp64 is defined.

*/

#if !defined(_Wp64)



#define DWORD_PTR DWORD

#define LONG_PTR LONG

#define INT_PTR INT

#endif



Envirmnt.h

Program A-2. Envirmnt.h Include File

/* Envirmnt.h -- define UNICODE and _MT here. */

/* It is best and easiest to define UNICODE within the project. */

/* Use Project...Settings...C/C++. Then, in the "Project Options" */

/* window on the bottom, add /D "UNICODE". */

/* Do the same for _MT, and _STATIC_LIB. */
//#define UNICODE

#undef UNICODE

#ifdef UNICODE

#define _UNICODE

#endif
#ifndef UNICODE

#undef _UNICODE

#endif

//#define _STATICLIB



/* Define _STATICLIB if you are either building a */

/* static library or linking with one. */

#define LANG_DFLT LANG_ENGLISH

#define SUBLANG_DFLT SUBLANG_ENGLISH_US




Support.h

Program A-3. Support.h Include File

/* Support.h */

/* Definitions of all symbolic constants and common

utility functions used throughout the example programs. */
/* IT IS BEST TO DEFINE UTILITY_EXPORTS AND _STATICLIB WITHIN THE

PROJECT RATHER THAN HERE, BUT THE DESCRIPTIONS ARE INCLUDED. */

/* The name "UTILITY_EXPORTS" is generated by Dev Studio when you

create a DLL project named "Utility" and it is defined on the

C command line. */
// UTILITY_3_0_EXPORTS is defined within the UTILITY_3_0 project.
#if defined(UTILITY_3_0_EXPORTS)

#define LIBSPEC _declspec (dllexport)

#elif defined(__cplusplus)

#define LIBSPEC extern "C" _declspec (dllimport)

#else

#define LIBSPEC _declspec (dllimport)



#endif
#define EMPTY _T ("")

#define YES _T ("y")

#define NO _T ("n")

#define CR 0x0D

#define LF 0x0A

#define TSIZE sizeof (TCHAR)


/* Limits and constants. */

#define TYPE_FILE 1 /* Used in ls, rm, and lsFP. */

#define TYPE_DIR 2

#define TYPE_DOT 3


#define MAX_OPTIONS 20 /* Max # of command line options. */

#define MAX_ARG 1000 /* Max # of command line arguments. */

#define MAX_COMMAND_LINE MAX_PATH+50 /* Max size of a command line. */

/* Commonly used functions. */

LIBSPEC BOOL ConsolePrompt (LPCTSTR, LPTSTR, DWORD, BOOL);

LIBSPEC BOOL PrintStrings (HANDLE, ...);

LIBSPEC BOOL PrintMsg (HANDLE, LPCTSTR);

LIBSPEC VOID ReportError (LPCTSTR, DWORD, BOOL);

LIBSPEC VOID ReportException (LPCTSTR, DWORD);

LIBSPEC DWORD Options (int, LPCTSTR *, LPCTSTR, ...);

LIBSPEC LPTSTR SkipArg (LPCTSTR);

LIBSPEC VOID GetArgs (LPCTSTR, int *, LPTSTR *);


/* Collection of generic string functions modeled after string.h.

Created as required -- there was only one! Implementation is

derived from Plauger: The Standard C Library. */
LIBSPEC LPCTSTR wmemchr (LPCTSTR, TCHAR, DWORD);
#ifdef _UNICODE /* This declaration had to be added. */

#define _tstrrchr wcsrchr

#else

#define _tstrrchr strrchr



#endif
#ifdef _UNICODE /* This declaration had to be added. */

#define _memtchr wmemchr

#else

#define _memtchr memchr



#endif
/* Security functions. */

LPSECURITY_ATTRIBUTES InitializeUnixSA (DWORD, LPTSTR, LPTSTR,

LPDWORD, LPHANDLE);

LPSECURITY_ATTRIBUTES InitializeAccessOnlySA (DWORD, LPTSTR, LPTSTR,

LPDWORD, LPHANDLE);

DWORD ReadFilePermissions (LPTSTR, LPTSTR, LPTSTR);

BOOL ChangeFilePermissions (DWORD, LPTSTR, LPDWORD, LPDWORD);

/* Simpler forms available with Visual C++ Version 5.0. */

//PSECURITY_DESCRIPTOR InitializeSD (DWORD, LPTSTR, LPTSTR, LPDWORD);
/* Constants needed by the security functions. */

#define LUSIZE 1024

#define ACCT_NAME_SIZE LUSIZE


JobMgt.h

Program A-4. JobMgt.h Include File

/* JobMgt.h -- Definitions required for job management.

Chapter 6. */

/* Job management exit code for killed jobs. */
#define JM_EXIT_CODE 0x1000
typedef struct _JM_JOB

{

DWORD ProcessId;



TCHAR CommandLine [MAX_PATH];

} JM_JOB;

#define SJM_JOB sizeof (JM_JOB)
/* Job management functions. */

DWORD GetJobNumber (PROCESS_INFORMATION *, LPCTSTR);

BOOL DisplayJobs (void);

DWORD FindProcessId (DWORD);

BOOL GetJobMgtFileName (LPTSTR);


ClntSrvr.h

Program A-5. ClntSrvr.h Include File

/* Definitions for client/server communication. */

/* Request and response messages. Messages are in ASCII as

the request may be coming from a Windows 95 system. */
#define MAX_RQRS_LEN 0x1000
typedef struct {

DWORD32 RqLen; /* Request length, not including this field. */

CHAR Command;

BYTE Record [MAX_RQRS_LEN];

} REQUEST;
typedef struct {

DWORD32 RsLen; /* Response length, not including this field */

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


/* Mailslot message structure. */

typedef struct {

DWORD msStatus;

DWORD msUtilization;

TCHAR msName [MAX_PATH];

} MS_MESSAGE;


#define MSM_SIZE sizeof (MS_MESSAGE)
#define CS_TIMEOUT 5000

/* Time-out period for named pipe

connections and performance monitoring. */
#define MAX_CLIENTS 10

#define MAX_SERVER_TH 4 /* Max num of server threads for serverNPCP.*/

#define MAX_CLIENTS_CP 16 /* Max num of clients for serverNPCP.*/
/* Client and server pipe & mailslot names. */

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

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

#define SERVER_BROADCAST _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")


/* Commands for the statistics maintenance function. */

#define CS_INIT 1

#define CS_RQSTART 2

#define CS_RQCOMPLETE 3

#define CS_REPORT 4

#define CS_TERMTHD 5


/* Client/Server support functions. */
BOOL LocateServer (LPTSTR);


Exclude.h


Program A-6 defines numerous variables that will exclude definitions not required by the programs in the book. Rector and Newcomer (1997) discuss this in detail.
Program A-6. Exclude.h Include File

/* Exclude.h -- Define variables to exclude selected header files.

For a complete explanation, see Rector & Newcomer, Win32

Programming, pp 25ff. */
#define WIN32_LEAN_AND_MEAN

/* This has the largest impact, halving the precompiled

header (pch) file size. */
/* These definitions also reduce the pch and improve compiling

time. All the programs in the book will still compile with

these definitions. You can also eliminate security with

#define NOSECURITY. */


#define NOATOM

#define NOCLIPBOARD

#define NOCOMM

#define NOCTLMGR

#define NOCOLOR

#define NODEFERWINDOWPOS

#define NODESKTOP

#define NODRAWTEXT

#define NOEXTAPI

#define NOGDICAPMASKS

#define NOHELP

#define NOICONS

#define NOTIME

#define NOIMM

#define NOKANJI

#define NOKERNEL

#define NOKEYSTATES

#define NOMCX

#define NOMEMMGR

#define NOMENUS

#define NOMETAFILE

#define NOMSG

#define NONCMESSAGES

#define NOPROFILER

#define NORASTEROPS

#define NORESOURCE

#define NOSCROLL

#define NOSERVICE

#define NOSHOWWINDOW

#define NOSOUND

#define NOSYSCOMMANDS

#define NOSYSMETRICS

#define NOSYSPARAMS

#define NOTEXTMETRIC

#define NOVIRTUALKEYCODES

#define NOWH

#define NOWINDOWSTATION

#define NOWINMESSAGES

#define NOWINOFFSETS

#define NOWINSTYLES

#define OEMRESOURCE


Directory: bitstream -> NAU
bitstream -> A mathematical theory of communication
bitstream -> Images of Fairfax in Modern Literature and Film Andrew Hopper
bitstream -> Amphitheater High School’s Outdoor Classroom: a study in the Application of Design
bitstream -> Ethics of Climate Change: Adopting an Empirical Approach to Moral Concern
bitstream -> The Age of Revolution in the Indian Ocean, Bay of Bengal and South China Sea: a maritime Perspective
bitstream -> Methodism and Culture
bitstream -> Review of coastal ecosystem management to improve the health and resilience of the Great Barrier Reef World Heritage Area
bitstream -> Present state of the area
NAU -> International significance of icao alphabet for flight safety
NAU -> Performance comparison of android runtime and dalvik environments on an android device

Download 3.41 Mb.

Share with your friends:
1   ...   23   24   25   26   27   28   29   30   31




The database is protected by copyright ©ininet.org 2024
send message

    Main page