home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / netds / rpc / cluuid / cluuidp.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-06-11  |  3.2 KB  |  85 lines

  1. /****************************************************************************
  2.                    Microsoft RPC Version 2.0
  3.            Copyright Microsoft Corp. 1992, 1993, 1994- 1996
  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 */
  85.