--- mstools/samples/rpc/data/dunion/dunionp.c 2018/08/09 18:20:59 1.1 +++ mstools/samples/rpc/data/dunion/dunionp.c 2018/08/09 18:24:24 1.1.1.2 @@ -1,66 +1,63 @@ /**************************************************************************** - Microsoft RPC Version 1.0 - Copyright Microsoft Corp. 1992 - Discriminated Union Example + Microsoft RPC Version 1.0 + Copyright Microsoft Corp. 1992 + Discriminated Union Example + + FILE: unionp.c - FILE: unionp.c PURPOSE: Remote procedures that are linked with the server - side of RPC distributed application - FUNCTIONS: UnionParamProc() - union, discriminant are parameters - UnionStructProc() - union, discriminant in structure - COMMENTS: + side of RPC distributed application + + FUNCTIONS: UnionParamProc() - union, discriminant are parameters + UnionStructProc() - union, discriminant in structure + + COMMENTS: This distributed application illustrates distriminated + union. ****************************************************************************/ + #include #include -#include -#include "dunion.h" +#include "dunion.h" // header file generated by MIDL compiler -short UnionParamProc( - DISCRIM_UNION_PARAM_TYPE up, - short sDiscrim) + +void UnionParamProc(DISCRIM_UNION_PARAM_TYPE *up, + short sDiscrim) { printf("sDiscrim = %d, data = ", sDiscrim); switch(sDiscrim) { - case 0: - printf("short %d\n", up.sVal); - return(TRUE); - break; - case 1: - printf("float %f\n", up.fVal); - return(TRUE); - break; - case 2: - printf("char %c\n", up.chVal); - return(TRUE); - break; - default: - return(FALSE); - break; - } + case 0: + printf("short %d\n", up->sVal); + break; + case 1: + printf("float %f\n", up->fVal); + break; + case 2: + printf("char %c\n", up->chVal); + break; + default: + printf("invalid\n"); + break; + } } -short UnionStructProc( - DISCRIM_UNION_STRUCT_TYPE u) +void UnionStructProc(DISCRIM_UNION_STRUCT_TYPE *u) { - printf("sDiscrim = %d, data = ", u.sDiscrim); - switch(u.sDiscrim) { - case 0: - printf("short %d\n", u.u.sVal); - return(TRUE); - break; - case 1: - printf("float %f\n", u.u.fVal); - return(TRUE); - break; - case 2: - printf("char %c\n", u.u.chVal); - return(TRUE); - break; - default: - return(FALSE); - break; - } + printf("sDiscrim = %d, data = ", u->sDiscrim); + switch(u->sDiscrim) { + case 0: + printf("short %d\n", u->u.sVal); + break; + case 1: + printf("float %f\n", u->u.fVal); + break; + case 2: + printf("char %c\n", u->u.chVal); + break; + default: + printf("invalid\n"); + break; + } } void Shutdown(void) @@ -71,15 +68,15 @@ void Shutdown(void) status = RpcMgmtStopServerListening(NULL); printf("RpcMgmtStopServerListening returned: 0x%x\n", status); if (status) { - exit(2); + exit(status); } printf("Calling RpcServerUnregisterIf\n"); status = RpcServerUnregisterIf(NULL, NULL, FALSE); printf("RpcServerUnregisterIf returned 0x%x\n", status); if (status) { - exit(2); + exit(status); } } -/* end of file \dunionp.c */ +/* end file dunionp.c */