📄 ioctlcmd.h
字号:
#ifndef __DIRMON_IOCTLCMD_H__
#define __DIRMON_IOCTLCMD_H__
#ifndef CTL_CODE
#include <winioctl.h>
#endif
//
// Define the various device type values. Note that values used by Microsoft
// Corporation are in the range 0-32767, and 32768-65535 are reserved for use
// by customers.
//
#define FILE_DEVICE_DIRMON 0x00008300
//
// Version #
//
#define DIRMONVERSION 100
//
// commands that the GUI can send the device driver
//
#define DIRMON_AddMonitorPath (ULONG) CTL_CODE( FILE_DEVICE_DIRMON, 0x00, METHOD_NEITHER, FILE_ANY_ACCESS )
#define DIRMON_RemoveMonitorPath (ULONG) CTL_CODE( FILE_DEVICE_DIRMON, 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS )
#define DIRMON_ReadChange (ULONG) CTL_CODE( FILE_DEVICE_DIRMON, 0x02, METHOD_NEITHER, FILE_ANY_ACCESS )
#define DIRMON_CancelReadChange (ULONG) CTL_CODE( FILE_DEVICE_DIRMON, 0x03, METHOD_NEITHER, FILE_ANY_ACCESS )
#define DIRMON_LogDelete (ULONG) CTL_CODE( FILE_DEVICE_DIRMON, 0x04, METHOD_NEITHER, FILE_ANY_ACCESS )
#define DIRMON_DoNotLogDelete (ULONG) CTL_CODE( FILE_DEVICE_DIRMON, 0x05, METHOD_NEITHER, FILE_ANY_ACCESS )
#define DIRMON_StartLogging (ULONG) CTL_CODE( FILE_DEVICE_DIRMON, 0x06, METHOD_NEITHER, FILE_ANY_ACCESS )
#define DIRMON_StopLogging (ULONG) CTL_CODE( FILE_DEVICE_DIRMON, 0x07, METHOD_NEITHER, FILE_ANY_ACCESS )
#define DIRMON_SuspendLogging (ULONG) CTL_CODE( FILE_DEVICE_DIRMON, 0x08, METHOD_NEITHER, FILE_ANY_ACCESS )
#define DIRMON_hookspecial (ULONG) CTL_CODE( FILE_DEVICE_DIRMON, 0x09, METHOD_BUFFERED, FILE_ANY_ACCESS )
#define DIRMON_unhookspecial (ULONG) CTL_CODE( FILE_DEVICE_DIRMON, 0x10, METHOD_BUFFERED, FILE_ANY_ACCESS )
//
// format of a data entry
//
#pragma pack(1)
typedef struct {
ULONG seq;
LARGE_INTEGER time;
char text[1];
} ENTRY, *PENTRY;
#pragma pack()
//
// Our different file system types
//
typedef enum {
STANDARD,
NPFS,
MSFS
} FILE_SYSTEM_TYPE, *PFILE_SYSTEM_TYPE;
//
// Define page size for use by GUI
//
#ifndef PAGE_SIZE
#if defined(_ALPHA_)
#define PAGE_SIZE 0x2000 // 8K
#else
#define PAGE_SIZE 0x1000 // 4K
#endif
#endif
//
// Size of a storage buffer in bytes - keep it just below 64K so that
// the total length of the buffer including the header is just below
// a page boundary, thus not wasting much space since buffer allocation
// is page-granular.
//
#define MAX_STORE ((ULONG)(64*0x1000-(2*sizeof(ULONG)+1)))
#define DIRMON_ACTION_ADDED 0x00000001
#define DIRMON_ACTION_REMOVED 0x00000002
#define DIRMON_ACTION_MODIFIED 0x00000003
#define DIRMON_ACTION_RENAMED_OLD_NAME 0x00000004
#define DIRMON_ACTION_RENAMED_NEW_NAME 0x00000005
typedef struct _tag_DirChangeItem
{
WORD wNextEntryOffset; // bytes offset
WORD wAction;
DWORD dwDosTime;
DWORD dwDirectoryItem;
CHAR sRelativePathName[1];
} DIRCHANGEITEM, *PDIRCHANGEITEM;
#endif // __DIRMON_IOCTLCMD_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -