RPCsvc: Windows NT System Service That Uses RPC

This sample demonstrates how to implement an NT system service that uses RPC.

This particular RPC service is designed to show the performance effects of various parameters to RPC APIs and interface design.

The service can be started and stopped from either the Services control panel, the net start/stop command line, or by using the Service Controller utility (see below).

The service also provides command-line parameters which install, remove, or run (debug) the service as a console application.

This sample (and service.c) is based on the win32\service sample.

Main Files

File Description
Rpcsvc.idl Interface definition language file
Rpcsvc.acf Attribute configuration file
Client.c Client main program
Server.c Server main program
Service.c Service APIs
Makefile Nmake file to build for Windows NT or Windows 95

Building SDK Samples

This sample uses the following keywords:

_stprintf; _stricmp; _tprintf; addtomessagelog; atoi; bufferin1; bufferin2; bufferin3; bufferout1; bufferout2; bufferout3; bufferout4; checksecurity; closeservicehandle; cmddebugservice; cmdinstallservice; cmdremoveservice; commandlinetoargvw; controlservice; createservice; defined; deleteservice; deregistereventsource; dotimings; endtime; exit; formatmessage; free; getcommandlinew; getlasterror; getlasterrortext; getmodulefilename; getprocessheap; heapalloc; heapfree; listin; listout1; listout2; localfree; lstrlen; malloc; midl_user_allocate; midl_user_free; ndrclientinitializenew; ndrcomplexarraybuffersize; ndrcomplexarrayfree; ndrcomplexarraymarshall; ndrcomplexarrayunmarshall; ndrcomplexstructbuffersize; ndrcomplexstructmarshall; ndrcomplexstructunmarshall; ndrconformantarraybuffersize; ndrconformantarraymarshall; ndrconformantarrayunmarshall; ndrconformantvaryingarraybuffersize; ndrconformantvaryingarraymarshall; ndrconformantvaryingarrayunmarshall; ndrconvert; ndrfclong; ndrfcshort; ndrfixedarraybuffersize; ndrfixedarraymarshall; ndrfixedarrayunmarshall; ndrfreebuffer; ndrgetbuffer; ndrmapcommandfaultstatus; ndrpointerbuffersize; ndrpointerfree; ndrpointermarshall; ndrpointerunmarshall; ndrrpcssdisableallocate; ndrrpcssenableallocate; ndrsendreceive; ndrserverinitializenew; ndrsimplestructbuffersize; ndrsimplestructmarshall; ndrsimplestructunmarshall; ndrvaryingarraybuffersize; ndrvaryingarraymarshall; ndrvaryingarrayunmarshall; openscmanager; openservice; pfnallocate; pfnfree; ping; printf; queryperformancecounter; queryperformancefrequency; queryservicestatus; registereventsource; registerservicectrlhandler; reportevent; reportstatustoscmgr; rpcbindingfree; rpcbindingfromstringbinding; rpcbindingsetauthinfo; rpcbindingvectorfree; rpcepregister; rpcepunregister; rpcexcept; rpcexceptioncode; rpcimpersonateclient; rpcmgmtstopserverlistening; rpcmgmtwaitserverlisten; rpcraiseexception; rpcreverttoself; rpcserverinqbindings; rpcserverlisten; rpcserverregisterauthinfo; rpcserverregisterif; rpcserveruseprotseq; rpcservicesample_bufferin1; rpcservicesample_bufferin2; rpcservicesample_bufferin3; rpcservicesample_bufferout1; rpcservicesample_bufferout2; rpcservicesample_bufferout3; rpcservicesample_bufferout4; rpcservicesample_checksecurity; rpcservicesample_free_wrapper; rpcservicesample_listin; rpcservicesample_listout1; rpcservicesample_listout2; rpcservicesample_malloc_wrapper; rpcservicesample_ping; rpcservicesample_structsin1; rpcservicesample_structsin2; rpcservicesample_structsin3; rpcservicesample_unioncall1; rpcservicesample_unioncall2; rpcssallocate; rpcstringbindingcompose; rpcstringfree; service_ctrl; service_main; servicestart; servicestop; setconsolectrlhandler; setservicestatus; sleep; startservicectrldispatcher; starttime; structsin1; structsin2; structsin3; switch; text; unioncall1; unioncall2; usage