some experiments with ref ptrs typedef struct { short x; } xstruct; uint16 echo_TestRef([in] xstruct foo); short v = 13; xstruct r; r.x = v; echo_TestRef(r); [0D 00] ---------------------------------------------------- typedef struct { short *x; } xstruct; uint16 echo_TestRef([in] xstruct foo); short v = 13; xstruct r; r.x = &v; echo_TestRef(r); [PP PP PP PP 0D 00] xstruct r; r.x = NULL; echo_TestRef(r); [00 00 00 00] ---------------------------------------------------- typedef struct { [ref] short *x; } xstruct; uint16 echo_TestRef([in] xstruct foo); short v = 13; xstruct r; r.x = &v; echo_TestRef(r); [XX XX XX XX 0D 00] xstruct r; r.x = NULL; echo_TestRef(r); [client runtime error 0x6f4] ---------------------------------------------------- typedef struct { short x; } xstruct; uint16 echo_TestRef([in] xstruct *foo); short v = 13; xstruct r; r.x = v; echo_TestRef(&r); [0D 00] echo_TestRef(NULL); [client runtime error 0x6f4] ---------------------------------------------------- typedef struct { short x; } xstruct; uint16 echo_TestRef([in,ref] xstruct *foo); short v = 13; xstruct r; r.x = v; echo_TestRef(&r); [0D 00] echo_TestRef(NULL); [client runtime error 0x6f4] ---------------------------------------------------- typedef struct { short x; } xstruct; uint16 echo_TestRef([in,unique] xstruct *foo); short v = 13; xstruct r; r.x = v; echo_TestRef(&r); [PP PP PP PP 0D 00] echo_TestRef(NULL); [00 00 00 00] ---------------------------------------------------- typedef struct { short x; } xstruct; uint16 echo_TestRef([out] xstruct foo); [idl compiler error] ---------------------------------------------------- typedef struct { short x; } xstruct; void echo_TestRef([out] xstruct *foo); xstruct r; echo_TestRef(&r); r.x -> 13; [0D 00] echo_TestRef(NULL); [client runtime error 0x6f4] ---------------------------------------------------- typedef struct { short x; } xstruct; void echo_TestRef([out,ref] xstruct *foo); xstruct r; echo_TestRef(&r); r.x -> 13; [0D 00] echo_TestRef(NULL); [client runtime error 0x6f4] ---------------------------------------------------- typedef struct { short x; } xstruct; void echo_TestRef([out,unique] xstruct *foo); [idl compiler error] ---------------------------------------------------- void echo_TestRef([in] short **foo); short v = 13; short *pv = &v; echo_TestRef(&pv); [PP PP PP PP 0D 00] short *pv = NULL; echo_TestRef(&pv); [00 00 00 00] echo_TestRef(NULL); [client runtime error 0x6f4] ---------------------------------------------------- void echo_TestRef([in,ref] short **foo); short v = 13; short *pv = &v; echo_TestRef(&pv); [PP PP PP PP 0D 00] short *pv = NULL; echo_TestRef(&pv); [00 00 00 00] echo_TestRef(NULL); [client runtime error 0x6f4]