File:  [WindowsNT SDKs] / mstools / samples / rpc / data / dunion / dunionp.c
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs
Thu Aug 9 18:24:24 2018 UTC (7 years, 9 months ago) by root
Branches: msft, MAIN
CVS tags: ntsdk-nov-1993, ntsdk-jul-1993, HEAD
Microsoft Windows NT Build 511 (SDK Final Release) 07-24-1993

/****************************************************************************
                    Microsoft RPC Version 1.0
                 Copyright Microsoft Corp. 1992
                   Discriminated Union Example

    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:   This distributed application illustrates distriminated
                union.

****************************************************************************/

#include <stdlib.h>
#include <stdio.h>
#include "dunion.h"    // header file generated by MIDL compiler


void UnionParamProc(DISCRIM_UNION_PARAM_TYPE *up,
                    short                    sDiscrim)
{
    printf("sDiscrim = %d, data = ", sDiscrim);
    switch(sDiscrim) {
    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;
    }
}

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);
        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)
{
    RPC_STATUS status;

    printf("Calling RpcMgmtStopServerListening\n");
    status = RpcMgmtStopServerListening(NULL);
    printf("RpcMgmtStopServerListening returned: 0x%x\n", status);
    if (status) {
        exit(status);
    }

    printf("Calling RpcServerUnregisterIf\n");
    status = RpcServerUnregisterIf(NULL, NULL, FALSE);
    printf("RpcServerUnregisterIf returned 0x%x\n", status);
    if (status) {
        exit(status);
    }
}

/* end file dunionp.c */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.