DYNOUTS.C
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:2k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /******************************************************************************
  2. *       This is a part of the Microsoft Source Code Samples.
  3. *       Copyright (C) 1995-1997 Microsoft Corporation.
  4. *       All rights reserved.
  5. *       This source code is only intended as a supplement to
  6. *       Microsoft Development Tools and/or WinHelp documentation.
  7. *       See these sources for detailed information regarding the
  8. *       Microsoft samples programs.
  9. ******************************************************************************/
  10. //
  11. // Copyright 1996-1997 Microsoft Corporation.  All Rights Reserved.
  12. //
  13. //
  14. // Sample code to show server-side
  15. // memory allocation for an [out] parameter
  16. //
  17. //
  18. #include <stdio.h>
  19. #include <assert.h>
  20. #include <malloc.h>
  21. #include "dynout.h"
  22. #ifdef NODEBUG
  23. #define CHECK_STATUS(x)
  24. #define TRACE(s)
  25. #else
  26. #define CHECK_STATUS(x) {if (x!=RPC_S_OK) { printf("RPC Err: %dnfile = %s, line=%d.",x,__FILE__,__LINE__); exit(x);}}
  27. #define TRACE(s) puts(s)
  28. #endif
  29. void main(int argc,char **argv)
  30. {
  31. RPC_STATUS rpcStatus;
  32. RPC_BINDING_VECTOR  *vectBinding;
  33. unsigned char  *szEntryName;
  34. TRACE("RpcServerRegisterIf");
  35. rpcStatus=RpcServerRegisterIf(MemStuff_v1_0_s_ifspec,0,0);
  36. CHECK_STATUS(rpcStatus);
  37. TRACE("RpcServerUseAllProtseqs");
  38. rpcStatus=RpcServerUseAllProtseqs(RPC_C_PROTSEQ_MAX_REQS_DEFAULT,NULL);
  39. CHECK_STATUS(rpcStatus);
  40. TRACE("RpcServerInqBindings");
  41. rpcStatus=RpcServerInqBindings(&vectBinding);
  42. CHECK_STATUS(rpcStatus);
  43. TRACE("RpcNsBindingExport");
  44. szEntryName="/.:/MyServer";
  45. rpcStatus=RpcNsBindingExport(RPC_C_NS_SYNTAX_DEFAULT,szEntryName,MemStuff_v1_0_s_ifspec,vectBinding,NULL);
  46. CHECK_STATUS(rpcStatus);
  47. TRACE("RpcEpRegister");
  48. rpcStatus=RpcEpRegister(MemStuff_v1_0_s_ifspec,
  49. vectBinding,
  50. NULL,NULL);
  51. CHECK_STATUS(rpcStatus);
  52. TRACE("RpcBindingVectorFree");
  53. rpcStatus=RpcBindingVectorFree(&vectBinding);
  54. CHECK_STATUS(rpcStatus);
  55. puts("nn");
  56. puts("(C) Microsoft New Zealand Limited. Written by Michael Howard, " __DATE__);
  57. puts("nListening....");
  58. rpcStatus=RpcServerListen(1,RPC_C_LISTEN_MAX_CALLS_DEFAULT,FALSE);
  59. CHECK_STATUS(rpcStatus);
  60. }
  61. void  __RPC_FAR * __RPC_API midl_user_allocate(size_t len)
  62. {
  63.     return malloc(len);
  64. }
  65. void __RPC_API midl_user_free(void __RPC_FAR * ptr)
  66. {
  67.     free(ptr);
  68. }