6 #define TYPE_FORMAT_STRING_SIZE 23
7 #define PROC_FORMAT_STRING_SIZE 21
8 #define TRANSMIT_AS_TABLE_SIZE 0
9 #define WIRE_MARSHAL_TABLE_SIZE 0
11 typedef struct _MIDL_TYPE_FORMAT_STRING
14 unsigned char Format
[ TYPE_FORMAT_STRING_SIZE
];
15 } MIDL_TYPE_FORMAT_STRING
;
17 typedef struct _MIDL_PROC_FORMAT_STRING
20 unsigned char Format
[ PROC_FORMAT_STRING_SIZE
];
21 } MIDL_PROC_FORMAT_STRING
;
23 extern const MIDL_STUB_DESC hello_StubDesc
;
24 extern const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString
;
25 //extern const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString;*/
27 /*****************************************************************
28 * Modified from midl-generated stubs *
29 *****************************************************************/
33 /* [out] */ PCTXTYPE __RPC_FAR
*pphContext
,
34 /* [in] */ long Value
)
36 RPC_BINDING_HANDLE _Handle
= 0;
38 RPC_MESSAGE _RpcMessage
;
40 MIDL_STUB_MESSAGE _StubMsg
;
45 printf("\n*******************************************************************\n");
46 printf("**** CtxOpen() ***\n");
47 printf("*******************************************************************\n\n");
51 RpcRaiseException(RPC_X_NULL_REF_POINTER
);
55 NdrClientInitializeNew(
56 ( PRPC_MESSAGE
)&_RpcMessage
,
57 ( PMIDL_STUB_MESSAGE
)&_StubMsg
,
58 ( PMIDL_STUB_DESC
)&hello_StubDesc
,
65 _StubMsg
.BufferLength
= 4U;
66 NdrGetBuffer( (PMIDL_STUB_MESSAGE
) &_StubMsg
, _StubMsg
.BufferLength
, _Handle
);
68 *(( long __RPC_FAR
* )_StubMsg
.Buffer
)++ = Value
;
70 NdrSendReceive( (PMIDL_STUB_MESSAGE
) &_StubMsg
, (unsigned char __RPC_FAR
*) _StubMsg
.Buffer
);
72 if ( (_RpcMessage
.DataRepresentation
& 0X0000FFFFUL
) != NDR_LOCAL_DATA_REPRESENTATION
)
73 NdrConvert( (PMIDL_STUB_MESSAGE
) &_StubMsg
, (PFORMAT_STRING
) &__MIDL_ProcFormatString
.Format
[0] );
76 printf("Before NdrClientContextUnmarshall: Buflen=%d\nBuffer: ", _StubMsg
.RpcMsg
->BufferLength
);
77 for(buf
= _StubMsg
.Buffer
, i
= 0; i
< _StubMsg
.RpcMsg
->BufferLength
; i
++)
78 printf("0x%x, ", buf
[i
] & 0x0FF);
81 *pphContext
= (void *)0;
82 NdrClientContextUnmarshall(
83 ( PMIDL_STUB_MESSAGE
)&_StubMsg
,
84 ( NDR_CCONTEXT __RPC_FAR
* )pphContext
,
87 ctx
= (char*)*pphContext
;
88 printf("\nNdrClientContextUnmarshall returned: handle=0x%p\n", ctx
);
89 printf("00: 0x%x <- obviously pointer to binding handle copyed from _Handle\n", *((int*)ctx
));
91 printf("04: 0x%x <- unknown field\n", *((int*)ctx
));
94 for(ctx
+=4, i
= 0; i
< 20; i
++)
95 printf("0x%x,", *(ctx
+i
) & 0x0FF); printf(" <- ndr 20 bytes\n\n");
97 printf("Buflen=%d, Buffer: ", _StubMsg
.BufferLength
);
98 for(buf
= _StubMsg
.BufferStart
; buf
< _StubMsg
.BufferEnd
; buf
++)
99 printf("0x%x,", *buf
& 0x0FF);
106 NdrFreeBuffer( (PMIDL_STUB_MESSAGE
) &_StubMsg
);
114 /* [out] */ PCTXTYPE __RPC_FAR
*pphContext
,
115 /* [in] */ long Value
)
118 RPC_BINDING_HANDLE _Handle
= 0;
120 RPC_MESSAGE _RpcMessage
;
122 MIDL_STUB_MESSAGE _StubMsg
;
126 NdrClientInitializeNew(
127 ( PRPC_MESSAGE
)&_RpcMessage
,
128 ( PMIDL_STUB_MESSAGE
)&_StubMsg
,
129 ( PMIDL_STUB_DESC
)&hello_StubDesc
,
136 _StubMsg
.BufferLength
= 4U;
137 NdrGetBuffer( (PMIDL_STUB_MESSAGE
) &_StubMsg
, _StubMsg
.BufferLength
, _Handle
);
139 *(( long __RPC_FAR
* )_StubMsg
.Buffer
)++ = Value
;
141 NdrSendReceive( (PMIDL_STUB_MESSAGE
) &_StubMsg
, (unsigned char __RPC_FAR
*) _StubMsg
.Buffer
);
143 if ( (_RpcMessage
.DataRepresentation
& 0X0000FFFFUL
) != NDR_LOCAL_DATA_REPRESENTATION
)
144 NdrConvert( (PMIDL_STUB_MESSAGE
) &_StubMsg
, (PFORMAT_STRING
) &__MIDL_ProcFormatString
.Format
[0] );
146 *pphContext
= (void *)0;
150 NdrClientContextUnmarshall(
151 ( PMIDL_STUB_MESSAGE
)&_StubMsg
,
157 printf("NdrClientContextUnmarshall reported exception = %d\n", RpcExceptionCode());
165 NdrClientContextUnmarshall(
166 ( PMIDL_STUB_MESSAGE
)&_StubMsg
,
167 (NDR_CCONTEXT __RPC_FAR
* )pphContext
,
172 printf("NdrClientContextUnmarshall reported exception = %d\n", RpcExceptionCode());
179 NdrClientContextMarshall(
180 ( PMIDL_STUB_MESSAGE
)&_StubMsg
,
186 printf("NdrClientContextMarshall reported exception = %d\n", RpcExceptionCode());
192 NDRCContextUnmarshall( NULL
, _Handle
, buf
, _RpcMessage
.DataRepresentation
);
196 printf("NDRCContextUnmarshall reported exception = %d\n", RpcExceptionCode());
201 NdrFreeBuffer( (PMIDL_STUB_MESSAGE
) &_StubMsg
);
207 /* [in] */ PCTXTYPE phContext
)
210 RPC_BINDING_HANDLE _Handle
= 0;
212 RPC_MESSAGE _RpcMessage
;
214 MIDL_STUB_MESSAGE _StubMsg
;
219 printf("\n*******************************************************************\n");
220 printf("**** CtxHello() ***\n");
221 printf("*******************************************************************\n\n");
225 NdrClientInitializeNew(
226 ( PRPC_MESSAGE
)&_RpcMessage
,
227 ( PMIDL_STUB_MESSAGE
)&_StubMsg
,
228 ( PMIDL_STUB_DESC
)&hello_StubDesc
,
234 _Handle
= NDRCContextBinding(( NDR_CCONTEXT
)phContext
);;
239 RpcRaiseException(RPC_X_SS_IN_NULL_CONTEXT
);
242 _StubMsg
.BufferLength
= 20U;
243 NdrGetBuffer( (PMIDL_STUB_MESSAGE
) &_StubMsg
, _StubMsg
.BufferLength
, _Handle
);
245 NdrClientContextMarshall(
246 ( PMIDL_STUB_MESSAGE
)&_StubMsg
,
247 ( NDR_CCONTEXT
)phContext
,
249 printf("After NdrClientContextMarshall: Buflen=%d\nBuffer: ", _StubMsg
.BufferLength
);
250 for(buf
= _StubMsg
.Buffer
, i
= 0; i
< _StubMsg
.BufferLength
; i
++)
251 printf("0x%x, ", buf
[i
] & 0x0FF);
254 NdrSendReceive( (PMIDL_STUB_MESSAGE
) &_StubMsg
, (unsigned char __RPC_FAR
*) _StubMsg
.Buffer
);
259 NdrFreeBuffer( (PMIDL_STUB_MESSAGE
) &_StubMsg
);
268 /* [out][in] */ PCTXTYPE __RPC_FAR
*pphContext
)
271 RPC_BINDING_HANDLE _Handle
= 0;
273 RPC_MESSAGE _RpcMessage
;
275 MIDL_STUB_MESSAGE _StubMsg
;
279 printf("\n*******************************************************************\n");
280 printf("**** CtxClose() ***\n");
281 printf("*******************************************************************\n\n");
285 RpcRaiseException(RPC_X_NULL_REF_POINTER
);
289 NdrClientInitializeNew(
290 ( PRPC_MESSAGE
)&_RpcMessage
,
291 ( PMIDL_STUB_MESSAGE
)&_StubMsg
,
292 ( PMIDL_STUB_DESC
)&hello_StubDesc
,
298 _Handle
= NDRCContextBinding(( NDR_CCONTEXT
)*pphContext
);;
302 _StubMsg
.BufferLength
= 20U;
303 NdrGetBuffer( (PMIDL_STUB_MESSAGE
) &_StubMsg
, _StubMsg
.BufferLength
, _Handle
);
305 NdrClientContextMarshall(
306 ( PMIDL_STUB_MESSAGE
)&_StubMsg
,
307 ( NDR_CCONTEXT
)*pphContext
,
310 NdrSendReceive( (PMIDL_STUB_MESSAGE
) &_StubMsg
, (unsigned char __RPC_FAR
*) _StubMsg
.Buffer
);
312 if ( (_RpcMessage
.DataRepresentation
& 0X0000FFFFUL
) != NDR_LOCAL_DATA_REPRESENTATION
)
313 NdrConvert( (PMIDL_STUB_MESSAGE
) &_StubMsg
, (PFORMAT_STRING
) &__MIDL_ProcFormatString
.Format
[14] );
316 printf("Before NdrClientContextUnmarshall: Buflen=%d\nBuffer: ", _StubMsg
.BufferLength
);
317 for(buf
= _StubMsg
.Buffer
, i
= 0; i
< _StubMsg
.BufferLength
; i
++)
318 printf("0x%x, ", buf
[i
] & 0x0FF);
321 NdrClientContextUnmarshall(
322 ( PMIDL_STUB_MESSAGE
)&_StubMsg
,
323 ( NDR_CCONTEXT __RPC_FAR
* )pphContext
,
327 printf("\nNdrClientContextUnmarshall returned: handle=0x%p\n", *pphContext
);
333 NdrFreeBuffer( (PMIDL_STUB_MESSAGE
) &_StubMsg
);
345 printf("\nPress any key to continue...");
351 void main(int argc
, char **argv
)
354 unsigned long ulCode
;
356 char *pszStringBinding
= NULL
;
357 RPC_BINDING_HANDLE Handle
= 0;
361 int test_value
= 31337;
365 printf("USAGE: client.exe <test_number> [test_value] [interactive]\n"
368 "1. NULL pointer test\n"
369 "2. Context rundown routine");
373 test_num
= atoi(argv
[1]);
374 if(argc
>2) test_value
= atoi(argv
[2]);
375 if(argc
>3) interactive
= 1;
377 status
= RpcStringBindingCompose(NULL
,
386 printf("RpcStringBindingCompose %x\n", status
);
390 status
= RpcBindingFromStringBinding(pszStringBinding
, &hBinding
);
394 printf("RpcBindingFromStringBinding %x\n", status
);
398 RpcStringFree(&pszStringBinding
);
403 m_CtxOpen(&hContext
, test_value
);
404 RpcBindingFree(&hBinding
);
405 m_CtxHello(hContext
);
407 m_CtxClose(&hContext
);
410 /////////////////////////////////////////////////////////////////////////////////////////
413 Handle
= NDRCContextBinding(NULL
);
414 printf("NDRCContextBinding(NULL) returned %p\n", Handle
);
418 printf("NDRCContextBinding(NULL) reported exception = %d\n", RpcExceptionCode());
422 m_CtxOpen2(&hContext
, test_value
);
424 /////////////////////////////////////////////////////////////////////////////////////////
427 NDRCContextMarshall(NULL
, &buffer
);
428 printf("NDRCContextMarshall(NULL) returned %p\n", Handle
);
432 printf("NDRCContextMarshall(NULL) reported exception = %d\n", RpcExceptionCode());
435 /////////////////////////////////////////////////////////////////////////////////////////
438 CtxOpen(&hContext
, test_value
);
443 printf("Unknown test %d\n", test_num
);
449 void __RPC_FAR
* __RPC_USER
midl_user_allocate(size_t len
)
454 void __RPC_USER
midl_user_free(void __RPC_FAR
* ptr
)