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