|
|
1.1 ! root 1: /**************************************************************************** ! 2: Microsoft RPC Version 1.0 ! 3: Copyright Microsoft Corp. 1992 ! 4: Discriminated Union Example ! 5: ! 6: FILE: unionp.c ! 7: PURPOSE: Remote procedures that are linked with the server ! 8: side of RPC distributed application ! 9: FUNCTIONS: UnionParamProc() - union, discriminant are parameters ! 10: UnionStructProc() - union, discriminant in structure ! 11: COMMENTS: ! 12: ! 13: ****************************************************************************/ ! 14: #include <stdlib.h> ! 15: #include <stdio.h> ! 16: #include <rpc.h> ! 17: #include "dunion.h" ! 18: ! 19: short UnionParamProc( ! 20: DISCRIM_UNION_PARAM_TYPE up, ! 21: short sDiscrim) ! 22: { ! 23: printf("sDiscrim = %d, data = ", sDiscrim); ! 24: switch(sDiscrim) { ! 25: case 0: ! 26: printf("short %d\n", up.sVal); ! 27: return(TRUE); ! 28: break; ! 29: case 1: ! 30: printf("float %f\n", up.fVal); ! 31: return(TRUE); ! 32: break; ! 33: case 2: ! 34: printf("char %c\n", up.chVal); ! 35: return(TRUE); ! 36: break; ! 37: default: ! 38: return(FALSE); ! 39: break; ! 40: } ! 41: } ! 42: ! 43: short UnionStructProc( ! 44: DISCRIM_UNION_STRUCT_TYPE u) ! 45: { ! 46: printf("sDiscrim = %d, data = ", u.sDiscrim); ! 47: switch(u.sDiscrim) { ! 48: case 0: ! 49: printf("short %d\n", u.u.sVal); ! 50: return(TRUE); ! 51: break; ! 52: case 1: ! 53: printf("float %f\n", u.u.fVal); ! 54: return(TRUE); ! 55: break; ! 56: case 2: ! 57: printf("char %c\n", u.u.chVal); ! 58: return(TRUE); ! 59: break; ! 60: default: ! 61: return(FALSE); ! 62: break; ! 63: } ! 64: } ! 65: ! 66: void Shutdown(void) ! 67: { ! 68: RPC_STATUS status; ! 69: ! 70: printf("Calling RpcMgmtStopServerListening\n"); ! 71: status = RpcMgmtStopServerListening(NULL); ! 72: printf("RpcMgmtStopServerListening returned: 0x%x\n", status); ! 73: if (status) { ! 74: exit(2); ! 75: } ! 76: ! 77: printf("Calling RpcServerUnregisterIf\n"); ! 78: status = RpcServerUnregisterIf(NULL, NULL, FALSE); ! 79: printf("RpcServerUnregisterIf returned 0x%x\n", status); ! 80: if (status) { ! 81: exit(2); ! 82: } ! 83: } ! 84: ! 85: /* end of file \dunionp.c */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.