IOCTLCMD.H
上传用户:hmgghm
上传日期:2007-01-07
资源大小:335k
文件大小:3k
源码类别:

文件操作

开发平台:

Visual C++

  1. //======================================================================
  2. // 
  3. // Ioctlcmd.h
  4. //
  5. // Copyright (C) 1996 Mark Russinovich and Bryce Cogswell
  6. //
  7. // Common header file for device driver and GUI. Contains common
  8. // data structure definitions and IOCTL command codes.
  9. //
  10. //======================================================================
  11. //
  12. // Define the various device type values.  Note that values used by Microsoft
  13. // Corporation are in the range 0-32767, and 32768-65535 are reserved for use
  14. // by customers.
  15. //
  16. #define FILE_DEVICE_FILEMON 0x00008300
  17. //
  18. // Version #
  19. //
  20. #define FILEMONVERSION    420
  21. //
  22. // commands that the GUI can send the device driver
  23. // 
  24. #define IOCTL_FILEMON_SETDRIVES   (ULONG) CTL_CODE( FILE_DEVICE_FILEMON, 0x00, METHOD_BUFFERED, FILE_ANY_ACCESS )
  25. #define IOCTL_FILEMON_ZEROSTATS   (ULONG) CTL_CODE( FILE_DEVICE_FILEMON, 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS )
  26. #define IOCTL_FILEMON_GETSTATS    (ULONG) CTL_CODE( FILE_DEVICE_FILEMON, 0x02, METHOD_NEITHER, FILE_ANY_ACCESS )
  27. #define IOCTL_FILEMON_UNLOADQUERY (ULONG) CTL_CODE( FILE_DEVICE_FILEMON, 0x03, METHOD_NEITHER, FILE_ANY_ACCESS )
  28. #define IOCTL_FILEMON_STOPFILTER  (ULONG) CTL_CODE( FILE_DEVICE_FILEMON, 0x04, METHOD_BUFFERED, FILE_ANY_ACCESS )
  29. #define IOCTL_FILEMON_STARTFILTER (ULONG) CTL_CODE( FILE_DEVICE_FILEMON, 0x05, METHOD_BUFFERED, FILE_ANY_ACCESS )
  30. #define IOCTL_FILEMON_SETFILTER   (ULONG) CTL_CODE( FILE_DEVICE_FILEMON, 0x06, METHOD_BUFFERED, FILE_ANY_ACCESS )
  31. #define IOCTL_FILEMON_TIMETYPE    (ULONG) CTL_CODE( FILE_DEVICE_FILEMON, 0x07, METHOD_BUFFERED, FILE_ANY_ACCESS )
  32. #define IOCTL_FILEMON_VERSION     (ULONG) CTL_CODE( FILE_DEVICE_FILEMON, 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS )
  33. #define IOCTL_FILEMON_HOOKSPECIAL (ULONG) CTL_CODE( FILE_DEVICE_FILEMON, 0x09, METHOD_BUFFERED, FILE_ANY_ACCESS )
  34. #define IOCTL_FILEMON_UNHOOKSPECIAL (ULONG) CTL_CODE( FILE_DEVICE_FILEMON, 0x10, METHOD_BUFFERED, FILE_ANY_ACCESS ) 
  35. //
  36. // format of a data entry
  37. //
  38. #pragma pack(1)
  39. typedef struct {
  40. ULONG           seq;
  41.     LARGE_INTEGER     time;
  42. char           text[0];
  43. } ENTRY, *PENTRY;
  44. #pragma pack()
  45. //
  46. // Length of a filter definition string
  47. //
  48. #define MAXFILTERLEN 128
  49. //
  50. // Filter status
  51. //
  52. typedef enum {
  53.    FILTERPASS,
  54.    FILTERFAIL,
  55.    FILTERNOMATCH
  56. } FILTERSTATUS;
  57. //
  58. // Filter definition
  59. //
  60. typedef struct {
  61.     char     includefilter[MAXFILTERLEN];
  62.     char     excludefilter[MAXFILTERLEN];
  63.     BOOLEAN  logreads;
  64.     BOOLEAN  logwrites;
  65. } FILTER, *PFILTER;
  66. //
  67. // Our different file system types
  68. //
  69. typedef enum {
  70.     STANDARD,
  71.     NPFS,
  72.     MSFS
  73. } FILE_SYSTEM_TYPE, *PFILE_SYSTEM_TYPE;
  74. //
  75. // Define page size for use by GUI
  76. //
  77. #ifndef PAGE_SIZE
  78. #if defined(_ALPHA_)
  79. #define PAGE_SIZE 0x2000  // 8K
  80. #else
  81. #define PAGE_SIZE 0x1000  // 4K
  82. #endif
  83. #endif
  84. //
  85. // Size of a storage buffer in bytes - keep it just below 64K so that
  86. // the total length of the buffer including the header is just below
  87. // a page boundary, thus not wasting much space since buffer allocation
  88. // is page-granular.
  89. //
  90. #define MAX_STORE       ((ULONG)(64*0x1000-(2*sizeof(ULONG)+1)))