{
/* [async] TestSleep(); */
[async] TestBytePipeIn();
+ [async] TestBytePipeOut();
+// [async] TestBytePipeInOut();
}
\r
\r
/* File created by MIDL compiler version 7.00.0555 */\r
-/* at Fri Sep 20 18:05:28 2013\r
+/* at Fri Sep 20 22:20:36 2013\r
*/\r
/* Compiler settings for rpcecho.idl, rpcecho.acf:\r
Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555 \r
\r
/* [async] */ void TestBytePipeIn( \r
/* [in] */ PRPC_ASYNC_STATE TestBytePipeIn_AsyncHandle,\r
- /* [in] */ long count,\r
+ /* [in] */ long num_chunks,\r
+ /* [in] */ long chunk_size,\r
/* [ref][in] */ ASYNC_BYTE_PIPE *in_pipe);\r
\r
+/* [async] */ void TestBytePipeOut( \r
+ /* [in] */ PRPC_ASYNC_STATE TestBytePipeOut_AsyncHandle,\r
+ /* [in] */ long num_chunks,\r
+ /* [in] */ long chunk_size,\r
+ /* [ref][out] */ ASYNC_BYTE_PIPE *out_pipe);\r
+\r
\r
extern handle_t rpcecho_IfHandle;\r
\r
typedef pipe byte BYTE_PIPE;
long TestBytePipeIn(
- [in] long count,
+ [in] long num_chunks,
+ [in] long chunk_size,
[in,ref] BYTE_PIPE *in_pipe
);
long TestBytePipeOut(
- [in] long count,
+ [in] long num_chunks,
+ [in] long chunk_size,
[out,ref] BYTE_PIPE *out_pipe
);
#if 0
long TestBytePipeInOut(
- [in] long count,
+ [in] long num_chunks,
+ [in] long chunk_size,
[in,out,ref] BYTE_PIPE *in_out_pipe
);
#endif
\r
\r
/* File created by MIDL compiler version 7.00.0555 */\r
-/* at Fri Sep 20 18:05:28 2013\r
+/* at Fri Sep 20 22:20:36 2013\r
*/\r
/* Compiler settings for rpcecho.idl, rpcecho.acf:\r
Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555 \r
\r
#include "rpcecho.h"\r
\r
-#define TYPE_FORMAT_STRING_SIZE 249 \r
-#define PROC_FORMAT_STRING_SIZE 437 \r
+#define TYPE_FORMAT_STRING_SIZE 263 \r
+#define PROC_FORMAT_STRING_SIZE 493 \r
#define EXPR_FORMAT_STRING_SIZE 1 \r
#define TRANSMIT_AS_TABLE_SIZE 0 \r
#define WIRE_MARSHAL_TABLE_SIZE 0 \r
\r
/* [async] */ void TestBytePipeIn( \r
/* [in] */ PRPC_ASYNC_STATE TestBytePipeIn_AsyncHandle,\r
- /* [in] */ long count,\r
+ /* [in] */ long num_chunks,\r
+ /* [in] */ long chunk_size,\r
/* [ref][in] */ ASYNC_BYTE_PIPE *in_pipe)\r
{\r
\r
( PMIDL_STUB_DESC )&rpcecho_StubDesc,\r
(PFORMAT_STRING) &rpcecho__MIDL_ProcFormatString.Format[392],\r
TestBytePipeIn_AsyncHandle,\r
- count,\r
+ num_chunks,\r
+ chunk_size,\r
in_pipe);\r
\r
}\r
\r
\r
+/* [async] */ void TestBytePipeOut( \r
+ /* [in] */ PRPC_ASYNC_STATE TestBytePipeOut_AsyncHandle,\r
+ /* [in] */ long num_chunks,\r
+ /* [in] */ long chunk_size,\r
+ /* [ref][out] */ ASYNC_BYTE_PIPE *out_pipe)\r
+{\r
+\r
+ NdrAsyncClientCall(\r
+ ( PMIDL_STUB_DESC )&rpcecho_StubDesc,\r
+ (PFORMAT_STRING) &rpcecho__MIDL_ProcFormatString.Format[442],\r
+ TestBytePipeOut_AsyncHandle,\r
+ num_chunks,\r
+ chunk_size,\r
+ out_pipe);\r
+ \r
+}\r
+\r
+\r
#if !defined(__RPC_WIN64__)\r
#error Invalid build platform for this stub.\r
#endif\r
0x48, /* Old Flags: */\r
/* 394 */ NdrFcLong( 0x0 ), /* 0 */\r
/* 398 */ NdrFcShort( 0xa ), /* 10 */\r
-/* 400 */ NdrFcShort( 0x20 ), /* x86 Stack size/offset = 32 */\r
-/* 402 */ NdrFcShort( 0x8 ), /* 8 */\r
+/* 400 */ NdrFcShort( 0x28 ), /* x86 Stack size/offset = 40 */\r
+/* 402 */ NdrFcShort( 0x10 ), /* 16 */\r
/* 404 */ NdrFcShort( 0x8 ), /* 8 */\r
/* 406 */ 0xcc, /* Oi2 Flags: has return, has pipes, has ext, has async handle */\r
- 0x3, /* 3 */\r
+ 0x4, /* 4 */\r
/* 408 */ 0xa, /* 10 */\r
0x1, /* Ext Flags: new corr desc, */\r
/* 410 */ NdrFcShort( 0x0 ), /* 0 */\r
/* 414 */ NdrFcShort( 0x0 ), /* 0 */\r
/* 416 */ NdrFcShort( 0x0 ), /* 0 */\r
\r
- /* Parameter count */\r
+ /* Parameter num_chunks */\r
\r
/* 418 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */\r
/* 420 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */\r
/* 422 */ 0x8, /* FC_LONG */\r
0x0, /* 0 */\r
\r
- /* Parameter in_pipe */\r
+ /* Parameter chunk_size */\r
\r
-/* 424 */ NdrFcShort( 0x10c ), /* Flags: pipe, in, simple ref, */\r
+/* 424 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */\r
/* 426 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */\r
-/* 428 */ NdrFcShort( 0xf0 ), /* Type Offset=240 */\r
+/* 428 */ 0x8, /* FC_LONG */\r
+ 0x0, /* 0 */\r
\r
- /* Return value */\r
+ /* Parameter in_pipe */\r
\r
-/* 430 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */\r
+/* 430 */ NdrFcShort( 0x10c ), /* Flags: pipe, in, simple ref, */\r
/* 432 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */\r
-/* 434 */ 0x8, /* FC_LONG */\r
+/* 434 */ NdrFcShort( 0xf0 ), /* Type Offset=240 */\r
+\r
+ /* Return value */\r
+\r
+/* 436 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */\r
+/* 438 */ NdrFcShort( 0x20 ), /* x86 Stack size/offset = 32 */\r
+/* 440 */ 0x8, /* FC_LONG */\r
+ 0x0, /* 0 */\r
+\r
+ /* Procedure TestBytePipeOut */\r
+\r
+/* 442 */ 0x32, /* FC_BIND_PRIMITIVE */\r
+ 0x48, /* Old Flags: */\r
+/* 444 */ NdrFcLong( 0x0 ), /* 0 */\r
+/* 448 */ NdrFcShort( 0xb ), /* 11 */\r
+/* 450 */ NdrFcShort( 0x28 ), /* x86 Stack size/offset = 40 */\r
+/* 452 */ NdrFcShort( 0x10 ), /* 16 */\r
+/* 454 */ NdrFcShort( 0x8 ), /* 8 */\r
+/* 456 */ 0xcc, /* Oi2 Flags: has return, has pipes, has ext, has async handle */\r
+ 0x4, /* 4 */\r
+/* 458 */ 0xa, /* 10 */\r
+ 0x1, /* Ext Flags: new corr desc, */\r
+/* 460 */ NdrFcShort( 0x0 ), /* 0 */\r
+/* 462 */ NdrFcShort( 0x0 ), /* 0 */\r
+/* 464 */ NdrFcShort( 0x0 ), /* 0 */\r
+/* 466 */ NdrFcShort( 0x0 ), /* 0 */\r
+\r
+ /* Parameter num_chunks */\r
+\r
+/* 468 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */\r
+/* 470 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */\r
+/* 472 */ 0x8, /* FC_LONG */\r
+ 0x0, /* 0 */\r
+\r
+ /* Parameter chunk_size */\r
+\r
+/* 474 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */\r
+/* 476 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */\r
+/* 478 */ 0x8, /* FC_LONG */\r
+ 0x0, /* 0 */\r
+\r
+ /* Parameter out_pipe */\r
+\r
+/* 480 */ NdrFcShort( 0x4114 ), /* Flags: pipe, out, simple ref, srv alloc size=16 */\r
+/* 482 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */\r
+/* 484 */ NdrFcShort( 0xfe ), /* Type Offset=254 */\r
+\r
+ /* Return value */\r
+\r
+/* 486 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */\r
+/* 488 */ NdrFcShort( 0x20 ), /* x86 Stack size/offset = 32 */\r
+/* 490 */ 0x8, /* FC_LONG */\r
0x0, /* 0 */\r
\r
0x0\r
/* 242 */ NdrFcShort( 0xfffc ), /* Offset= -4 (238) */\r
/* 244 */ NdrFcShort( 0x1 ), /* 1 */\r
/* 246 */ NdrFcShort( 0x1 ), /* 1 */\r
+/* 248 */ \r
+ 0x11, 0x4, /* FC_RP [alloced_on_stack] */\r
+/* 250 */ NdrFcShort( 0x4 ), /* Offset= 4 (254) */\r
+/* 252 */ 0x1, /* FC_BYTE */\r
+ 0x5c, /* FC_PAD */\r
+/* 254 */ 0xb5, /* FC_PIPE */\r
+ 0x0, /* 0 */\r
+/* 256 */ NdrFcShort( 0xfffc ), /* Offset= -4 (252) */\r
+/* 258 */ NdrFcShort( 0x1 ), /* 1 */\r
+/* 260 */ NdrFcShort( 0x1 ), /* 1 */\r
\r
0x0\r
}\r
278,\r
322,\r
354,\r
- 392\r
+ 392,\r
+ 442\r
};\r
\r
\r
\r
\r
/* File created by MIDL compiler version 7.00.0555 */\r
-/* at Fri Sep 20 18:05:28 2013\r
+/* at Fri Sep 20 22:20:36 2013\r
*/\r
/* Compiler settings for rpcecho.idl, rpcecho.acf:\r
Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555 \r
#include <string.h>\r
#include "rpcecho.h"\r
\r
-#define TYPE_FORMAT_STRING_SIZE 249 \r
-#define PROC_FORMAT_STRING_SIZE 437 \r
+#define TYPE_FORMAT_STRING_SIZE 263 \r
+#define PROC_FORMAT_STRING_SIZE 493 \r
#define EXPR_FORMAT_STRING_SIZE 1 \r
#define TRANSMIT_AS_TABLE_SIZE 0 \r
#define WIRE_MARSHAL_TABLE_SIZE 0 \r
0x48, /* Old Flags: */\r
/* 394 */ NdrFcLong( 0x0 ), /* 0 */\r
/* 398 */ NdrFcShort( 0xa ), /* 10 */\r
-/* 400 */ NdrFcShort( 0x20 ), /* x86 Stack size/offset = 32 */\r
-/* 402 */ NdrFcShort( 0x8 ), /* 8 */\r
+/* 400 */ NdrFcShort( 0x28 ), /* x86 Stack size/offset = 40 */\r
+/* 402 */ NdrFcShort( 0x10 ), /* 16 */\r
/* 404 */ NdrFcShort( 0x8 ), /* 8 */\r
/* 406 */ 0xcc, /* Oi2 Flags: has return, has pipes, has ext, has async handle */\r
- 0x3, /* 3 */\r
+ 0x4, /* 4 */\r
/* 408 */ 0xa, /* 10 */\r
0x1, /* Ext Flags: new corr desc, */\r
/* 410 */ NdrFcShort( 0x0 ), /* 0 */\r
/* 414 */ NdrFcShort( 0x0 ), /* 0 */\r
/* 416 */ NdrFcShort( 0x0 ), /* 0 */\r
\r
- /* Parameter count */\r
+ /* Parameter num_chunks */\r
\r
/* 418 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */\r
/* 420 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */\r
/* 422 */ 0x8, /* FC_LONG */\r
0x0, /* 0 */\r
\r
- /* Parameter in_pipe */\r
+ /* Parameter chunk_size */\r
\r
-/* 424 */ NdrFcShort( 0x10c ), /* Flags: pipe, in, simple ref, */\r
+/* 424 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */\r
/* 426 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */\r
-/* 428 */ NdrFcShort( 0xf0 ), /* Type Offset=240 */\r
+/* 428 */ 0x8, /* FC_LONG */\r
+ 0x0, /* 0 */\r
\r
- /* Return value */\r
+ /* Parameter in_pipe */\r
\r
-/* 430 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */\r
+/* 430 */ NdrFcShort( 0x10c ), /* Flags: pipe, in, simple ref, */\r
/* 432 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */\r
-/* 434 */ 0x8, /* FC_LONG */\r
+/* 434 */ NdrFcShort( 0xf0 ), /* Type Offset=240 */\r
+\r
+ /* Return value */\r
+\r
+/* 436 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */\r
+/* 438 */ NdrFcShort( 0x20 ), /* x86 Stack size/offset = 32 */\r
+/* 440 */ 0x8, /* FC_LONG */\r
+ 0x0, /* 0 */\r
+\r
+ /* Procedure TestBytePipeOut */\r
+\r
+/* 442 */ 0x32, /* FC_BIND_PRIMITIVE */\r
+ 0x48, /* Old Flags: */\r
+/* 444 */ NdrFcLong( 0x0 ), /* 0 */\r
+/* 448 */ NdrFcShort( 0xb ), /* 11 */\r
+/* 450 */ NdrFcShort( 0x28 ), /* x86 Stack size/offset = 40 */\r
+/* 452 */ NdrFcShort( 0x10 ), /* 16 */\r
+/* 454 */ NdrFcShort( 0x8 ), /* 8 */\r
+/* 456 */ 0xcc, /* Oi2 Flags: has return, has pipes, has ext, has async handle */\r
+ 0x4, /* 4 */\r
+/* 458 */ 0xa, /* 10 */\r
+ 0x1, /* Ext Flags: new corr desc, */\r
+/* 460 */ NdrFcShort( 0x0 ), /* 0 */\r
+/* 462 */ NdrFcShort( 0x0 ), /* 0 */\r
+/* 464 */ NdrFcShort( 0x0 ), /* 0 */\r
+/* 466 */ NdrFcShort( 0x0 ), /* 0 */\r
+\r
+ /* Parameter num_chunks */\r
+\r
+/* 468 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */\r
+/* 470 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */\r
+/* 472 */ 0x8, /* FC_LONG */\r
+ 0x0, /* 0 */\r
+\r
+ /* Parameter chunk_size */\r
+\r
+/* 474 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */\r
+/* 476 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */\r
+/* 478 */ 0x8, /* FC_LONG */\r
+ 0x0, /* 0 */\r
+\r
+ /* Parameter out_pipe */\r
+\r
+/* 480 */ NdrFcShort( 0x4114 ), /* Flags: pipe, out, simple ref, srv alloc size=16 */\r
+/* 482 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */\r
+/* 484 */ NdrFcShort( 0xfe ), /* Type Offset=254 */\r
+\r
+ /* Return value */\r
+\r
+/* 486 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */\r
+/* 488 */ NdrFcShort( 0x20 ), /* x86 Stack size/offset = 32 */\r
+/* 490 */ 0x8, /* FC_LONG */\r
0x0, /* 0 */\r
\r
0x0\r
/* 242 */ NdrFcShort( 0xfffc ), /* Offset= -4 (238) */\r
/* 244 */ NdrFcShort( 0x1 ), /* 1 */\r
/* 246 */ NdrFcShort( 0x1 ), /* 1 */\r
+/* 248 */ \r
+ 0x11, 0x4, /* FC_RP [alloced_on_stack] */\r
+/* 250 */ NdrFcShort( 0x4 ), /* Offset= 4 (254) */\r
+/* 252 */ 0x1, /* FC_BYTE */\r
+ 0x5c, /* FC_PAD */\r
+/* 254 */ 0xb5, /* FC_PIPE */\r
+ 0x0, /* 0 */\r
+/* 256 */ NdrFcShort( 0xfffc ), /* Offset= -4 (252) */\r
+/* 258 */ NdrFcShort( 0x1 ), /* 1 */\r
+/* 260 */ NdrFcShort( 0x1 ), /* 1 */\r
\r
0x0\r
}\r
278,\r
322,\r
354,\r
- 392\r
+ 392,\r
+ 442\r
};\r
\r
\r
NdrServerCall2,\r
NdrServerCall2,\r
NdrAsyncServerCall,\r
+ NdrAsyncServerCall,\r
0\r
};\r
static const RPC_DISPATCH_TABLE rpcecho_v1_0_DispatchTable = \r
{\r
- 11,\r
+ 12,\r
(RPC_DISPATCH_FUNCTION*)rpcecho_table\r
};\r
\r
(SERVER_ROUTINE)TestEnum,\r
(SERVER_ROUTINE)TestSurrounding,\r
(SERVER_ROUTINE)TestDoublePointer,\r
- (SERVER_ROUTINE)TestBytePipeIn\r
+ (SERVER_ROUTINE)TestBytePipeIn,\r
+ (SERVER_ROUTINE)TestBytePipeOut\r
};\r
\r
static const MIDL_SERVER_INFO rpcecho_ServerInfo = \r
void TestBytePipeIn(
PRPC_ASYNC_STATE TestBytePipeIn_AsyncHandle,
- long count,
+ long num_chunks,
+ long chunk_size,
ASYNC_BYTE_PIPE *in_pipe)
{
long ret;
byte in_bytes[0x80000];
- int bytes_count;
+ int in_bytes_count;
+ int i;
printf("TestBytePipeIn: Start\n");
fflush(stdout);
- do {
- in_pipe->pull(in_pipe->state, in_bytes, sizeof(in_bytes), &bytes_count);
- printf("pull bytes_count[%u]\n", bytes_count);
+ in_bytes_count = sizeof(in_bytes);
+ for (i=0; in_bytes_count > 0; i++) {
+ in_bytes_count = sizeof(in_bytes);
+ in_pipe->pull(in_pipe->state, in_bytes, sizeof(byte), &in_bytes_count);
+ printf("pull[%u] bytes_count[%u]\n", i, in_bytes_count);
fflush(stdout);
- } while (bytes_count > 0);
+ }
printf("TestBytePipeIn: End\n");
fflush(stdout);
- ret = count;
+ ret = i;
RpcAsyncCompleteCall(TestBytePipeIn_AsyncHandle, &ret);
}
+void TestBytePipeOut(
+ PRPC_ASYNC_STATE TestBytePipeOut_AsyncHandle,
+ long num_chunks,
+ long chunk_size,
+ ASYNC_BYTE_PIPE *out_pipe)
+{
+ long ret;
+ byte *out_bytes = NULL;
+ unsigned long out_alloc_size = 0;
+ unsigned long out_bytes_count = 0;
+ int i = 0;
+
+ printf("TestBytePipeOut: Start\n");
+ fflush(stdout);
+
+ out_alloc_size = chunk_size * sizeof(byte);
+ out_pipe->alloc(out_pipe->state, out_alloc_size, &out_bytes, &out_bytes_count);
+ memset(out_bytes, 0xCC, out_bytes_count * sizeof(byte));
+
+ for (i = 0; i <= num_chunks; i++) {
+ if (i == num_chunks) {
+ out_bytes_count = 0;
+ }
+ printf("[%u] push outb_len[%u]\n", i, out_bytes_count);
+ fflush(stdout);
+ out_pipe->push(out_pipe->state, out_bytes, out_bytes_count);
+ }
+
+ printf("TestBytePipeOut: End\n");
+ fflush(stdout);
+ ret = i;
+ RpcAsyncCompleteCall(TestBytePipeOut_AsyncHandle, &ret);
+}
+
void main(int argc, char **argv)
{
RPC_STATUS status;