CLUUIDP.C
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

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