Annotation of mstools/samples/rpc/cluuid/cluuidp.c, revision 1.1.1.1

1.1       root        1: /****************************************************************************
                      2:                     Microsoft RPC Version 1.0
                      3:                  Copyright Microsoft Corp. 1992
                      4:                          Cluuid Example
                      5: 
                      6:     FILE:       cluuidp.c
                      7: 
                      8:     PURPOSE:    Remote procedures that are linked with the server
                      9:                 side of RPC distributed application
                     10: 
                     11:     FUNCTIONS:  HelloProc() - prints "hello, world" or other string
                     12:                 HelloProc2() - prints string backwards
                     13: 
                     14:     COMMENTS:   This sample program demonstrates how to supply
                     15:                 multiple implementations of the remote procedure
                     16:                 specified in the interface. It also demonstrates
                     17:                 how the client selects among the implementations
                     18:                 by providing a client object uuid.
                     19: 
                     20:                 The server calls RpcObjectSetType to associate a
                     21:                 client object uuid with the object uuid in the
                     22:                 Object Registry Table. The server initializes a
                     23:                 manager entry point vector (manager epv) and
                     24:                 then calls RpcRegisterIf to associate the interface
                     25:                 uuid and the object uuid with the manager epv in the
                     26:                 Interface Registry Table.
                     27: 
                     28:                 When the client makes a remote procedure call,
                     29:                 the client object uuid is mapped to the object uuid
                     30:                 in the Object Registry Table. The resulting
                     31:                 object uuid and the interface uuid are mapped to
                     32:                 a manager entry point vector in the Interface
                     33:                 Registry Table.
                     34: 
                     35:                 By default, in this example, the server registers
                     36:                 two implementations of the "hello, world" function
                     37:                 HelloProc and HelloProc2.  The HelloProc2
                     38:                 implementation is associated with the object uuid
                     39:                 "11111111-1111-1111-1111-111111111111". When
                     40:                 the client makes a procedure call with a null
                     41:                 uuid, the client's request is mapped to the
                     42:                 original HelloProc.  When the client makes a
                     43:                 procedure call with the client object uuid
                     44:                 "11111111-1111-1111-1111-11111111111", the
                     45:                 client's request is mapped to HelloProc2 (which
                     46:                 prints the string in reverse).
                     47: 
                     48: ****************************************************************************/
                     49: 
                     50: #include <stdlib.h>
                     51: #include <stdio.h>
                     52: #include <string.h>
                     53: #include "cluuid.h"    // header file generated by MIDL compiler
                     54: 
                     55: void HelloProc(unsigned char * pszString)
                     56: {
                     57:     printf("%s\n", pszString);
                     58: }
                     59: 
                     60: void HelloProc2(unsigned char * pszString)
                     61: {
                     62:     printf("%s\n", strrev(pszString));
                     63: }
                     64: 
                     65: void Shutdown(void)
                     66: {
                     67:     RPC_STATUS status;
                     68: 
                     69:     printf("Calling RpcMgmtStopServerListening\n");
                     70:     status = RpcMgmtStopServerListening(NULL);
                     71:     printf("RpcMgmtStopServerListening returned: 0x%x\n", status);
                     72:     if (status) {
                     73:         exit(status);
                     74:     }
                     75: 
                     76:     printf("Calling RpcServerUnregisterIf\n");
                     77:     status = RpcServerUnregisterIf(NULL, NULL, FALSE);
                     78:     printf("RpcServerUnregisterIf returned 0x%x\n", status);
                     79:     if (status) {
                     80:         exit(status);
                     81:     }
                     82: }
                     83: 
                     84: /* end of file cluuidp.c */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.