home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / netds / rpc / dynout / dynouts.c < prev    next >
C/C++ Source or Header  |  1997-10-09  |  2KB  |  83 lines

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