admin
base
com
developer
drivers
ds
enduser
inetcore
inetsrv
loc
mergedcomponents
multimedia
net
printscan
ddk
dload
fax
activefax
admin
config
dumpqueue
exchange
faxcover
faxisapi
faxqueue
faxview
help
inc
itg
lib
perfmon
print
provider
t30
cl2and20
class1
comm
headers
arasock.h
aw16bit.h
awcapapi.h
awcover.h
awcpesup.h
awdebug.h
awdenc.h
awfaxcfg.h
awfile.h
awg3file.h
awhelp.h
awkkc.h
awlzrd.h
awnetfax.h
awnsfapi.h
awnsfcor.h
awnsfint.h
awpddl32.h
awrc32.h
awrt.h
awsec.h
awsecx.h
awview.h
bgt30.h
bmscaler.h
buffers.h
cas.h
class2.h
comdevi.h
dcxcodec.h
debug.h
defs.h
defs1.h
devlapi.h
dosio.h
efaxcb.h
entryid.h
errormod.h
et30type.h
f2lf.h
faxcodec.h
faxcover.h
faxhelp.h
faxipc.h
faxopt.h
faxpwd.h
faxsrc.inc
fcomapi.h
filet30.h
fmtres.h
fr.h
genawd.h
glbproto.h
global.h
ifaxos.h
inifile.h
lft3lpc.h
lhprot.h
lhutil.h
lineariz.h
lmi.h
lpc.h
mcfg.h
mem.h
modemddi.h
mon.h
msgsvr.h
mysched.h
ncuparm.h
nsfmacro.h
oemint.h
phonenum.h
pollenc.h
prep.h
property.h
protapi.h
protdump.h
protparm.h
psibg.h
pumpext.h
rambo.h
readme.txt
recover.h
render.h
rendserv.h
resexec.h
rgndlg.h
rl_debug.h
root.h
smapi.h
sosmapi.h
t30fail.h
t30gl.h
timeouts.h
tipes.h
uiutil.h
version.h
wizdata.h
xp_schd.h
main
util
dirs
dirs
samples
service
setup
shellext
test
tiff
util
web
coffbase.txt
dirs
faxsrc.inc
makefil0
placefil.txt
setenv.cmd
faxsrv
inc
lib
print
publish
scan
ui
wia
dirs
project.mk
public
published
sdktools
shell
termsrv
tools
windows
dirs
makefil0
53 lines
1.9 KiB
C
53 lines
1.9 KiB
C
/***********************************************************************
|
|
*
|
|
* At Work Fax: FAX Inter Process Communication
|
|
*
|
|
*
|
|
* Copyright 1992, 1993 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
*
|
|
***********************************************************************/
|
|
|
|
|
|
// Message queue structure: This lives in shared memory
|
|
typedef struct _IPC_MSG {
|
|
UINT uMessageId; // Message Identifier
|
|
WPARAM wParam; // wParam message specific data
|
|
LPARAM lParam; // lParam message specific data
|
|
} IPC_MSG, *LPIPC_MSG;
|
|
|
|
// Message queue header: This lives at the top of shared memory
|
|
typedef struct _IPC_QUEUE {
|
|
DWORD cEntries; // Count of entries in queue
|
|
DWORD cMaxEntries; // Maximum number of entries to fit in queue
|
|
IPC_MSG Messages[]; // Queue of entries
|
|
} IPC_QUEUE, *LPIPC_QUEUE;
|
|
|
|
// IPC structure: This lives in local memory of each process
|
|
typedef struct _FAX_IPC {
|
|
HANDLE hevNew; // Event handle to be triggered on new data
|
|
HANDLE hmtxAccess; // Mutex handle to control access to IPC queue
|
|
HANDLE hMapFile; // Mapped File handle
|
|
LPIPC_QUEUE lpQueue; // Pointer to queue of IPC messages
|
|
} FAX_IPC, *LPFAX_IPC;
|
|
|
|
|
|
#define ERROR_APPLICATION_DEFINED 0x20000000
|
|
#define FAXIPC_ERROR_QUEUE_FULL (ERROR_APPLICATION_DEFINED | 1)
|
|
|
|
|
|
//
|
|
// Function Templates
|
|
//
|
|
LPFAX_IPC IPCOpen(PUCHAR lpName);
|
|
BOOL IPCPost(LPFAX_IPC lpIPC, UINT uMessageId, WPARAM wParam, LPARAM lParam);
|
|
BOOL IPCGetMessage(LPFAX_IPC lpIPC, PUINT lpuMessageId, WPARAM * lpwParam,
|
|
LPARAM * lplParam, UINT uMsgFilterMin, UINT uMsgFilterMax, DWORD dwTimeout);
|
|
BOOL IPCWait(LPFAX_IPC lpIPC, PUINT lpuMessageId, WPARAM * lpwParam,
|
|
LPARAM * lplParam, DWORD dwTimeout);
|
|
BOOL IPCTest(LPFAX_IPC lpIPC);
|
|
BOOL IPCClear(LPFAX_IPC lpIPC);
|
|
BOOL IPCClose(LPFAX_IPC lpIPC);
|
|
|
|
|