DUNION.IDL
[ uuid (87E5BFA0-CA46-1067-B31B-00DD010662DA), 
  version(1.0), 
  pointer_default(unique) 
] 
interface dunion 
{ 
 
typedef [switch_type(short)] union { 
    [case(0)] short          sVal; 
    [case(1)] float          fVal; 
    [case(2)] unsigned char  chVal; 
    [default] ; 
} DISCRIM_UNION_PARAM_TYPE; 
 
typedef DISCRIM_UNION_PARAM_TYPE DISCRIM_UNION_FIELD_TYPE; 
 
typedef struct { 
    short                                          sDiscrim;  
    [switch_is(sDiscrim)] DISCRIM_UNION_FIELD_TYPE u; 
} DISCRIM_UNION_STRUCT_TYPE; 
 
 
void UnionParamProc( 
    [in, switch_is(sDiscrim)] DISCRIM_UNION_PARAM_TYPE *UnionParam, 
    [in]                      short                    sDiscrim 
    ); 
 
void UnionStructProc( 
    [in] DISCRIM_UNION_STRUCT_TYPE *UnionStruct); 
 
void Shutdown(void); 
 
}