d4drvif.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. /*
  2. * d4drvif.h
  3. *
  4. * DOT4 driver IOCTL interface
  5. *
  6. * This file is part of the w32api package.
  7. *
  8. * Contributors:
  9. * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
  10. *
  11. * THIS SOFTWARE IS NOT COPYRIGHTED
  12. *
  13. * This source code is offered for use in the public domain. You may
  14. * use, modify or distribute it freely.
  15. *
  16. * This code is distributed in the hope that it will be useful but
  17. * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18. * DISCLAIMED. This includes but is not limited to warranties of
  19. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20. *
  21. */
  22. #pragma once
  23. #define _DOT4DRVIF_H
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. #define MAX_SERVICE_LENGTH 40
  28. #ifndef CTL_CODE
  29. #define CTL_CODE( DeviceType, Function, Method, Access ) ( \
  30. ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
  31. )
  32. #define METHOD_BUFFERED 0
  33. #define METHOD_IN_DIRECT 1
  34. #define METHOD_OUT_DIRECT 2
  35. #define METHOD_NEITHER 3
  36. #define FILE_ANY_ACCESS 0
  37. #define FILE_READ_ACCESS 0x0001
  38. #define FILE_WRITE_ACCESS 0x0002
  39. #endif /* CTL_CODE */
  40. #define FILE_DEVICE_DOT4 0x3a
  41. #define IOCTL_DOT4_USER_BASE 2049
  42. #define IOCTL_DOT4_LAST IOCTL_DOT4_USER_BASE + 9
  43. #define IOCTL_DOT4_ADD_ACTIVITY_BROADCAST \
  44. CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
  45. #define IOCTL_DOT4_CLOSE_CHANNEL \
  46. CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
  47. #define IOCTL_DOT4_CREATE_SOCKET \
  48. CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 7, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
  49. #define IOCTL_DOT4_DESTROY_SOCKET \
  50. CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 9, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
  51. #define IOCTL_DOT4_OPEN_CHANNEL \
  52. CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 0, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
  53. #define IOCTL_DOT4_READ \
  54. CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 2, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
  55. #define IOCTL_DOT4_REMOVE_ACTIVITY_BROADCAST \
  56. CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
  57. #define IOCTL_DOT4_WAIT_ACTIVITY_BROADCAST \
  58. CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 6, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
  59. #define IOCTL_DOT4_WAIT_FOR_CHANNEL \
  60. CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 8, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
  61. #define IOCTL_DOT4_WRITE \
  62. CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 3, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
  63. typedef struct _DOT4_DC_CREATE_DATA {
  64. unsigned char bPsid;
  65. CHAR pServiceName[MAX_SERVICE_LENGTH + 1];
  66. unsigned char bType;
  67. ULONG ulBufferSize;
  68. USHORT usMaxHtoPPacketSize;
  69. USHORT usMaxPtoHPacketSize;
  70. unsigned char bHsid;
  71. } DOT4_DC_CREATE_DATA, *PDOT4_DC_CREATE_DATA;
  72. typedef struct _DOT4_DC_DESTROY_DATA {
  73. unsigned char bHsid;
  74. } DOT4_DC_DESTROY_DATA, *PDOT4_DC_DESTROY_DATA;
  75. typedef struct _DOT4_DC_OPEN_DATA {
  76. unsigned char bHsid;
  77. unsigned char fAddActivity;
  78. CHANNEL_HANDLE hChannelHandle;
  79. } DOT4_DC_OPEN_DATA, *PDOT4_DC_OPEN_DATA;
  80. typedef struct _DOT4_DRIVER_CMD {
  81. CHANNEL_HANDLE hChannelHandle;
  82. ULONG ulSize;
  83. ULONG ulOffset;
  84. ULONG ulTimeout;
  85. } DOT4_DRIVER_CMD, *PDOT4_DRIVER_CMD;
  86. #ifdef __cplusplus
  87. }
  88. #endif