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

Windows编程

开发平台:

Visual C++

  1. #define CLEARVCB(vcb) memset(&vcb, 0, sizeof(vcb))
  2. #undef DEBUG
  3. #undef DEBUGCALLS
  4. #ifdef DEBUGCALLS
  5. #define ASYNCAPPC(handle, vcbp, hasync) { 
  6. printf("asyncappc: %x . . . ", APPC_FLIPI(vcbp->hdr.opcode)); 
  7. hasync = WinAsyncAPPCEx(handle, (long) vcbp); 
  8. printf("donen");
  9. }
  10. #else
  11. #define ASYNCAPPC(handle, vcbp, hasync) 
  12. hasync = WinAsyncAPPCEx(handle, (long) vcbp)
  13. #endif
  14. #ifdef DEBUG
  15. #define APPCDBG(x) x
  16. #else
  17. #define APPCDBG(x)
  18. #endif
  19. #define WINAPPCVERSION 0x0001
  20. typedef union vcb_u {
  21. struct appc_hdr              hdr;
  22.     struct receive_allocate      rcvalloc;
  23.     struct mc_receive_and_wait   rcvwait;
  24.     struct tp_ended              tpend;
  25. struct tp_started tpstart;
  26. struct mc_allocate allocate;
  27. struct mc_send_data snddata;
  28. struct mc_flush flush;
  29. struct mc_prepare_to_receive torec;
  30. struct mc_confirm confirm;
  31. struct mc_confirmed confirmed;
  32. struct mc_deallocate dealloc;
  33. struct mc_get_attributes getattrib;
  34. } vcb_t;
  35. typedef struct tpconvid_st {
  36. /* TP ID and Conversation ID for read conversation */
  37. unsigned char r_tp_id[8];
  38. unsigned long int  r_conv_id;
  39. unsigned char r_valid;
  40. /* TP ID and Conversation ID for write conversation */
  41. unsigned char w_tp_id[8];
  42. unsigned long int w_conv_id;
  43. unsigned char  w_valid;
  44. } *tpconvid_t;
  45. // this has the fully qualified partner lu name and time used for identifing 
  46. // incoming sessions
  47. typedef struct name_time_st {
  48. unsigned char fqplu_name[17];
  49. DWORD time;
  50. } name_time_t;
  51. typedef struct readnode_st {
  52. name_time_t name_time;
  53. tpconvid_t tpconv;
  54. } *readnode_t;
  55. // --- error codes ---
  56. #define APPCLIB_ERROR_BASE 0x20000000 // bit 29 is user error
  57. #define APPCLIB_ASYNC_FAILED APPCLIB_ERROR_BASE + 0 // WinAPPCAsyncEx failed
  58. #define APPCLIB_NO_INIT APPCLIB_ERROR_BASE + 1 // appcinit() wasn't called
  59. // --- exported function prototypes ---
  60. int appcinit(void);
  61. BOOL WINAPI appcdestroy(void);
  62. tpconvid_t appclisten(TCHAR *tpname);
  63. tpconvid_t appcconnect(TCHAR *lu_alias, TCHAR *plu_alias, 
  64.    TCHAR *tp_name, TCHAR *loc_tp_name, TCHAR *mode_name);
  65. int appcread(tpconvid_t tpconv, void *data, int maxlen);
  66. void appcwrite(tpconvid_t tpconv, void *data, int len);
  67. int appcvalid(tpconvid_t tpconv);
  68. void appcclose(tpconvid_t tpconv);