4 enum states {BM_SETUP, BM_WARMUP, BM_MEASURE};
6 #define PSTRING_LEN 2048
7 #define FSTRING_LEN 512
9 #define MAX_HANDLES 128
10 #define MAX_FILES 1000
11 #define ssize_t SSIZE_T
13 #define aRONLY (1L<<0) /* 0x01 */
14 #define aHIDDEN (1L<<1) /* 0x02 */
15 #define aSYSTEM (1L<<2) /* 0x04 */
16 #define aVOLID (1L<<3) /* 0x08 */
17 #define aDIR (1L<<4) /* 0x10 */
18 #define aARCH (1L<<5) /* 0x20 */
20 #define FILE_DIRECTORY_FILE 0x0001
21 #define FILE_WRITE_THROUGH 0x0002
22 #define FILE_SEQUENTIAL_ONLY 0x0004
23 #define FILE_NON_DIRECTORY_FILE 0x0040
24 #define FILE_NO_EA_KNOWLEDGE 0x0200
25 #define FILE_EIGHT_DOT_THREE_ONLY 0x0400
26 #define FILE_RANDOM_ACCESS 0x0800
27 #define FILE_DELETE_ON_CLOSE 0x1000
31 #define CMD_FIND_FIRST 2
33 //#define CMD_LOCKINGX 4
34 #define CMD_NTCREATEX 3
35 #define CMD_QUERY_FILE_INFO 4
36 #define CMD_QUERY_FS_INFO 5
37 #define CMD_QUERY_PATH_INFO 6
44 #define CMD_DELETEFILES 13
45 #define CMD_COPYFILES 14
50 #define CMD_SETLOCKER 19
51 #define CMD_CREATEFILE 20
54 #define CMD_MAX_CMD 23 /* KEEP THIS UP TO DATE! */
56 typedef DWORD NTSTATUS;
58 typedef char pstring[PSTRING_LEN];
59 typedef char fstring[FSTRING_LEN];
61 typedef struct file_info
68 // char short_name[13*3];
79 DWORD total_sum_of_squares;
84 char *name; /* name used in results */
85 char *disable_name; /* name used in disable (-d) option */
86 unsigned id; /* cmd id */
89 {"Close", "CLOSE", CMD_CLOSE, "(CloseHandle)"},
90 {"DelTree", "DELTREE", CMD_DELTREE, "(FindFirstFile/FindNextFile/DeleteFile/RemoveDirectory)"},
91 {"Find First", "FIND_FIRST", CMD_FIND_FIRST, "(FindFirstFile/FindNextFile)"},
92 // {"Flush", "FLUSH", CMD_FLUSH},
93 // {"Locking & X", "LOCKINGX", CMD_LOCKINGX},
94 {"NT Create & X", "NTCREATEX", CMD_NTCREATEX, "(CreateFile/CreateDirectory)"},
95 {"Query File Info", "QUERY_FILE_INFO", CMD_QUERY_FILE_INFO, "(GetFileAttributesEx)"},
96 {"Query File System Info", "QUERY_FS_INFO", CMD_QUERY_FS_INFO, "(GetDiskFreeSpaceEx)"},
97 {"Query Path Info", "QUERY_PATH_INFO", CMD_QUERY_PATH_INFO, "(GetFileAttributesEx)"},
98 {"Read & X", "READX", CMD_READX, "(SetFilePointer/ReadFile)"},
99 {"Rename", "RENAME", CMD_RENAME, "(MoveFileEx)"},
100 {"Rmdir", "RMDIR", CMD_RMDIR, "(RemoveDirectory)"},
101 {"Unlink","UNLINK", CMD_UNLINK, "(DeleteFile)"},
102 {"Write & X", "WRITEX", CMD_WRITEX, "(SetFilePointer/WriteFile/FlushFileBuffers)"},
103 {"CopyEx", "XCOPY", CMD_XCOPY, "(DOS xcopy)"},
104 {"DeleteFiles", "DELETEFILES", CMD_DELETEFILES, "(DOS del)"},
105 {"CopyFiles", "COPYFILES", CMD_COPYFILES, "(DOS copy)"},
106 {"Attach", "ATTACH", CMD_ATTACH, "(M.I.T.)"},
107 {"Detach", "DETACH", CMD_DETACH, "(M.I.T.)"},
108 {"Mkdir", "MKDIR", CMD_MKDIR, "(DOS mkdir)"},
109 {"Xrmdir", "XRMDIR", CMD_XRMDIR, "(DOS rmdir)"},
110 {"SetLocker", "SETLOCKER", CMD_SETLOCKER, "(M.I.T.)"},
111 {"CreateFile", "CREATEFILE", CMD_CREATEFILE, "(CreateFile/SetFilePointer/WriteFile/FlushFileBuffers/CloseHandle)"},
112 {"Move", "MOVE", CMD_MOVE, "(DOS move)"},
113 {"NonAFS", "NonAFS", CMD_NONAFS, ""},
114 {NULL, NULL, 0, NULL}
124 BOOL *child_status_out;
132 struct cmd_struct *CommandInfo;
133 char *TargetDirectory;
136 char *PathToSecondDir;
139 EXIT_STATUS *pExitStatus;