/****************************************************************************
Microsoft RPC Version 2.0
Copyright Microsoft Corp. 1992, 1993, 1994- 1996
Auto Example
FILE: autoc.c
USAGE: autoc
PURPOSE: Client side of RPC distributed application
FUNCTIONS: main() - binds to server and calls remote procedure
COMMENTS: This distributed application (time stamp) is implemented
using an auto handle. The client side of the application
does not care which server provides the time stamp; it
merely wants to get the time from any available server.
****************************************************************************/
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <time.h>
#include "auto.h" // header file generated by MIDL compiler
#define PURPOSE \
"This Microsoft RPC Version 2.0 sample program demonstrates\n\
the use of the [auto_handle] attribute. For more information\n\
about attributes and RPC API functions, see the RPC programming\n\
guide and reference.\n\n"
void Usage(char * pszProgramName)
{
fprintf(stderr, "%s", PURPOSE);
fprintf(stderr, "Usage: %s\n", pszProgramName);
exit(1);
}
void _CRTAPI1 main(int argc, char **argv)
{
time_t t1;
time_t t2;
char * pszTime;
int i;
/* allow the user to override settings with command line switches */
for (i = 1; i < argc; i++) {
if ((*argv[i] == '-') || (*argv[i] == '/')) {
switch (tolower(*(argv[i]+1))) {
case 'h':
case '?':
default:
Usage(argv[0]);
}
}
else
Usage(argv[0]);
}
RpcTryExcept {
GetTime(&t1); // GetTime is a remote procedure
GetTime(&t2);
pszTime = ctime(&t1);
printf("time 1= %s\n", pszTime);
pszTime = ctime(&t2);
printf("time 2= %s\n", pszTime);
Shutdown(); // Shutdown is a remote procedure
}
RpcExcept(1) {
printf("The RPC runtime library raised an exception.\n");
printf("Please verify that the server application and \n");
printf("the locator service have been started.");
}
RpcEndExcept
exit(0);
} // end main()
/*********************************************************************/
/* MIDL allocate and free */
/*********************************************************************/
void __RPC_FAR * __RPC_USER midl_user_allocate(size_t len)
{
return(malloc(len));
}
void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
{
free(ptr);
}
/* end file autoc.c */