mirror of
https://github.com/samba-team/samba.git
synced 2024-12-27 03:21:53 +03:00
efc03df292
(This used to be commit e48202275e
)
221 lines
2.9 KiB
Plaintext
221 lines
2.9 KiB
Plaintext
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]
|
|
|
|
|