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

Windows编程

开发平台:

Visual C++

  1. /****************************************************************************
  2.                    Microsoft RPC Version 2.0
  3.            Copyright Microsoft Corp. 1992, 1993, 1994- 1996
  4.                    Discriminated Union Example
  5.     FILE:       unionp.c
  6.     PURPOSE:    Remote procedures that are linked with the server
  7.                 side of RPC distributed application
  8.     FUNCTIONS:  UnionParamProc()  - union, discriminant are parameters
  9.                 UnionStructProc() - union, discriminant in structure
  10.     COMMENTS:   This distributed application illustrates distriminated
  11.                 union.
  12. ****************************************************************************/
  13. #include <stdlib.h>
  14. #include <stdio.h>
  15. #include "dunion.h"    // header file generated by MIDL compiler
  16. void UnionParamProc(DISCRIM_UNION_PARAM_TYPE *up,
  17.                     short                    sDiscrim)
  18. {
  19.     printf("sDiscrim = %d, data = ", sDiscrim);
  20.     switch(sDiscrim) {
  21.     case 0:
  22.         printf("short %dn", up->sVal);
  23.         break;
  24.     case 1:
  25.         printf("float %fn", up->fVal);
  26.         break;
  27.     case 2:
  28.         printf("char %cn", up->chVal);
  29.         break;
  30.     default:
  31.         printf("invalidn");
  32.         break;
  33.     }
  34. }
  35. void UnionStructProc(DISCRIM_UNION_STRUCT_TYPE *u)
  36. {
  37.     printf("sDiscrim = %d, data = ", u->sDiscrim);
  38.     switch(u->sDiscrim) {
  39.     case 0:
  40.         printf("short %dn", u->u.sVal);
  41.         break;
  42.     case 1:
  43.         printf("float %fn", u->u.fVal);
  44.         break;
  45.     case 2:
  46.         printf("char %cn", u->u.chVal);
  47.         break;
  48.     default:
  49.         printf("invalidn");
  50.         break;
  51.     }
  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 file dunionp.c */