### Bug Summary

File: | epan/dissectors/packet-procmon.c
Warning: | line 399, column 13 Value stored to 'offset' is never read

### Annotated Source Code

Press '?' to see keyboard shortcuts

Show analyzer invocation
clang -cc1 -cc1 -triple x86_64-pc-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name packet-procmon.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -fno-delete-null-pointer-checks -mframe-pointer=all -relaxed-aliasing -fmath-errno -ffp-contract=on -fno-rounding-math -ffloat16-excess-precision=fast -fbfloat16-excess-precision=fast -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/builds/wireshark/wireshark/build -fcoverage-compilation-dir=/builds/wireshark/wireshark/build -resource-dir /usr/lib/llvm-21/lib/clang/21 -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /builds/wireshark/wireshark/epan/dissectors -isystem /builds/wireshark/wireshark/build/epan/dissectors -isystem /usr/include/mit-krb5 -isystem /usr/include/libxml2 -isystem /builds/wireshark/wireshark/epan -D G_DISABLE_DEPRECATED -D G_DISABLE_SINGLE_INCLUDES -D WS_BUILD_DLL -D WS_DEBUG -D WS_DEBUG_UTF_8 -I /builds/wireshark/wireshark/build -I /builds/wireshark/wireshark -I /builds/wireshark/wireshark/include -D _GLIBCXX_ASSERTIONS -internal-isystem /usr/lib/llvm-21/lib/clang/21/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fmacro-prefix-map=/builds/wireshark/wireshark/= -fmacro-prefix-map=/builds/wireshark/wireshark/build/= -fmacro-prefix-map=../= -Wno-format-truncation -Wno-format-nonliteral -Wno-pointer-sign -std=gnu11 -ferror-limit 19 -fvisibility=hidden -fwrapv -fwrapv-pointer -fstrict-flex-arrays=3 -stack-protector 2 -fstack-clash-protection -fcf-protection=full -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fexceptions -fcolor-diagnostics -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /builds/wireshark/wireshark/sbout/2025-10-28-100327-3624-1 -x c /builds/wireshark/wireshark/epan/dissectors/packet-procmon.c

Keyboard shortcuts:

- Use 'j/k' keys for keyboard navigation
- Use 'Shift+S' to show/hide relevant lines
- Use '?' to toggle this window

Close
Show only relevant lines Show control flow arrows

1 | /* packet-procmon.c
2 | * Routines for MS Procmon dissection
3 | *
4 | * Used a lot of information from https://github.com/eronnen/procmon-parser
5 | *
6 | * Wireshark - Network traffic analyzer
7 | * By Gerald Combs <gerald@wireshark.org>
8 | * Copyright 1998 Gerald Combs
9 | *
10 | * SPDX-License-Identifier: GPL-2.0-or-later
11 | */
12 |
13 | #include <config.h>
14 |
15 | #include <epan/packet.h>
16 | #include <epan/expert.h>
17 | #include <epan/tfs.h>
18 | #include <wiretap/wtap.h>
19 | #include "packet-ipv6.h"
20 |
21 | #define PNAME"MS Procmon Event" "MS Procmon Event"
22 | #define PSNAME"MS Procmon" "MS Procmon"
23 | #define PFNAME"procmon" "procmon"
24 |
25 | void proto_reg_handoff_procmon(void);
26 | void proto_register_procmon(void);
27 |
28 | /* Initialize the protocol and registered fields */
29 | static int proto_procmon;
30 |
31 | static int hf_procmon_process_index;
32 | static int hf_procmon_thread_id;
33 | static int hf_procmon_event_class;
34 | static int hf_procmon_operation_type;
35 | static int hf_procmon_duration;
36 | static int hf_procmon_timestamp;
37 | static int hf_procmon_event_result;
38 | static int hf_procmon_stack_trace_depth;
39 | static int hf_procmon_details_size;
40 | static int hf_procmon_extra_details_offset;
41 | static int hf_procmon_stack_trace_address;
42 | static int hf_procmon_detail_data;
43 | static int hf_procmon_extra_detail_data;
44 | static int hf_procmon_process_operation;
45 | static int hf_procmon_process_pid;
46 | static int hf_procmon_process_path;
47 | static int hf_procmon_process_path_size;
48 | static int hf_procmon_process_path_is_ascii;
49 | static int hf_procmon_process_path_char_count;
50 | static int hf_procmon_process_commandline;
51 | static int hf_procmon_process_commandline_size;
52 | static int hf_procmon_process_commandline_is_ascii;
53 | static int hf_procmon_process_commandline_char_count;
54 | static int hf_procmon_process_thread_id;
55 | static int hf_procmon_process_exit_status;
56 | static int hf_procmon_process_kernel_time;
57 | static int hf_procmon_process_user_time;
58 | static int hf_procmon_process_working_set;
59 | static int hf_procmon_process_peak_working_set;
60 | static int hf_procmon_process_private_bytes;
61 | static int hf_procmon_process_peak_private_bytes;
62 | static int hf_procmon_process_image_base;
63 | static int hf_procmon_process_image_size;
64 | static int hf_procmon_process_parent_pid;
65 | static int hf_procmon_process_curdir;
66 | static int hf_procmon_process_curdir_size;
67 | static int hf_procmon_process_curdir_is_ascii;
68 | static int hf_procmon_process_curdir_char_count;
69 | static int hf_procmon_process_environment;
70 | static int hf_procmon_process_environment_char_count;
71 | static int hf_procmon_registry_operation;
72 | static int hf_procmon_registry_desired_access;
73 | static int hf_procmon_registry_granted_access;
74 | static int hf_procmon_registry_disposition;
75 | static int hf_procmon_registry_key;
76 | static int hf_procmon_registry_key_size;
77 | static int hf_procmon_registry_key_is_ascii;
78 | static int hf_procmon_registry_key_char_count;
79 | static int hf_procmon_registry_new_key;
80 | static int hf_procmon_registry_new_key_size;
81 | static int hf_procmon_registry_new_key_is_ascii;
82 | static int hf_procmon_registry_new_key_char_count;
83 | static int hf_procmon_registry_value;
84 | static int hf_procmon_registry_value_size;
85 | static int hf_procmon_registry_value_is_ascii;
86 | static int hf_procmon_registry_value_char_count;
87 | static int hf_procmon_registry_length;
88 | static int hf_procmon_registry_key_information_class;
89 | static int hf_procmon_registry_value_information_class;
90 | static int hf_procmon_registry_key_set_information_class;
91 | static int hf_procmon_registry_index;
92 | static int hf_procmon_registry_type;
93 | static int hf_procmon_registry_data_length;
94 | static int hf_procmon_registry_key_name_size;
95 | static int hf_procmon_registry_key_name;
96 | static int hf_procmon_registry_key_handle_tags;
97 | static int hf_procmon_registry_key_flags;
98 | static int hf_procmon_registry_key_last_write_time;
99 | static int hf_procmon_registry_key_title_index;
100 | static int hf_procmon_registry_key_subkeys;
101 | static int hf_procmon_registry_key_max_name_len;
102 | static int hf_procmon_registry_key_values;
103 | static int hf_procmon_registry_key_max_value_name_len;
104 | static int hf_procmon_registry_key_max_value_data_len;
105 | static int hf_procmon_registry_key_class_offset;
106 | static int hf_procmon_registry_key_class_length;
107 | static int hf_procmon_registry_key_max_class_len;
108 | static int hf_procmon_registry_value_reg_type;
109 | static int hf_procmon_registry_value_offset_to_data;
110 | static int hf_procmon_registry_value_length;
111 | static int hf_procmon_registry_value_name_size;
112 | static int hf_procmon_registry_value_name;
113 | static int hf_procmon_registry_value_dword;
114 | static int hf_procmon_registry_value_qword;
115 | static int hf_procmon_registry_value_sz;
116 | static int hf_procmon_registry_value_binary;
117 | static int hf_procmon_registry_value_multi_sz;
118 | static int hf_procmon_registry_key_set_information_write_time;
119 | static int hf_procmon_registry_key_set_information_wow64_flags;
120 | static int hf_procmon_registry_key_set_information_handle_tags;
121 | static int hf_procmon_filesystem_operation;
122 | static int hf_procmon_filesystem_suboperation;
123 | static int hf_procmon_filesystem_padding;
124 | static int hf_procmon_filesystem_details;
125 | static int hf_procmon_filesystem_path;
126 | static int hf_procmon_filesystem_path_size;
127 | static int hf_procmon_filesystem_path_is_ascii;
128 | static int hf_procmon_filesystem_path_char_count;
129 | static int hf_procmon_filesystem_create_file_access_mask;
130 | static int hf_procmon_filesystem_create_file_impersonating_sid_length;
131 | static int hf_procmon_filesystem_create_file_impersonating;
132 | static int hf_procmon_filesystem_create_file_disposition;
133 | static int hf_procmon_filesystem_create_file_options;
134 | static int hf_procmon_filesystem_create_file_attributes;
135 | static int hf_procmon_filesystem_create_file_share_mode;
136 | static int hf_procmon_filesystem_create_file_allocation;
137 | static int hf_procmon_filesystem_create_file_sid_revision;
138 | static int hf_procmon_filesystem_create_file_sid_count;
139 | static int hf_procmon_filesystem_create_file_sid_authority;
140 | static int hf_procmon_filesystem_create_file_sid_value;
141 | static int hf_procmon_filesystem_create_file_open_result;
142 | static int hf_procmon_filesystem_readwrite_file_io_flags;
143 | static int hf_procmon_filesystem_readwrite_file_priority;
144 | static int hf_procmon_filesystem_readwrite_file_length;
145 | static int hf_procmon_filesystem_readwrite_file_offset;
146 | static int hf_procmon_filesystem_readwrite_file_result_length;
147 | static int hf_procmon_filesystem_ioctl_write_length;
148 | static int hf_procmon_filesystem_ioctl_read_length;
149 | static int hf_procmon_filesystem_ioctl_ioctl;
150 | static int hf_procmon_filesystem_ioctl_offset;
151 | static int hf_procmon_filesystem_ioctl_length;
152 | static int hf_procmon_filesystem_create_file_mapping_sync_type;
153 | static int hf_procmon_filesystem_create_file_mapping_page_protection;
154 | static int hf_procmon_filesystem_directory;
155 | static int hf_procmon_filesystem_directory_size;
156 | static int hf_procmon_filesystem_directory_is_ascii;
157 | static int hf_procmon_filesystem_directory_char_count;
158 | static int hf_procmon_filesystem_directory_control_file_information_class;
159 | static int hf_procmon_filesystem_directory_control_notify_change_flags;
160 | static int hf_procmon_filesystem_set_info_file_disposition_delete;
161 | static int hf_procmon_filesystem_directory_control_query_next_entry_offset;
162 | static int hf_procmon_filesystem_directory_control_query_file_index;
163 | static int hf_procmon_filesystem_directory_control_query_name_length;
164 | static int hf_procmon_filesystem_directory_control_query_name;
165 | static int hf_procmon_filesystem_directory_control_query_creation_time;
166 | static int hf_procmon_filesystem_directory_control_query_last_access_time;
167 | static int hf_procmon_filesystem_directory_control_query_last_write_time;
168 | static int hf_procmon_filesystem_directory_control_query_change_time;
169 | static int hf_procmon_filesystem_directory_control_query_end_of_file;
170 | static int hf_procmon_filesystem_directory_control_query_allocation_size;
171 | static int hf_procmon_filesystem_directory_control_query_file_attributes;
172 | static int hf_procmon_filesystem_directory_control_query_file_ea_size;
173 | static int hf_procmon_filesystem_directory_control_query_file_id;
174 | static int hf_procmon_filesystem_directory_control_query_short_name_length;
175 | static int hf_procmon_filesystem_directory_control_query_short_name;
176 | static int hf_procmon_profiling_operation;
177 | static int hf_procmon_network_operation;
178 | static int hf_procmon_network_flags;
179 | static int hf_procmon_network_flags_is_src_ipv4;
180 | static int hf_procmon_network_flags_is_dst_ipv4;
181 | static int hf_procmon_network_flags_tcp_udp;
182 | static int hf_procmon_network_length;
183 | static int hf_procmon_network_src_ipv4;
184 | static int hf_procmon_network_src_ipv6;
185 | static int hf_procmon_network_dest_ipv4;
186 | static int hf_procmon_network_dest_ipv6;
187 | static int hf_procmon_network_src_port;
188 | static int hf_procmon_network_dest_port;
189 | static int hf_procmon_network_padding;
190 | static int hf_procmon_network_details;
191 |
192 |
193 | /* Initialize the subtree pointers */
194 | static int ett_procmon;
195 | static int ett_procmon_header;
196 | static int ett_procmon_stack_trace;
197 | static int ett_procmon_process_event;
198 | static int ett_procmon_process_path;
199 | static int ett_procmon_process_commandline;
200 | static int ett_procmon_process_curdir;
201 | static int ett_procmon_registry_event;
202 | static int ett_procmon_registry_key;
203 | static int ett_procmon_registry_value;
204 | static int ett_procmon_registry_new_key;
205 | static int ett_procmon_filesystem_event;
206 | static int ett_procmon_filesystem_path;
207 | static int ett_procmon_filesystem_create_file_impersonating;
208 | static int ett_procmon_filesystem_directory;
209 | static int ett_procmon_filesystem_information;
210 | static int ett_procmon_profiling_event;
211 | static int ett_procmon_network_event;
212 | static int ett_procmon_network_flags;
213 |
214 |
215 | static expert_field ei_procmon_unknown_event_class;
216 | static expert_field ei_procmon_unknown_operation;
217 |
218 | static dissector_handle_t procmon_handle;
219 |
220 | #define PROCMON_EVENT_CLASS_TYPE_PROCESS1 1
221 | #define PROCMON_EVENT_CLASS_TYPE_REGISTRY2 2
222 | #define PROCMON_EVENT_CLASS_TYPE_FILE_SYSTEM3 3
223 | #define PROCMON_EVENT_CLASS_TYPE_PROFILING4 4
224 | #define PROCMON_EVENT_CLASS_TYPE_NETWORK5 5
225 |
226 | #define STRING_IS_ASCII_MASK0x8000 0x8000
227 | #define STRING_CHAR_COUNT_MASK0x7FFF 0x7FFF
228 |
229 | static void dissect_procmon_detail_string_info(tvbuff_t* tvb, proto_tree* tree, int offset,
230 | int hf_detail, int hf_detail_ascii, int hf_detail_char_count, int ett_detail, bool_Bool* is_ascii, uint16_t* char_count)
231 | {
232 | proto_tree* detail_tree;
233 | proto_item* detail_item;
234 | uint32_t char_value;
235 |
236 | detail_item = proto_tree_add_item(tree, hf_detail, tvb, offset, 2, ENC_LITTLE_ENDIAN0x80000000);
237 | detail_tree = proto_item_add_subtree(detail_item, ett_detail);
238 |
239 | proto_tree_add_item_ret_boolean(detail_tree, hf_detail_ascii, tvb, offset, 2, ENC_LITTLE_ENDIAN0x80000000, is_ascii);
240 | proto_tree_add_item_ret_uint(detail_tree, hf_detail_char_count, tvb, offset, 2, ENC_LITTLE_ENDIAN0x80000000, &char_value);
241 | *char_count = (uint16_t)(char_value & STRING_CHAR_COUNT_MASK0x7FFF);
242 | }
243 |
244 | static int dissect_procmon_detail_string(tvbuff_t* tvb, proto_tree* tree, int offset, bool_Bool is_ascii, uint16_t char_count, int hf_detail_string)
245 | {
246 | int char_size = is_ascii ? 1 : 2;
247 | int path_size = char_size * char_count;
248 | proto_tree_add_item(tree, hf_detail_string, tvb, offset, path_size, is_ascii ? ENC_ASCII0x00000000 : ENC_UTF_160x00000004|ENC_LITTLE_ENDIAN0x80000000);
249 | return offset + path_size;
250 | }
251 |
252 | static void dissect_procmon_access_mask(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, int offset, int hf_access_mask, int length, uint32_t* mapping, const value_string* vs_mask_values)
253 | {
254 | int i = 0;
255 | bool_Bool first = true1;
256 | proto_item* ti;
257 | uint32_t access_mask;
258 | wmem_strbuf_t* access_details = wmem_strbuf_new(pinfo->pool, "(");
259 |
260 | ti = proto_tree_add_item_ret_uint(tree, hf_access_mask, tvb, offset, length, ENC_LITTLE_ENDIAN0x80000000, &access_mask);
261 | if (mapping != NULL((void*)0))
262 | {
263 | if (access_mask & 0x80000000)
264 | access_mask |= mapping[0];
265 | if (access_mask & 0x40000000)
266 | access_mask |= mapping[1];
267 | if (access_mask & 0x20000000)
268 | access_mask |= mapping[2];
269 | if (access_mask & 0x10000000)
270 | access_mask |= mapping[3];
271 | }
272 |
273 | while (vs_mask_values[i].strptr) {
274 | if ((vs_mask_values[i].value & access_mask) == vs_mask_values[i].value)
275 | {
276 | if (first)
277 | first = false0;
278 | else
279 | wmem_strbuf_append(access_details, ", ");
280 | wmem_strbuf_append(access_details, vs_mask_values[i].strptr);
281 | }
282 |
283 | i++;
284 | }
285 |
286 | wmem_strbuf_append_c(access_details, ')');
287 | proto_item_append_text(ti, " %s", wmem_strbuf_get_str(access_details));
288 | }
289 |
290 | static const value_string event_class_vals[] = {
291 | { PROCMON_EVENT_CLASS_TYPE_PROCESS1, "Process" },
292 | { PROCMON_EVENT_CLASS_TYPE_REGISTRY2, "Registry" },
293 | { PROCMON_EVENT_CLASS_TYPE_FILE_SYSTEM3, "File System" },
294 | { PROCMON_EVENT_CLASS_TYPE_PROFILING4, "Profiling" },
295 | { PROCMON_EVENT_CLASS_TYPE_NETWORK5, "Network" },
296 | { 0, NULL((void*)0) }
297 | };
298 |
299 | #define PROCMON_PROCESS_OPERATION_DEFINED0x0000 0x0000
300 | #define PROCMON_PROCESS_OPERATION_CREATE0x0001 0x0001
301 | #define PROCMON_PROCESS_OPERATION_EXIT0x0002 0x0002
302 | #define PROCMON_PROCESS_OPERATION_THREAD_CREATE0x0003 0x0003
303 | #define PROCMON_PROCESS_OPERATION_THREAD_EXIT0x0004 0x0004
304 | #define PROCMON_PROCESS_OPERATION_LOAD_IMAGE0x0005 0x0005
305 | #define PROCMON_PROCESS_OPERATION_THREAD_PROFILE0x0006 0x0006
306 | #define PROCMON_PROCESS_OPERATION_PROCESS_START0x0007 0x0007
307 | #define PROCMON_PROCESS_OPERATION_PROCESS_STATISTICS0x0008 0x0008
308 | #define PROCMON_PROCESS_OPERATION_SYSTEM_STATISTICS0x0009 0x0009
309 |
310 | static const value_string process_operation_vals[] = {
311 | { PROCMON_PROCESS_OPERATION_DEFINED0x0000, "Process Defined" },
312 | { PROCMON_PROCESS_OPERATION_CREATE0x0001, "Process Create" },
313 | { PROCMON_PROCESS_OPERATION_EXIT0x0002, "Process Exit" },
314 | { PROCMON_PROCESS_OPERATION_THREAD_CREATE0x0003, "Thread Create" },
315 | { PROCMON_PROCESS_OPERATION_THREAD_EXIT0x0004, "Thread Exit" },
316 | { PROCMON_PROCESS_OPERATION_LOAD_IMAGE0x0005, "Load Image" },
317 | { PROCMON_PROCESS_OPERATION_THREAD_PROFILE0x0006, "Thread Profile" },
318 | { PROCMON_PROCESS_OPERATION_PROCESS_START0x0007, "Process Start" },
319 | { PROCMON_PROCESS_OPERATION_PROCESS_STATISTICS0x0008, "Process Statistics" },
320 | { PROCMON_PROCESS_OPERATION_SYSTEM_STATISTICS0x0009, "System Statistics" },
321 | { 0, NULL((void*)0) }
322 | };
323 |
324 |
325 | static bool_Bool dissect_procmon_process_event(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, uint32_t operation, tvbuff_t* extra_details_tvb _U___attribute__((unused)))
326 | {
327 | proto_tree* process_tree;
328 | int offset = 0;
329 | bool_Bool handle_extra_details = false0;
330 |
331 | process_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_procmon_process_event, NULL((void*)0), "Process Data");
332 |
333 | switch(operation) {
334 | case PROCMON_PROCESS_OPERATION_DEFINED0x0000:
335 | case PROCMON_PROCESS_OPERATION_CREATE0x0001:
336 | {
337 | bool_Bool is_path_ascii, is_commandline_ascii;
338 | uint16_t path_char_count, commandline_char_count;
339 |
340 | //Unknown fields
341 | offset += 4;
342 | proto_tree_add_item(process_tree, hf_procmon_process_pid, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
343 | offset += 4;
344 | //Unknown fields
345 | offset += 36;
346 | uint8_t unknown_size1 = tvb_get_uint8(tvb, offset);
347 | offset += 1;
348 | uint8_t unknown_size2 = tvb_get_uint8(tvb, offset);
349 | offset += 1;
350 | dissect_procmon_detail_string_info(tvb, process_tree, offset,
351 | hf_procmon_process_path_size, hf_procmon_process_path_is_ascii, hf_procmon_process_path_char_count, ett_procmon_process_path,
352 | &is_path_ascii, &path_char_count);
353 | offset += 2;
354 | dissect_procmon_detail_string_info(tvb, process_tree, offset,
355 | hf_procmon_process_commandline_size, hf_procmon_process_commandline_is_ascii, hf_procmon_process_commandline_char_count, ett_procmon_process_commandline,
356 | &is_commandline_ascii, &commandline_char_count);
357 | offset += 2;
358 | //Unknown fields
359 | offset += 2;
360 | offset += unknown_size1;
361 | offset += unknown_size2;
362 | offset = dissect_procmon_detail_string(tvb, process_tree, offset, is_path_ascii, path_char_count, hf_procmon_process_path);
363 | /* offset = */ dissect_procmon_detail_string(tvb, process_tree, offset, is_commandline_ascii, commandline_char_count, hf_procmon_process_commandline);
364 |
365 | break;
366 | }
367 | case PROCMON_PROCESS_OPERATION_EXIT0x0002:
368 | {
369 | proto_tree_add_item(process_tree, hf_procmon_process_exit_status, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
370 | offset += 4;
371 | proto_tree_add_item(process_tree, hf_procmon_process_kernel_time, tvb, offset, 8, ENC_LITTLE_ENDIAN0x80000000);
372 | offset += 8;
373 | proto_tree_add_item(process_tree, hf_procmon_process_user_time, tvb, offset, 8, ENC_LITTLE_ENDIAN0x80000000);
374 | offset += 8;
375 | proto_tree_add_item(process_tree, hf_procmon_process_working_set, tvb, offset, 8, ENC_LITTLE_ENDIAN0x80000000);
376 | offset += 8;
377 | proto_tree_add_item(process_tree, hf_procmon_process_peak_working_set, tvb, offset, 8, ENC_LITTLE_ENDIAN0x80000000);
378 | offset += 8;
379 | proto_tree_add_item(process_tree, hf_procmon_process_private_bytes, tvb, offset, 8, ENC_LITTLE_ENDIAN0x80000000);
380 | offset += 8;
381 | proto_tree_add_item(process_tree, hf_procmon_process_peak_private_bytes, tvb, offset, 8, ENC_LITTLE_ENDIAN0x80000000);
382 | /* offset += 8; */
383 | break;
384 | }
385 | case PROCMON_PROCESS_OPERATION_THREAD_CREATE0x0003:
386 | {
387 | proto_tree_add_item(process_tree, hf_procmon_process_thread_id, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
388 | /* offset += 4; */
389 | break;
390 | }
391 | case PROCMON_PROCESS_OPERATION_THREAD_EXIT0x0004:
392 | case PROCMON_PROCESS_OPERATION_PROCESS_STATISTICS0x0008:
393 | {
394 | //Unknown fields
395 | offset += 4;
396 | proto_tree_add_item(process_tree, hf_procmon_process_kernel_time, tvb, offset, 8, ENC_LITTLE_ENDIAN0x80000000);
397 | offset += 8;
398 | proto_tree_add_item(process_tree, hf_procmon_process_user_time, tvb, offset, 8, ENC_LITTLE_ENDIAN0x80000000);
399 | offset += 8;
| Value stored to 'offset' is never read
400 | break;
401 | }
402 | case PROCMON_PROCESS_OPERATION_LOAD_IMAGE0x0005:
403 | {
404 | bool_Bool is_path_ascii;
405 | uint16_t path_char_count;
406 |
407 | if (pinfo->pseudo_header->procmon.system_bitness)
408 | {
409 | proto_tree_add_item(process_tree, hf_procmon_process_image_base, tvb, offset, 8, ENC_LITTLE_ENDIAN0x80000000);
410 | offset += 8;
411 | }
412 | else
413 | {
414 | proto_tree_add_item(process_tree, hf_procmon_process_image_base, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
415 | offset += 4;
416 | }
417 |
418 | proto_tree_add_item(process_tree, hf_procmon_process_image_size, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
419 | offset += 4;
420 | dissect_procmon_detail_string_info(tvb, process_tree, offset,
421 | hf_procmon_process_path_size, hf_procmon_process_path_is_ascii, hf_procmon_process_path_char_count, ett_procmon_process_path,
422 | &is_path_ascii, &path_char_count);
423 | offset += 2;
424 | //Unknown fields
425 | offset += 2;
426 | /* offset = */ dissect_procmon_detail_string(tvb, process_tree, offset, is_path_ascii, path_char_count, hf_procmon_process_path);
427 | break;
428 | }
429 | case PROCMON_PROCESS_OPERATION_THREAD_PROFILE0x0006:
430 | //Unknown
431 | break;
432 | case PROCMON_PROCESS_OPERATION_PROCESS_START0x0007:
433 | {
434 | bool_Bool is_commandline_ascii, is_curdir_ascii;
435 | uint16_t commandline_char_count, curdir_char_count;
436 | uint32_t environment_char_count;
437 |
438 | proto_tree_add_item(process_tree, hf_procmon_process_parent_pid, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
439 | offset += 4;
440 | dissect_procmon_detail_string_info(tvb, process_tree, offset,
441 | hf_procmon_process_commandline_size, hf_procmon_process_commandline_is_ascii, hf_procmon_process_commandline_char_count, ett_procmon_process_commandline,
442 | &is_commandline_ascii, &commandline_char_count);
443 | offset += 2;
444 | dissect_procmon_detail_string_info(tvb, process_tree, offset,
445 | hf_procmon_process_curdir_size, hf_procmon_process_curdir_is_ascii, hf_procmon_process_curdir_char_count, ett_procmon_process_curdir,
446 | &is_curdir_ascii, &curdir_char_count);
447 | offset += 2;
448 | proto_tree_add_item_ret_uint(process_tree, hf_procmon_process_environment_char_count, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &environment_char_count);
449 | offset += 4;
450 | offset = dissect_procmon_detail_string(tvb, process_tree, offset, is_commandline_ascii, commandline_char_count, hf_procmon_process_commandline);
451 | offset = dissect_procmon_detail_string(tvb, process_tree, offset, is_curdir_ascii, curdir_char_count, hf_procmon_process_curdir);
452 | proto_tree_add_item(process_tree, hf_procmon_process_environment, tvb, offset, environment_char_count*2, ENC_UTF_160x00000004|ENC_LITTLE_ENDIAN0x80000000);
453 | break;
454 | }
455 | case PROCMON_PROCESS_OPERATION_SYSTEM_STATISTICS0x0009:
456 | //Unknown
457 | break;
458 | }
459 | return handle_extra_details;
460 | }
461 |
462 | #define PROCMON_REGISTRY_OPERATION_OPEN_KEY0x0000 0x0000
463 | #define PROCMON_REGISTRY_OPERATION_CREATE_KEY0x0001 0x0001
464 | #define PROCMON_REGISTRY_OPERATION_CLOSE_KEY0x0002 0x0002
465 | #define PROCMON_REGISTRY_OPERATION_QUERY_KEY0x0003 0x0003
466 | #define PROCMON_REGISTRY_OPERATION_SET_VALUE0x0004 0x0004
467 | #define PROCMON_REGISTRY_OPERATION_QUERY_VALUE0x0005 0x0005
468 | #define PROCMON_REGISTRY_OPERATION_ENUM_VALUE0x0006 0x0006
469 | #define PROCMON_REGISTRY_OPERATION_ENUM_KEY0x0007 0x0007
470 | #define PROCMON_REGISTRY_OPERATION_SET_INFO_KEY0x0008 0x0008
471 | #define PROCMON_REGISTRY_OPERATION_DELETE_KEY0x0009 0x0009
472 | #define PROCMON_REGISTRY_OPERATION_DELETE_VALUE0x000A 0x000A
473 | #define PROCMON_REGISTRY_OPERATION_FLUSH_KEY0x000B 0x000B
474 | #define PROCMON_REGISTRY_OPERATION_LOAD_KEY0x000C 0x000C
475 | #define PROCMON_REGISTRY_OPERATION_UNLOAD_KEY0x000D 0x000D
476 | #define PROCMON_REGISTRY_OPERATION_RENAME_KEY0x000E 0x000E
477 | #define PROCMON_REGISTRY_OPERATION_QUERY_MULTIPLE_VALUE0x000F 0x000F
478 | #define PROCMON_REGISTRY_OPERATION_SET_KEY_SECURITY0x0010 0x0010
479 | #define PROCMON_REGISTRY_OPERATION_QUERY_KEY_SECURITY0x0011 0x0011
480 |
481 | static const value_string registry_operation_vals[] = {
482 | { PROCMON_REGISTRY_OPERATION_OPEN_KEY0x0000, "Open Key" },
483 | { PROCMON_REGISTRY_OPERATION_CREATE_KEY0x0001, "Create Key" },
484 | { PROCMON_REGISTRY_OPERATION_CLOSE_KEY0x0002, "Close Key" },
485 | { PROCMON_REGISTRY_OPERATION_QUERY_KEY0x0003, "Query Key" },
486 | { PROCMON_REGISTRY_OPERATION_SET_VALUE0x0004, "Set Value" },
487 | { PROCMON_REGISTRY_OPERATION_QUERY_VALUE0x0005, "Query Value" },
488 | { PROCMON_REGISTRY_OPERATION_ENUM_VALUE0x0006, "Enum Value" },
489 | { PROCMON_REGISTRY_OPERATION_ENUM_KEY0x0007, "Enum Key" },
490 | { PROCMON_REGISTRY_OPERATION_SET_INFO_KEY0x0008, "Set Info Key" },
491 | { PROCMON_REGISTRY_OPERATION_DELETE_KEY0x0009, "Delete Key" },
492 | { PROCMON_REGISTRY_OPERATION_DELETE_VALUE0x000A, "Delete Value" },
493 | { PROCMON_REGISTRY_OPERATION_FLUSH_KEY0x000B, "Flush Key" },
494 | { PROCMON_REGISTRY_OPERATION_LOAD_KEY0x000C, "Load Key" },
495 | { PROCMON_REGISTRY_OPERATION_UNLOAD_KEY0x000D, "Unload Key" },
496 | { PROCMON_REGISTRY_OPERATION_RENAME_KEY0x000E, "Rename Key" },
497 | { PROCMON_REGISTRY_OPERATION_QUERY_MULTIPLE_VALUE0x000F, "Query Multiple Value" },
498 | { PROCMON_REGISTRY_OPERATION_SET_KEY_SECURITY0x0010, "Set Key Security" },
499 | { PROCMON_REGISTRY_OPERATION_QUERY_KEY_SECURITY0x0011, "Query Key Security" },
500 | { 0, NULL((void*)0) }
501 | };
502 |
503 | #define PROCMON_REGISTRY_KEY_INFORMATION_CLASS_BASIC0 0
504 | #define PROCMON_REGISTRY_KEY_INFORMATION_CLASS_NODE1 1
505 | #define PROCMON_REGISTRY_KEY_INFORMATION_CLASS_FULL2 2
506 | #define PROCMON_REGISTRY_KEY_INFORMATION_CLASS_NAME3 3
507 | #define PROCMON_REGISTRY_KEY_INFORMATION_CLASS_CACHED4 4
508 | #define PROCMON_REGISTRY_KEY_INFORMATION_CLASS_FLAGS5 5
509 | #define PROCMON_REGISTRY_KEY_INFORMATION_CLASS_VIRTUALIZATION6 6
510 | #define PROCMON_REGISTRY_KEY_INFORMATION_CLASS_HANDLE_TAGS7 7
511 | #define PROCMON_REGISTRY_KEY_INFORMATION_CLASS_TRUST8 8
512 | #define PROCMON_REGISTRY_KEY_INFORMATION_CLASS_LAYER9 9
513 |
514 | static const value_string registry_key_information_class_vals[] = {
515 | { PROCMON_REGISTRY_KEY_INFORMATION_CLASS_BASIC0, "Basic" },
516 | { PROCMON_REGISTRY_KEY_INFORMATION_CLASS_NODE1, "Node" },
517 | { PROCMON_REGISTRY_KEY_INFORMATION_CLASS_FULL2, "Full" },
518 | { PROCMON_REGISTRY_KEY_INFORMATION_CLASS_NAME3, "Name" },
519 | { PROCMON_REGISTRY_KEY_INFORMATION_CLASS_CACHED4, "Cached" },
520 | { PROCMON_REGISTRY_KEY_INFORMATION_CLASS_FLAGS5, "Flags" },
521 | { PROCMON_REGISTRY_KEY_INFORMATION_CLASS_VIRTUALIZATION6, "Virtualization" },
522 | { PROCMON_REGISTRY_KEY_INFORMATION_CLASS_HANDLE_TAGS7, "Handle Tags" },
523 | { PROCMON_REGISTRY_KEY_INFORMATION_CLASS_TRUST8, "Trust" },
524 | { PROCMON_REGISTRY_KEY_INFORMATION_CLASS_LAYER9, "Layer" },
525 | { 0, NULL((void*)0) }
526 | };
527 |
528 | #define PROCMON_REGISTRY_KEY_SET_INFORMATION_WRITE_TIME_INFO0 0
529 | #define PROCMON_REGISTRY_KEY_SET_INFORMATION_WOW64_FLAGS_INFO1 1
530 | #define PROCMON_REGISTRY_KEY_SET_INFORMATION_HANDLE_TAGS_INFO2 2
531 |
532 | static const value_string registry_value_set_information_class_vals[] = {
533 | { PROCMON_REGISTRY_KEY_SET_INFORMATION_WRITE_TIME_INFO0, "Write Time" },
534 | { PROCMON_REGISTRY_KEY_SET_INFORMATION_WOW64_FLAGS_INFO1, "WOW64 Flags" },
535 | { PROCMON_REGISTRY_KEY_SET_INFORMATION_HANDLE_TAGS_INFO2, "Set Handle Tags" },
536 | { 0, NULL((void*)0) }
537 | };
538 |
539 |
540 |
541 | #define PROCMON_REGISTRY_VALUE_INFORMATION_CLASS_BASIC0 0
542 | #define PROCMON_REGISTRY_VALUE_INFORMATION_CLASS_FULL1 1
543 | #define PROCMON_REGISTRY_VALUE_INFORMATION_CLASS_PARTIAL2 2
544 | #define PROCMON_REGISTRY_VALUE_INFORMATION_CLASS_FULL_ALIGN643 3
545 | #define PROCMON_REGISTRY_VALUE_INFORMATION_CLASS_PARTIAL_ALIGN644 4
546 | #define PROCMON_REGISTRY_VALUE_INFORMATION_CLASS_LAYER5 5
547 |
548 | static const value_string registry_value_information_class_vals[] = {
549 | { PROCMON_REGISTRY_VALUE_INFORMATION_CLASS_BASIC0, "Basic" },
550 | { PROCMON_REGISTRY_VALUE_INFORMATION_CLASS_FULL1, "Full" },
551 | { PROCMON_REGISTRY_VALUE_INFORMATION_CLASS_PARTIAL2, "Partial" },
552 | { PROCMON_REGISTRY_VALUE_INFORMATION_CLASS_FULL_ALIGN643, "Full Align64" },
553 | { PROCMON_REGISTRY_VALUE_INFORMATION_CLASS_PARTIAL_ALIGN644, "Partial Align64" },
554 | { PROCMON_REGISTRY_VALUE_INFORMATION_CLASS_LAYER5, "Layer" },
555 | { 0, NULL((void*)0) }
556 | };
557 |
558 | #define PROCMON_REGISTRY_DISPOSITION_CREATED_NEW_KEY1 1
559 | #define PROCMON_REGISTRY_DISPOSITION_OPENED_EXISTING_KEY2 2
560 |
561 | static const value_string registry_disposition_vals[] = {
562 | { PROCMON_REGISTRY_DISPOSITION_CREATED_NEW_KEY1, "Created Key" },
563 | { PROCMON_REGISTRY_DISPOSITION_OPENED_EXISTING_KEY2, "Open Existing" },
564 | { 0, NULL((void*)0) }
565 | };
566 |
567 | static int procmon_registry_query_or_enum_key_extra_details(proto_tree* tree, tvbuff_t* tvb, uint32_t information_class)
568 | {
569 | uint32_t name_size;
570 | nstime_t timestamp;
571 | int offset = 0;
572 |
573 | switch (information_class)
574 | {
575 | case PROCMON_REGISTRY_KEY_INFORMATION_CLASS_NAME3:
576 | proto_tree_add_item_ret_uint(tree, hf_procmon_registry_key_name_size, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &name_size);
577 | offset += 4;
578 | proto_tree_add_item(tree, hf_procmon_registry_key_name, tvb, offset, name_size, ENC_UTF_160x00000004 | ENC_LITTLE_ENDIAN0x80000000);
579 | offset += name_size;
580 | break;
581 |
582 | case PROCMON_REGISTRY_KEY_INFORMATION_CLASS_HANDLE_TAGS7:
583 | proto_tree_add_item(tree, hf_procmon_registry_key_handle_tags, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
584 | offset += 4;
585 | break;
586 |
587 | case PROCMON_REGISTRY_KEY_INFORMATION_CLASS_FLAGS5:
588 | proto_tree_add_item(tree, hf_procmon_registry_key_flags, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
589 | offset += 4;
590 | break;
591 |
592 | case PROCMON_REGISTRY_KEY_INFORMATION_CLASS_CACHED4:
593 | filetime_to_nstime(&timestamp, tvb_get_letoh64(tvb, offset));
594 | proto_tree_add_time(tree, hf_procmon_registry_key_last_write_time, tvb, offset, 8, &timestamp);
595 | offset += 8;
596 | proto_tree_add_item(tree, hf_procmon_registry_key_title_index, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
597 | offset += 4;
598 | proto_tree_add_item(tree, hf_procmon_registry_key_subkeys, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
599 | offset += 4;
600 | proto_tree_add_item(tree, hf_procmon_registry_key_max_name_len, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
601 | offset += 4;
602 | proto_tree_add_item(tree, hf_procmon_registry_key_values, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
603 | offset += 4;
604 | proto_tree_add_item(tree, hf_procmon_registry_key_max_value_name_len, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
605 | offset += 4;
606 | proto_tree_add_item(tree, hf_procmon_registry_key_max_value_data_len, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
607 | offset += 4;
608 | break;
609 |
610 | case PROCMON_REGISTRY_KEY_INFORMATION_CLASS_BASIC0:
611 | filetime_to_nstime(&timestamp, tvb_get_letoh64(tvb, offset));
612 | proto_tree_add_time(tree, hf_procmon_registry_key_last_write_time, tvb, offset, 8, &timestamp);
613 | offset += 8;
614 | proto_tree_add_item(tree, hf_procmon_registry_key_title_index, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
615 | offset += 4;
616 | proto_tree_add_item_ret_uint(tree, hf_procmon_registry_key_name_size, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &name_size);
617 | offset += 4;
618 | proto_tree_add_item(tree, hf_procmon_registry_key_name, tvb, offset, name_size, ENC_UTF_160x00000004 | ENC_LITTLE_ENDIAN0x80000000);
619 | offset += name_size;
620 | break;
621 |
622 | case PROCMON_REGISTRY_KEY_INFORMATION_CLASS_FULL2:
623 | filetime_to_nstime(&timestamp, tvb_get_letoh64(tvb, offset));
624 | proto_tree_add_time(tree, hf_procmon_registry_key_last_write_time, tvb, offset, 8, &timestamp);
625 | offset += 8;
626 | proto_tree_add_item(tree, hf_procmon_registry_key_title_index, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
627 | offset += 4;
628 | proto_tree_add_item(tree, hf_procmon_registry_key_class_offset, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
629 | offset += 4;
630 | proto_tree_add_item(tree, hf_procmon_registry_key_class_length, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
631 | offset += 4;
632 | proto_tree_add_item(tree, hf_procmon_registry_key_subkeys, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
633 | offset += 4;
634 | proto_tree_add_item(tree, hf_procmon_registry_key_max_name_len, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
635 | offset += 4;
636 | proto_tree_add_item(tree, hf_procmon_registry_key_max_class_len, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
637 | offset += 4;
638 | proto_tree_add_item(tree, hf_procmon_registry_key_values, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
639 | offset += 4;
640 | proto_tree_add_item(tree, hf_procmon_registry_key_max_value_name_len, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
641 | offset += 4;
642 | proto_tree_add_item(tree, hf_procmon_registry_key_max_value_data_len, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
643 | offset += 4;
644 | break;
645 |
646 | case PROCMON_REGISTRY_KEY_INFORMATION_CLASS_NODE1:
647 | filetime_to_nstime(&timestamp, tvb_get_letoh64(tvb, offset));
648 | proto_tree_add_time(tree, hf_procmon_registry_key_last_write_time, tvb, offset, 8, &timestamp);
649 | offset += 8;
650 | proto_tree_add_item(tree, hf_procmon_registry_key_title_index, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
651 | offset += 4;
652 | proto_tree_add_item(tree, hf_procmon_registry_key_class_offset, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
653 | offset += 4;
654 | proto_tree_add_item(tree, hf_procmon_registry_key_class_length, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
655 | offset += 4;
656 | proto_tree_add_item_ret_uint(tree, hf_procmon_registry_key_name_size, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &name_size);
657 | offset += 4;
658 | proto_tree_add_item(tree, hf_procmon_registry_key_name, tvb, offset, name_size, ENC_UTF_160x00000004 | ENC_LITTLE_ENDIAN0x80000000);
659 | offset += name_size;
660 | break;
661 |
662 | case PROCMON_REGISTRY_KEY_INFORMATION_CLASS_VIRTUALIZATION6:
663 | case PROCMON_REGISTRY_KEY_INFORMATION_CLASS_TRUST8:
664 | case PROCMON_REGISTRY_KEY_INFORMATION_CLASS_LAYER9:
665 | //No extra data (or unknown)
666 | break;
667 | }
668 |
669 | return offset;
670 | }
671 |
672 | #define PROCMON_REGISTRY_VALUE_REG_TYPE_NONE0 0
673 | #define PROCMON_REGISTRY_VALUE_REG_TYPE_SZ1 1
674 | #define PROCMON_REGISTRY_VALUE_REG_TYPE_EXPAND_SZ2 2
675 | #define PROCMON_REGISTRY_VALUE_REG_TYPE_BINARY3 3
676 | #define PROCMON_REGISTRY_VALUE_REG_TYPE_DWORD4 4
677 | #define PROCMON_REGISTRY_VALUE_REG_TYPE_DWORD_BIG_ENDIAN5 5
678 | #define PROCMON_REGISTRY_VALUE_REG_TYPE_LINK6 6
679 | #define PROCMON_REGISTRY_VALUE_REG_TYPE_MULTI_SZ7 7
680 | #define PROCMON_REGISTRY_VALUE_REG_TYPE_RESOURCE_LIST8 8
681 | #define PROCMON_REGISTRY_VALUE_REG_TYPE_FULL_RESOURCE_DESCRIPTOR9 9
682 | #define PROCMON_REGISTRY_VALUE_REG_TYPE_RESOURCE_REQUIREMENTS_LIST10 10
683 | #define PROCMON_REGISTRY_VALUE_REG_TYPE_QWORD11 11
684 | #define PROCMON_REGISTRY_VALUE_REG_TYPE_QWORD_BIG_ENDIAN12 12
685 |
686 | static const value_string registry_value_reg_type_vals[] = {
687 | { PROCMON_REGISTRY_VALUE_REG_TYPE_NONE0, "REG_NONE" },
688 | { PROCMON_REGISTRY_VALUE_REG_TYPE_SZ1, "REG_SZ" },
689 | { PROCMON_REGISTRY_VALUE_REG_TYPE_EXPAND_SZ2, "REG_EXPAND_SZ" },
690 | { PROCMON_REGISTRY_VALUE_REG_TYPE_BINARY3, "REG_BINARY" },
691 | { PROCMON_REGISTRY_VALUE_REG_TYPE_DWORD4, "REG_DWORD" },
692 | { PROCMON_REGISTRY_VALUE_REG_TYPE_DWORD_BIG_ENDIAN5, "REG_DWORD_BIG_ENDIAN" },
693 | { PROCMON_REGISTRY_VALUE_REG_TYPE_LINK6, "REG_LINK" },
694 | { PROCMON_REGISTRY_VALUE_REG_TYPE_MULTI_SZ7, "REG_MULTI_SZ" },
695 | { PROCMON_REGISTRY_VALUE_REG_TYPE_RESOURCE_LIST8, "REG_RESOURCE_LIST" },
696 | { PROCMON_REGISTRY_VALUE_REG_TYPE_FULL_RESOURCE_DESCRIPTOR9, "REG_FULL_RESOURCE_DESCRIPTOR" },
697 | { PROCMON_REGISTRY_VALUE_REG_TYPE_RESOURCE_REQUIREMENTS_LIST10, "REG_RESOURCE_REQUIREMENTS_LIST" },
698 | { PROCMON_REGISTRY_VALUE_REG_TYPE_QWORD11, "REG_QWORD" },
699 | { PROCMON_REGISTRY_VALUE_REG_TYPE_QWORD_BIG_ENDIAN12, "REG_QWORD_BIG_ENDIAN" },
700 | { 0, NULL((void*)0) }
701 | };
702 |
703 | static int procmon_read_registry_data(proto_tree* tree, packet_info* pinfo, tvbuff_t* tvb, int offset, uint32_t type, uint32_t length)
704 | {
705 | switch (type)
706 | {
707 | case PROCMON_REGISTRY_VALUE_REG_TYPE_DWORD4:
708 | proto_tree_add_item(tree, hf_procmon_registry_value_dword, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
709 | offset += 4;
710 | break;
711 | case PROCMON_REGISTRY_VALUE_REG_TYPE_QWORD11:
712 | proto_tree_add_item(tree, hf_procmon_registry_value_qword, tvb, offset, 8, ENC_LITTLE_ENDIAN0x80000000);
713 | offset += 8;
714 | break;
715 | case PROCMON_REGISTRY_VALUE_REG_TYPE_SZ1:
716 | case PROCMON_REGISTRY_VALUE_REG_TYPE_EXPAND_SZ2:
717 | proto_tree_add_item(tree, hf_procmon_registry_value_sz, tvb, offset, -1, ENC_UTF_160x00000004 | ENC_LITTLE_ENDIAN0x80000000);
718 | offset += tvb_reported_length(tvb);
719 | break;
720 | case PROCMON_REGISTRY_VALUE_REG_TYPE_BINARY3:
721 | proto_tree_add_item(tree, hf_procmon_registry_value_binary, tvb, offset, -1, ENC_NA0x00000000);
722 | offset += tvb_reported_length(tvb);
723 | break;
724 | case PROCMON_REGISTRY_VALUE_REG_TYPE_MULTI_SZ7:
725 | {
726 | int str_length;
727 | int start_offset = offset;
728 | uint8_t* substring;
729 | wmem_strbuf_t* full_string = wmem_strbuf_new(pinfo->pool, "");
730 |
731 | while (((substring = tvb_get_stringz_enc(pinfo->pool, tvb, offset, &str_length, ENC_UTF_160x00000004 | ENC_LITTLE_ENDIAN0x80000000)) != NULL((void*)0)) && (strlen(substring) > 0))
732 | {
733 | wmem_strbuf_append_printf(full_string, " %s", substring);
734 | offset += str_length;
735 | }
736 | //Include the NULL string at the end of the list
737 | offset += 2;
738 |
739 | proto_tree_add_string(tree, hf_procmon_registry_value_multi_sz, tvb, start_offset, offset - start_offset, wmem_strbuf_get_str(full_string));
740 | offset += length;
741 | break;
742 | }
743 | }
744 |
745 | return offset;
746 | }
747 |
748 | static int procmon_registry_query_or_enum_value_extra_details(proto_tree* tree, packet_info* pinfo, tvbuff_t* tvb, uint32_t information_class)
749 | {
750 | int offset = 0;
751 | uint32_t length = 0, type, name_size;
752 |
753 | //Unknown fields
754 | offset += 4;
755 |
756 | proto_tree_add_item_ret_uint(tree, hf_procmon_registry_value_reg_type, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &type);
757 | offset += 4;
758 |
759 | switch (information_class)
760 | {
761 | case PROCMON_REGISTRY_VALUE_INFORMATION_CLASS_FULL1:
762 | proto_tree_add_item(tree, hf_procmon_registry_value_offset_to_data, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
763 | offset += 4;
764 | proto_tree_add_item_ret_uint(tree, hf_procmon_registry_value_length, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &length);
765 | offset += 4;
766 | proto_tree_add_item_ret_uint(tree, hf_procmon_registry_value_name_size, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &name_size);
767 | offset += 4;
768 | proto_tree_add_item(tree, hf_procmon_registry_value_name, tvb, offset, name_size, ENC_UTF_160x00000004 | ENC_LITTLE_ENDIAN0x80000000);
769 | offset += name_size;
770 | break;
771 | case PROCMON_REGISTRY_VALUE_INFORMATION_CLASS_PARTIAL2:
772 | proto_tree_add_item_ret_uint(tree, hf_procmon_registry_value_length, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &length);
773 | offset += 4;
774 | break;
775 | }
776 |
777 | if (length > 0)
778 | offset += procmon_read_registry_data(tree, pinfo, tvb, offset, type, length);
779 |
780 | return offset;
781 | }
782 |
783 | static bool_Bool dissect_procmon_registry_event(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, uint32_t operation, tvbuff_t* extra_details_tvb)
784 | {
785 | proto_tree* registry_tree;
786 | int offset = 0, extra_offset = 0;
787 | bool_Bool is_value_ascii, is_new_value_ascii;
788 | uint32_t information_class, type;
789 | uint16_t value_char_count, new_value_char_count;
790 | uint32_t registry_access_mask_mapping[4] = { 0x20019, 0x20006, 0x20019, 0xf003f };
791 |
792 | registry_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_procmon_registry_event, NULL((void*)0), "Registry Data");
793 |
794 | switch(operation) {
795 | case PROCMON_REGISTRY_OPERATION_OPEN_KEY0x0000:
796 | case PROCMON_REGISTRY_OPERATION_CREATE_KEY0x0001:
797 | {
798 | static const value_string desired_access_vals[] = {
799 | {0xf003f, "All Access"},
800 | {0x2001f, "Read/Write"},
801 | {0x20019, "Read"},
802 | {0x20006, "Write"},
803 | {0x1, "Query Value"},
804 | {0x2, "Set Value"},
805 | {0x4, "Create Sub Key"},
806 | {0x8, "Enumerate Sub Keys"},
807 | {0x10, "Notify"},
808 | {0x20, "Create Link"},
809 | {0x300, "WOW64_Res"},
810 | {0x200, "WOW64_32Key"},
811 | {0x100, "WOW64_64Key"},
812 | {0x10000, "Delete"},
813 | {0x20000, "Read Control"},
814 | {0x40000, "Write DAC"},
815 | {0x80000, "Write Owner"},
816 | {0x100000, "Synchronize"},
817 | {0x1000000, "Access System Security"},
818 | {0x2000000, "Maximum Allowed"},
819 | { 0, NULL((void*)0) }
820 | };
821 | uint32_t desired_access;
822 |
823 | dissect_procmon_detail_string_info(tvb, registry_tree, offset,
824 | hf_procmon_registry_key_size, hf_procmon_registry_key_is_ascii, hf_procmon_registry_key_char_count, ett_procmon_registry_key,
825 | &is_value_ascii, &value_char_count);
826 | offset += 2;
827 |
828 | //Unknown fields
829 | offset += 2;
830 |
831 | desired_access = tvb_get_letohl(tvb, offset);
832 | dissect_procmon_access_mask(tvb, pinfo, registry_tree, offset, hf_procmon_registry_desired_access, 4, registry_access_mask_mapping, desired_access_vals);
833 | offset += 4;
834 | /* offset = */ dissect_procmon_detail_string(tvb, registry_tree, offset, is_value_ascii, value_char_count, hf_procmon_registry_key);
835 |
836 | if (tvb_reported_length(extra_details_tvb) > 0)
837 | {
838 | if (desired_access & 0x2000000)
839 | dissect_procmon_access_mask(extra_details_tvb, pinfo, registry_tree, extra_offset, hf_procmon_registry_granted_access, 4, registry_access_mask_mapping, desired_access_vals);
840 |
841 | extra_offset += 4;
842 | proto_tree_add_item(registry_tree, hf_procmon_registry_disposition, extra_details_tvb, extra_offset, 4, ENC_LITTLE_ENDIAN0x80000000);
843 | extra_offset += 4;
844 | }
845 | break;
846 | }
847 | case PROCMON_REGISTRY_OPERATION_CLOSE_KEY0x0002:
848 | case PROCMON_REGISTRY_OPERATION_FLUSH_KEY0x000B:
849 | case PROCMON_REGISTRY_OPERATION_UNLOAD_KEY0x000D:
850 | dissect_procmon_detail_string_info(tvb, registry_tree, offset,
851 | hf_procmon_registry_key_size, hf_procmon_registry_key_is_ascii, hf_procmon_registry_key_char_count, ett_procmon_registry_key,
852 | &is_value_ascii, &value_char_count);
853 | offset += 2;
854 | offset = dissect_procmon_detail_string(tvb, registry_tree, offset, is_value_ascii, value_char_count, hf_procmon_registry_key);
855 | break;
856 |
857 | case PROCMON_REGISTRY_OPERATION_QUERY_KEY0x0003:
858 | {
859 | proto_item* info_item;
860 | dissect_procmon_detail_string_info(tvb, registry_tree, offset,
861 | hf_procmon_registry_key_size, hf_procmon_registry_key_is_ascii, hf_procmon_registry_key_char_count, ett_procmon_registry_key,
862 | &is_value_ascii, &value_char_count);
863 | offset += 2;
864 |
865 | //Unknown fields
866 | offset += 2;
867 |
868 | proto_tree_add_item(registry_tree, hf_procmon_registry_length, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
869 | offset += 4;
870 | info_item = proto_tree_add_item_ret_uint(registry_tree, hf_procmon_registry_key_information_class, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &information_class);
871 | if (try_val_to_str(information_class, registry_key_information_class_vals) == NULL((void*)0))
872 | expert_add_info_format(pinfo, info_item, &ei_procmon_unknown_operation, "Unknown Registry Key Information Class: %u", information_class);
873 | offset += 4;
874 | offset = dissect_procmon_detail_string(tvb, registry_tree, offset, is_value_ascii, value_char_count, hf_procmon_registry_key);
875 | if (tvb_reported_length(extra_details_tvb) > 0)
876 | extra_offset += procmon_registry_query_or_enum_key_extra_details(registry_tree, extra_details_tvb, information_class);
877 | break;
878 | }
879 | case PROCMON_REGISTRY_OPERATION_QUERY_VALUE0x0005:
880 | dissect_procmon_detail_string_info(tvb, registry_tree, offset,
881 | hf_procmon_registry_value_size, hf_procmon_registry_value_is_ascii, hf_procmon_registry_value_char_count, ett_procmon_registry_value,
882 | &is_value_ascii, &value_char_count);
883 | offset += 2;
884 |
885 | //Unknown fields
886 | offset += 2;
887 |
888 | proto_tree_add_item(registry_tree, hf_procmon_registry_length, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
889 | offset += 4;
890 | proto_tree_add_item_ret_uint(registry_tree, hf_procmon_registry_value_information_class, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &information_class);
891 | offset += 4;
892 | /* offset = */ dissect_procmon_detail_string(tvb, registry_tree, offset, is_value_ascii, value_char_count, hf_procmon_registry_value);
893 | if (tvb_reported_length(extra_details_tvb) > 0)
894 | extra_offset += procmon_registry_query_or_enum_value_extra_details(registry_tree, pinfo, extra_details_tvb, information_class);
895 | break;
896 |
897 | case PROCMON_REGISTRY_OPERATION_ENUM_KEY0x0007:
898 | {
899 | dissect_procmon_detail_string_info(tvb, registry_tree, offset,
900 | hf_procmon_registry_key_size, hf_procmon_registry_key_is_ascii, hf_procmon_registry_key_char_count, ett_procmon_registry_key,
901 | &is_value_ascii, &value_char_count);
902 | offset += 2;
903 |
904 | //Unknown fields
905 | offset += 2;
906 |
907 | proto_tree_add_item(registry_tree, hf_procmon_registry_length, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
908 | offset += 4;
909 | proto_tree_add_item(registry_tree, hf_procmon_registry_index, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
910 | offset += 4;
911 | proto_tree_add_item_ret_uint(registry_tree, hf_procmon_registry_key_information_class, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &information_class);
912 | offset += 4;
913 | offset = dissect_procmon_detail_string(tvb, registry_tree, offset, is_value_ascii, value_char_count, hf_procmon_registry_key);
914 | if (tvb_reported_length(extra_details_tvb) > 0)
915 | extra_offset += procmon_registry_query_or_enum_key_extra_details(registry_tree, extra_details_tvb, information_class);
916 | break;
917 | }
918 | case PROCMON_REGISTRY_OPERATION_ENUM_VALUE0x0006:
919 | dissect_procmon_detail_string_info(tvb, registry_tree, offset,
920 | hf_procmon_registry_value_size, hf_procmon_registry_value_is_ascii, hf_procmon_registry_value_char_count, ett_procmon_registry_value,
921 | &is_value_ascii, &value_char_count);
922 | offset += 2;
923 |
924 | //Unknown fields
925 | offset += 2;
926 |
927 | proto_tree_add_item(registry_tree, hf_procmon_registry_length, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
928 | offset += 4;
929 | proto_tree_add_item(registry_tree, hf_procmon_registry_index, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
930 | offset += 4;
931 | proto_tree_add_item_ret_uint(registry_tree, hf_procmon_registry_value_information_class, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &information_class);
932 | offset += 4;
933 | offset = dissect_procmon_detail_string(tvb, registry_tree, offset, is_value_ascii, value_char_count, hf_procmon_registry_value);
934 | if (tvb_reported_length(extra_details_tvb) > 0)
935 | extra_offset += procmon_registry_query_or_enum_value_extra_details(registry_tree, pinfo, extra_details_tvb, information_class);
936 | break;
937 |
938 | case PROCMON_REGISTRY_OPERATION_SET_VALUE0x0004:
939 | dissect_procmon_detail_string_info(tvb, registry_tree, offset,
940 | hf_procmon_registry_value_size, hf_procmon_registry_value_is_ascii, hf_procmon_registry_value_char_count, ett_procmon_registry_value,
941 | &is_value_ascii, &value_char_count);
942 | offset += 2;
943 |
944 | //Unknown fields
945 | offset += 2;
946 |
947 | proto_tree_add_item_ret_uint(registry_tree, hf_procmon_registry_type, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &type);
948 | offset += 4;
949 | proto_tree_add_item(registry_tree, hf_procmon_registry_length, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
950 | offset += 4;
951 | proto_tree_add_item(registry_tree, hf_procmon_registry_data_length, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
952 | offset += 4;
953 | offset = dissect_procmon_detail_string(tvb, registry_tree, offset, is_value_ascii, value_char_count, hf_procmon_registry_value);
954 | if (tvb_reported_length(extra_details_tvb) > 0)
955 | extra_offset += procmon_read_registry_data(registry_tree, pinfo, extra_details_tvb, extra_offset, type, tvb_reported_length(extra_details_tvb));
956 | break;
957 | case PROCMON_REGISTRY_OPERATION_SET_INFO_KEY0x0008:
958 | dissect_procmon_detail_string_info(tvb, registry_tree, offset,
959 | hf_procmon_registry_key_size, hf_procmon_registry_key_is_ascii, hf_procmon_registry_key_char_count, ett_procmon_registry_key,
960 | &is_value_ascii, &value_char_count);
961 | offset += 2;
962 |
963 | //Unknown fields
964 | offset += 2;
965 |
966 | proto_tree_add_item_ret_uint(registry_tree, hf_procmon_registry_key_set_information_class, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &information_class);
967 | offset += 4;
968 |
969 | //Unknown fields
970 | offset += 4;
971 |
972 | proto_tree_add_item(registry_tree, hf_procmon_registry_length, tvb, offset, 2, ENC_LITTLE_ENDIAN0x80000000);
973 | offset += 2;
974 |
975 | //Unknown fields
976 | offset += 2;
977 |
978 | offset = dissect_procmon_detail_string(tvb, registry_tree, offset, is_value_ascii, value_char_count, hf_procmon_registry_key);
979 |
980 | if (tvb_reported_length(extra_details_tvb) > 0)
981 | {
982 | switch (information_class)
983 | {
984 | case PROCMON_REGISTRY_KEY_SET_INFORMATION_WRITE_TIME_INFO0:
985 | {
986 | nstime_t timestamp;
987 | filetime_to_nstime(&timestamp, tvb_get_letoh64(extra_details_tvb, offset));
988 | proto_tree_add_time(registry_tree, hf_procmon_registry_key_set_information_write_time, extra_details_tvb, extra_offset, 8, &timestamp);
989 | extra_offset += 8;
990 | break;
991 | }
992 | case PROCMON_REGISTRY_KEY_SET_INFORMATION_WOW64_FLAGS_INFO1:
993 | proto_tree_add_item(registry_tree, hf_procmon_registry_key_set_information_wow64_flags, extra_details_tvb, extra_offset, 4, ENC_LITTLE_ENDIAN0x80000000);
994 | extra_offset += 4;
995 | break;
996 | case PROCMON_REGISTRY_KEY_SET_INFORMATION_HANDLE_TAGS_INFO2:
997 | proto_tree_add_item(registry_tree, hf_procmon_registry_key_set_information_handle_tags, extra_details_tvb, extra_offset, 4, ENC_LITTLE_ENDIAN0x80000000);
998 | extra_offset += 4;
999 | break;
1000 | }
1001 | }
1002 | break;
1003 |
1004 | case PROCMON_REGISTRY_OPERATION_DELETE_KEY0x0009:
1005 | dissect_procmon_detail_string_info(tvb, registry_tree, offset,
1006 | hf_procmon_registry_key_size, hf_procmon_registry_key_is_ascii, hf_procmon_registry_key_char_count, ett_procmon_registry_key,
1007 | &is_value_ascii, &value_char_count);
1008 | offset += 2;
1009 | offset = dissect_procmon_detail_string(tvb, registry_tree, offset, is_value_ascii, value_char_count, hf_procmon_registry_key);
1010 | break;
1011 |
1012 | case PROCMON_REGISTRY_OPERATION_DELETE_VALUE0x000A:
1013 | dissect_procmon_detail_string_info(tvb, registry_tree, offset,
1014 | hf_procmon_registry_value_size, hf_procmon_registry_value_is_ascii, hf_procmon_registry_value_char_count, ett_procmon_registry_value,
1015 | &is_value_ascii, &value_char_count);
1016 | offset += 2;
1017 |
1018 | offset = dissect_procmon_detail_string(tvb, registry_tree, offset, is_value_ascii, value_char_count, hf_procmon_registry_value);
1019 | break;
1020 |
1021 | case PROCMON_REGISTRY_OPERATION_LOAD_KEY0x000C:
1022 | case PROCMON_REGISTRY_OPERATION_RENAME_KEY0x000E:
1023 | dissect_procmon_detail_string_info(tvb, registry_tree, offset,
1024 | hf_procmon_registry_key_size, hf_procmon_registry_key_is_ascii, hf_procmon_registry_key_char_count, ett_procmon_registry_key,
1025 | &is_value_ascii, &value_char_count);
1026 | offset += 2;
1027 | dissect_procmon_detail_string_info(tvb, registry_tree, offset,
1028 | hf_procmon_registry_new_key_size, hf_procmon_registry_new_key_is_ascii, hf_procmon_registry_new_key_char_count, ett_procmon_registry_new_key,
1029 | &is_new_value_ascii, &new_value_char_count);
1030 | offset += 2;
1031 | offset = dissect_procmon_detail_string(tvb, registry_tree, offset, is_value_ascii, value_char_count, hf_procmon_registry_key);
1032 | extra_offset += dissect_procmon_detail_string(extra_details_tvb, registry_tree, extra_offset, is_new_value_ascii, new_value_char_count, hf_procmon_registry_new_key);
1033 | break;
1034 |
1035 | case PROCMON_REGISTRY_OPERATION_QUERY_MULTIPLE_VALUE0x000F:
1036 | dissect_procmon_detail_string_info(tvb, registry_tree, offset,
1037 | hf_procmon_registry_value_size, hf_procmon_registry_value_is_ascii, hf_procmon_registry_value_char_count, ett_procmon_registry_value,
1038 | &is_value_ascii, &value_char_count);
1039 | offset += 2;
1040 |
1041 | offset = dissect_procmon_detail_string(tvb, registry_tree, offset, is_value_ascii, value_char_count, hf_procmon_registry_value);
1042 | break;
1043 |
1044 | case PROCMON_REGISTRY_OPERATION_SET_KEY_SECURITY0x0010:
1045 | dissect_procmon_detail_string_info(tvb, registry_tree, offset,
1046 | hf_procmon_registry_key_size, hf_procmon_registry_key_is_ascii, hf_procmon_registry_key_char_count, ett_procmon_registry_key,
1047 | &is_value_ascii, &value_char_count);
1048 | offset += 2;
1049 | offset = dissect_procmon_detail_string(tvb, registry_tree, offset, is_value_ascii, value_char_count, hf_procmon_registry_key);
1050 | break;
1051 |
1052 | case PROCMON_REGISTRY_OPERATION_QUERY_KEY_SECURITY0x0011:
1053 | dissect_procmon_detail_string_info(tvb, registry_tree, offset,
1054 | hf_procmon_registry_key_size, hf_procmon_registry_key_is_ascii, hf_procmon_registry_key_char_count, ett_procmon_registry_key,
1055 | &is_value_ascii, &value_char_count);
1056 | offset += 2;
1057 | offset = dissect_procmon_detail_string(tvb, registry_tree, offset, is_value_ascii, value_char_count, hf_procmon_registry_key);
1058 | break;
1059 | }
1060 |
1061 | return (extra_offset != 0);
1062 | }
1063 |
1064 | #define PROCMON_FILESYSTEM_OPERATION_VOLUME_DISMOUNT0 0
1065 | #define PROCMON_FILESYSTEM_OPERATION_VOLUME_MOUNT1 1
1066 | #define PROCMON_FILESYSTEM_OPERATION_FASTIO_MDL_WRITE_COMPLETE2 2
1067 | #define PROCMON_FILESYSTEM_OPERATION_WRITE_FILE23 3
1068 | #define PROCMON_FILESYSTEM_OPERATION_FASTIO_MDL_READ_COMPLETE4 4
1069 | #define PROCMON_FILESYSTEM_OPERATION_READ_FILE25 5
1070 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_OPEN6 6
1071 | #define PROCMON_FILESYSTEM_OPERATION_FASTIO_CHECK_IF_POSSIBLE7 7
1072 | #define PROCMON_FILESYSTEM_OPERATION_IRP_MJ_128 8
1073 | #define PROCMON_FILESYSTEM_OPERATION_IRP_MJ_119 9
1074 | #define PROCMON_FILESYSTEM_OPERATION_IRP_MJ_1010 10
1075 | #define PROCMON_FILESYSTEM_OPERATION_IRP_MJ_911 11
1076 | #define PROCMON_FILESYSTEM_OPERATION_IRP_MJ_812 12
1077 | #define PROCMON_FILESYSTEM_OPERATION_FASTIO_NOTIFY_STREAM_FO_CREATION13 13
1078 | #define PROCMON_FILESYSTEM_OPERATION_FASTIO_RELEASE_FOR_CC_FLUSH14 14
1079 | #define PROCMON_FILESYSTEM_OPERATION_FASTIO_ACQUIRE_FOR_CC_FLUSH15 15
1080 | #define PROCMON_FILESYSTEM_OPERATION_FASTIO_RELEASE_FOR_MOD_WRITE16 16
1081 | #define PROCMON_FILESYSTEM_OPERATION_FASTIO_ACQUIRE_FOR_MOD_WRITE17 17
1082 | #define PROCMON_FILESYSTEM_OPERATION_FASTIO_RELEASE_FOR_SECTION_SYNCHRONIZATION18 18
1083 | #define PROCMON_FILESYSTEM_OPERATION_CREATE_FILE_MAPPING19 19
1084 | #define PROCMON_FILESYSTEM_OPERATION_CREATE_FILE20 20
1085 | #define PROCMON_FILESYSTEM_OPERATION_CREATE_PIPE21 21
1086 | #define PROCMON_FILESYSTEM_OPERATION_IRP_MJ_CLOSE22 22
1087 | #define PROCMON_FILESYSTEM_OPERATION_READ_FILE23 23
1088 | #define PROCMON_FILESYSTEM_OPERATION_WRITE_FILE24 24
1089 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE25 25
1090 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE26 26
1091 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_EA_FILE27 27
1092 | #define PROCMON_FILESYSTEM_OPERATION_SET_EA_FILE28 28
1093 | #define PROCMON_FILESYSTEM_OPERATION_FLUSH_BUFFERS_FILE29 29
1094 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION30 30
1095 | #define PROCMON_FILESYSTEM_OPERATION_SET_VOLUME_INFORMATION31 31
1096 | #define PROCMON_FILESYSTEM_OPERATION_DIRECTORY_CONTROL32 32
1097 | #define PROCMON_FILESYSTEM_OPERATION_FILE_SYSTEM_CONTROL33 33
1098 | #define PROCMON_FILESYSTEM_OPERATION_DEVICE_IO_CONTROL34 34
1099 | #define PROCMON_FILESYSTEM_OPERATION_INTERNAL_DEVICE_IO_CONTROL35 35
1100 | #define PROCMON_FILESYSTEM_OPERATION_SHUTDOWN36 36
1101 | #define PROCMON_FILESYSTEM_OPERATION_LOCK_UNLOCK_FILE37 37
1102 | #define PROCMON_FILESYSTEM_OPERATION_CLOSE_FILE38 38
1103 | #define PROCMON_FILESYSTEM_OPERATION_CREATE_MAIL_SLOT39 39
1104 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_SECURITY_FILE40 40
1105 | #define PROCMON_FILESYSTEM_OPERATION_SET_SECURITY_FILE41 41
1106 | #define PROCMON_FILESYSTEM_OPERATION_POWER42 42
1107 | #define PROCMON_FILESYSTEM_OPERATION_SYSTEM_CONTROL43 43
1108 | #define PROCMON_FILESYSTEM_OPERATION_DEVICE_CHANGE44 44
1109 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_FILE_QUOTA45 45
1110 | #define PROCMON_FILESYSTEM_OPERATION_SET_FILE_QUOTA46 46
1111 | #define PROCMON_FILESYSTEM_OPERATION_PLUG_AND_PLAY47 47
1112 |
1113 | static const value_string filesystem_operation_vals[] = {
1114 | { PROCMON_FILESYSTEM_OPERATION_VOLUME_DISMOUNT0, "Volume Dismount" },
1115 | { PROCMON_FILESYSTEM_OPERATION_VOLUME_MOUNT1, "Volume Mount" },
1116 | { PROCMON_FILESYSTEM_OPERATION_FASTIO_MDL_WRITE_COMPLETE2, "Fast I/O MDL Write Complete" },
1117 | { PROCMON_FILESYSTEM_OPERATION_WRITE_FILE23, "Write File 2" },
1118 | { PROCMON_FILESYSTEM_OPERATION_FASTIO_MDL_READ_COMPLETE4, "Fast I/O MDL Read Complete" },
1119 | { PROCMON_FILESYSTEM_OPERATION_READ_FILE25, "Read File 2" },
1120 | { PROCMON_FILESYSTEM_OPERATION_QUERY_OPEN6, "Query Open" },
1121 | { PROCMON_FILESYSTEM_OPERATION_FASTIO_CHECK_IF_POSSIBLE7, "Fast I/O Check If Possible" },
1122 | { PROCMON_FILESYSTEM_OPERATION_IRP_MJ_128, "IRP_MJ_CLEANUP" },
1123 | { PROCMON_FILESYSTEM_OPERATION_IRP_MJ_119, "IRP_MJ_SET_INFORMATION" },
1124 | { PROCMON_FILESYSTEM_OPERATION_IRP_MJ_1010, "IRP_MJ_QUERY_INFORMATION" },
1125 | { PROCMON_FILESYSTEM_OPERATION_IRP_MJ_911, "IRP_MJ_FLUSH_BUFFERS" },
1126 | { PROCMON_FILESYSTEM_OPERATION_IRP_MJ_812, "IRP_MJ_DIRECTORY_CONTROL" },
1127 | { PROCMON_FILESYSTEM_OPERATION_FASTIO_NOTIFY_STREAM_FO_CREATION13, "Fast I/O Notify Stream File Object Creation" },
1128 | { PROCMON_FILESYSTEM_OPERATION_FASTIO_RELEASE_FOR_CC_FLUSH14, "Fast I/O Release For Cache Manager Flush" },
1129 | { PROCMON_FILESYSTEM_OPERATION_FASTIO_ACQUIRE_FOR_CC_FLUSH15, "Fast I/O Acquire For Cache Manager Flush" },
1130 | { PROCMON_FILESYSTEM_OPERATION_FASTIO_RELEASE_FOR_MOD_WRITE16, "Fast I/O Release For Modified Write" },
1131 | { PROCMON_FILESYSTEM_OPERATION_FASTIO_ACQUIRE_FOR_MOD_WRITE17, "Fast I/O Acquire For Modified Write" },
1132 | { PROCMON_FILESYSTEM_OPERATION_FASTIO_RELEASE_FOR_SECTION_SYNCHRONIZATION18, "Fast I/O Release For Section Synchronization" },
1133 | { PROCMON_FILESYSTEM_OPERATION_CREATE_FILE_MAPPING19, "Create File Mapping" },
1134 | { PROCMON_FILESYSTEM_OPERATION_CREATE_FILE20, "Create File" },
1135 | { PROCMON_FILESYSTEM_OPERATION_CREATE_PIPE21, "Create Pipe" },
1136 | { PROCMON_FILESYSTEM_OPERATION_IRP_MJ_CLOSE22, "IRP_MJ_CLOSE" },
1137 | { PROCMON_FILESYSTEM_OPERATION_READ_FILE23, "Read File" },
1138 | { PROCMON_FILESYSTEM_OPERATION_WRITE_FILE24, "Write File" },
1139 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE25, "Query Information File" },
1140 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE26, "Set Information File" },
1141 | { PROCMON_FILESYSTEM_OPERATION_QUERY_EA_FILE27, "Query EA File" },
1142 | { PROCMON_FILESYSTEM_OPERATION_SET_EA_FILE28, "Set EA File" },
1143 | { PROCMON_FILESYSTEM_OPERATION_FLUSH_BUFFERS_FILE29, "Flush Buffers File" },
1144 | { PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION30, "Query Volume Information" },
1145 | { PROCMON_FILESYSTEM_OPERATION_SET_VOLUME_INFORMATION31, "Set Volume Information" },
1146 | { PROCMON_FILESYSTEM_OPERATION_DIRECTORY_CONTROL32, "Directory Control" },
1147 | { PROCMON_FILESYSTEM_OPERATION_FILE_SYSTEM_CONTROL33, "File System Control" },
1148 | { PROCMON_FILESYSTEM_OPERATION_DEVICE_IO_CONTROL34, "Device I/O Control" },
1149 | { PROCMON_FILESYSTEM_OPERATION_INTERNAL_DEVICE_IO_CONTROL35, "Internal Device I/O Control" },
1150 | { PROCMON_FILESYSTEM_OPERATION_SHUTDOWN36, "Shutdown" },
1151 | { PROCMON_FILESYSTEM_OPERATION_LOCK_UNLOCK_FILE37, "Lock/Unlock File" },
1152 | { PROCMON_FILESYSTEM_OPERATION_CLOSE_FILE38, "Close File" },
1153 | { PROCMON_FILESYSTEM_OPERATION_CREATE_MAIL_SLOT39, "Create Mail Slot" },
1154 | { PROCMON_FILESYSTEM_OPERATION_QUERY_SECURITY_FILE40, "Query Security File" },
1155 | { PROCMON_FILESYSTEM_OPERATION_SET_SECURITY_FILE41, "Set Security File" },
1156 | { PROCMON_FILESYSTEM_OPERATION_POWER42, "Power" },
1157 | { PROCMON_FILESYSTEM_OPERATION_SYSTEM_CONTROL43, "System Control" },
1158 | { PROCMON_FILESYSTEM_OPERATION_DEVICE_CHANGE44, "Device Change" },
1159 | { PROCMON_FILESYSTEM_OPERATION_QUERY_FILE_QUOTA45, "Query File Quota" },
1160 | { PROCMON_FILESYSTEM_OPERATION_SET_FILE_QUOTA46, "Set File Quota" },
1161 | { PROCMON_FILESYSTEM_OPERATION_PLUG_AND_PLAY47, "Plug and Play" },
1162 | { 0, NULL((void*)0) }
1163 | };
1164 |
1165 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_BASIC0x04 0x04
1166 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_STANDARD0x05 0x05
1167 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_INTERNAL0x06 0x06
1168 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_EA0x07 0x07
1169 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_NAME0x09 0x09
1170 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_POSITION0x0E 0x0E
1171 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ALL0x12 0x12
1172 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_END_OF_FILE0x14 0x14
1173 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_STREAM0x16 0x16
1174 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_COMPRESSION0x1C 0x1C
1175 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ID0x1D 0x1D
1176 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_MOVE_CLUSTER0x1F 0x1F
1177 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_NETWORK_OPEN0x22 0x22
1178 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ATTRIBUTE_TAG0x23 0x23
1179 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ID_BOTH_DIRECTORY0x25 0x25
1180 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_VALID_DATA_LENGTH0x27 0x27
1181 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_SHORT_NAME0x28 0x28
1182 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_IO_PRIORITY_HINT0x2B 0x2B
1183 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_LINKS0x2E 0x2E
1184 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_NAMES0x2F 0x2F
1185 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_NORMALIZED_NAME0x30 0x30
1186 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_NETWORK_PHYSICAL_NAME0x31 0x31
1187 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ID_GLOBAL_TX_DIRECTORY0x32 0x32
1188 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_IS_REMOTE_DEVICE0x33 0x33
1189 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ATTRIBUTE_CACHE0x34 0x34
1190 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_NUMA_NODE0x35 0x35
1191 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_STANDARD_LINK0x36 0x36
1192 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_REMOTE_PROTOCOL0x37 0x37
1193 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_RENAME_BYPASS_ACCESS0x38 0x38
1194 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_LINK_BYPASS_ACCESS0x39 0x39
1195 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_VOLUME_NAME0x3A 0x3A
1196 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ID_INFO0x3B 0x3B
1197 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ID_EXTD_DIRECTORY0x3C 0x3C
1198 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_HARD_LINK_FULL_ID0x3E 0x3E
1199 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ID_EXTD_BOTH_DIRECTORY0x3F 0x3F
1200 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_DESIRED_STORAGE_CLASS0x43 0x43
1201 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_STAT0x44 0x44
1202 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_MEMORY_PARTITION0x45 0x45
1203 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_SAT_LX0x46 0x46
1204 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_CASE_SENSITIVE0x47 0x47
1205 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_LINK_EX0x48 0x48
1206 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_STORAGE_RESERVED_ID0x4A 0x4A
1207 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_CASE_SENSITIVE_FORCE_ACCESS0x4B 0x4B
1208 |
1209 | static const value_string filesystem_operation_query_info_vals[] = {
1210 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_BASIC0x04, "Basic"},
1211 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_STANDARD0x05, "Standard"},
1212 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_INTERNAL0x06, "Internal"},
1213 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_EA0x07, "EA"},
1214 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_NAME0x09, "Name"},
1215 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_POSITION0x0E, "Position"},
1216 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ALL0x12, "All"},
1217 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_END_OF_FILE0x14, "End of File"},
1218 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_STREAM0x16, "Stream"},
1219 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_COMPRESSION0x1C, "Compression"},
1220 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ID0x1D, "ID"},
1221 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_MOVE_CLUSTER0x1F, "Move Cluster"},
1222 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_NETWORK_OPEN0x22, "Network Open"},
1223 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ATTRIBUTE_TAG0x23, "Attribute Tag"},
1224 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ID_BOTH_DIRECTORY0x25,"ID Both Directory"},
1225 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_VALID_DATA_LENGTH0x27,"Valid Data Length"},
1226 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_SHORT_NAME0x28, "Short Name"},
1227 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_IO_PRIORITY_HINT0x2B, "I/O Priority Hint"},
1228 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_LINKS0x2E, "Links"},
1229 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_NAMES0x2F, "Names"},
1230 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_NORMALIZED_NAME0x30, "Normalized Name"},
1231 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_NETWORK_PHYSICAL_NAME0x31,"Network Physical Name"},
1232 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ID_GLOBAL_TX_DIRECTORY0x32,"ID Global TX Directory"},
1233 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_IS_REMOTE_DEVICE0x33, "Is Remote Device"},
1234 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ATTRIBUTE_CACHE0x34, "Attribute Cache"},
1235 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_NUMA_NODE0x35, "NUMA Node"},
1236 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_STANDARD_LINK0x36, "Standard Link"},
1237 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_REMOTE_PROTOCOL0x37, "Remote Protocol"},
1238 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_RENAME_BYPASS_ACCESS0x38, "Rename Bypass Access"},
1239 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_LINK_BYPASS_ACCESS0x39, "Link Bypass Access"},
1240 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_VOLUME_NAME0x3A, "Volume Name"},
1241 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ID_INFO0x3B, "ID Info"},
1242 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ID_EXTD_DIRECTORY0x3C, "ID Extended Directory"},
1243 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_HARD_LINK_FULL_ID0x3E, "Hard Link Full ID"},
1244 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_ID_EXTD_BOTH_DIRECTORY0x3F, "ID Extended Both Directory"},
1245 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_DESIRED_STORAGE_CLASS0x43, "Desired Storage Class"},
1246 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_STAT0x44, "Stat"},
1247 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_MEMORY_PARTITION0x45, "Memory Partition"},
1248 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_SAT_LX0x46, "SAT LX"},
1249 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_CASE_SENSITIVE0x47, "Case Sensitive"},
1250 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_LINK_EX0x48, "Link Ex"},
1251 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_STORAGE_RESERVED_ID0x4A,"Storage Reserved ID"},
1252 | { PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE_CASE_SENSITIVE_FORCE_ACCESS0x4B,"Case Sensitive Force Access"},
1253 | { 0, NULL((void*)0) }
1254 | };
1255 |
1256 |
1257 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_BASIC0x04 0x04
1258 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_RENAME0x0A 0x0A
1259 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_LINK0x0B 0x0B
1260 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_DISPOSITION0x0D 0x0D
1261 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_POSITION0x0E 0x0E
1262 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_ALLOCATION0x13 0x13
1263 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_END_OF_FILE0x14 0x14
1264 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_STREAM0x16 0x16
1265 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_PIPE0x17 0x17
1266 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_VALID_DATA_LENGTH0x27 0x27
1267 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_SHORT_NAME0x28 0x28
1268 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_REPLACE_COMPLETION0x3D 0x3D
1269 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_DISPOSITION_EX0x40 0x40
1270 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_RENAME_EX0x41 0x41
1271 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_RENAME_EX_BYPASS_ACCESS0x42 0x42
1272 | #define PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_STORAGE_RESERVE_ID0x4A 0x4A
1273 |
1274 | static const value_string filesystem_operation_set_info_vals[] = {
1275 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_BASIC0x04, "Basic" },
1276 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_RENAME0x0A, "Rename" },
1277 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_LINK0x0B, "Link" },
1278 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_DISPOSITION0x0D, "Disposition" },
1279 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_POSITION0x0E, "Position" },
1280 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_ALLOCATION0x13, "Allocation" },
1281 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_END_OF_FILE0x14, "End of File" },
1282 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_STREAM0x16, "Stream" },
1283 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_PIPE0x17, "Pipe" },
1284 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_VALID_DATA_LENGTH0x27, "Valid Data Length" },
1285 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_SHORT_NAME0x28, "Short name" },
1286 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_REPLACE_COMPLETION0x3D,"Replace Completion" },
1287 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_DISPOSITION_EX0x40, "DispositionEx" },
1288 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_RENAME_EX0x41, "RenameEx" },
1289 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_RENAME_EX_BYPASS_ACCESS0x42, "RenameEx Bypass Access" },
1290 | { PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_STORAGE_RESERVE_ID0x4A,"Storage Reserve ID" },
1291 | { 0, NULL((void*)0) }
1292 | };
1293 |
1294 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_INFORMATION0x1 0x1
1295 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_LABEL0x2 0x2
1296 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_SIZE0x3 0x3
1297 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_DEVICE0x4 0x4
1298 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_ATTRIBUTE0x5 0x5
1299 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_CONTROL0x6 0x6
1300 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_FULL_SIZE0x7 0x7
1301 | #define PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_OBJECT_ID0x8 0x8
1302 |
1303 | static const value_string filesystem_operation_query_volume_info_vals[] = {
1304 | { PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_INFORMATION0x1, "Query Information" },
1305 | { PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_LABEL0x2, "Query Label" },
1306 | { PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_SIZE0x3, "Query Size" },
1307 | { PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_DEVICE0x4, "Query Device" },
1308 | { PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_ATTRIBUTE0x5, "Query Attribute" },
1309 | { PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_CONTROL0x6, "Query Control" },
1310 | { PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_FULL_SIZE0x7, "Query Full Size" },
1311 | { PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION_QUERY_OBJECT_ID0x8, "Query Object ID" },
1312 | { 0, NULL((void*)0) }
1313 | };
1314 |
1315 | #define PROCMON_FILESYSTEM_OPERATION_SET_VOLUME_INFORMATION_CONTROL0x01 0x01
1316 | #define PROCMON_FILESYSTEM_OPERATION_SET_VOLUME_INFORMATION_LABEL0x02 0x02
1317 | #define PROCMON_FILESYSTEM_OPERATION_SET_VOLUME_INFORMATION_OBJECT_ID0x08 0x08
1318 |
1319 | static const value_string filesystem_operation_set_volume_info_vals[] = {
1320 | { PROCMON_FILESYSTEM_OPERATION_SET_VOLUME_INFORMATION_CONTROL0x01, "Control" },
1321 | { PROCMON_FILESYSTEM_OPERATION_SET_VOLUME_INFORMATION_LABEL0x02, "Label" },
1322 | { PROCMON_FILESYSTEM_OPERATION_SET_VOLUME_INFORMATION_OBJECT_ID0x08, "Object ID" },
1323 | { 0, NULL((void*)0) }
1324 | };
1325 |
1326 | #define PROCMON_FILESYSTEM_OPERATION_DIRECTORY_CONTROL_QUERY0x01 0x01
1327 | #define PROCMON_FILESYSTEM_OPERATION_DIRECTORY_CONTROL_NOTIFY_CHANGE0x02 0x02
1328 |
1329 | static const value_string filesystem_operation_directory_control_vals[] = {
1330 | { PROCMON_FILESYSTEM_OPERATION_DIRECTORY_CONTROL_QUERY0x01, "Query" },
1331 | { PROCMON_FILESYSTEM_OPERATION_DIRECTORY_CONTROL_NOTIFY_CHANGE0x02, "Notify Change" },
1332 | { 0, NULL((void*)0) }
1333 | };
1334 |
1335 | #define PROCMON_FILESYSTEM_OPERATION_PNP_START_DEVICE0x00 0x00
1336 | #define PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_REMOVE_DEVICE0x01 0x01
1337 | #define PROCMON_FILESYSTEM_OPERATION_PNP_REMOVE_DEVICE0x02 0x02
1338 | #define PROCMON_FILESYSTEM_OPERATION_PNP_CANCEL_REMOVE_DEVICE0x03 0x03
1339 | #define PROCMON_FILESYSTEM_OPERATION_PNP_STOP_DEVICE0x04 0x04
1340 | #define PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_STOP_DEVICE0x05 0x05
1341 | #define PROCMON_FILESYSTEM_OPERATION_PNP_CANCEL_STOP_DEVICE0x06 0x06
1342 | #define PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_DEVICE_RELATIONS0x07 0x07
1343 | #define PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_INTERFACE0x08 0x08
1344 | #define PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_CAPABILITIES0x09 0x09
1345 | #define PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_RESOURCES0x0A 0x0A
1346 | #define PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_RESOURCE_REQUIREMENTS0x0B 0x0B
1347 | #define PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_DEVICE_TEXT0x0C 0x0C
1348 | #define PROCMON_FILESYSTEM_OPERATION_PNP_FILTER_RESOURCE_REQUIREMENTS0x0D 0x0D
1349 | #define PROCMON_FILESYSTEM_OPERATION_PNP_READ_CONFIG0x0F 0x0F
1350 | #define PROCMON_FILESYSTEM_OPERATION_PNP_WRITE_CONFIG0x10 0x10
1351 | #define PROCMON_FILESYSTEM_OPERATION_PNP_EJECT0x11 0x11
1352 | #define PROCMON_FILESYSTEM_OPERATION_PNP_SET_LOCK0x12 0x12
1353 | #define PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_ID20x13 0x13
1354 | #define PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_PNP_DEVICE_STATE0x14 0x14
1355 | #define PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_BUS_INFORMATION0x15 0x15
1356 | #define PROCMON_FILESYSTEM_OPERATION_PNP_DEVICE_USAGE_NOTIFICATION0x16 0x16
1357 | #define PROCMON_FILESYSTEM_OPERATION_PNP_SURPRISE_REMOVAL0x17 0x17
1358 | #define PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_LEGACY_BUS_INFORMATION0x18 0x18
1359 |
1360 | static const value_string filesystem_operation_pnp_vals[] = {
1361 | { PROCMON_FILESYSTEM_OPERATION_PNP_START_DEVICE0x00, "Start Device" },
1362 | { PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_REMOVE_DEVICE0x01, "Query Remove Device" },
1363 | { PROCMON_FILESYSTEM_OPERATION_PNP_REMOVE_DEVICE0x02, "Remove Device" },
1364 | { PROCMON_FILESYSTEM_OPERATION_PNP_CANCEL_REMOVE_DEVICE0x03, "Cancel Remove Device" },
1365 | { PROCMON_FILESYSTEM_OPERATION_PNP_STOP_DEVICE0x04, "Stop Device" },
1366 | { PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_STOP_DEVICE0x05, "Query Stop Device" },
1367 | { PROCMON_FILESYSTEM_OPERATION_PNP_CANCEL_STOP_DEVICE0x06, "Cancel Stop Device" },
1368 | { PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_DEVICE_RELATIONS0x07, "Query Device Relations" },
1369 | { PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_INTERFACE0x08, "Query Interface" },
1370 | { PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_CAPABILITIES0x09, "Query Capabilities" },
1371 | { PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_RESOURCES0x0A, "Query Resources" },
1372 | { PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_RESOURCE_REQUIREMENTS0x0B, "Query Resource Requirements" },
1373 | { PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_DEVICE_TEXT0x0C, "Query Device Text" },
1374 | { PROCMON_FILESYSTEM_OPERATION_PNP_FILTER_RESOURCE_REQUIREMENTS0x0D,"Filter Resource Requirements" },
1375 | { PROCMON_FILESYSTEM_OPERATION_PNP_READ_CONFIG0x0F, "Read Config" },
1376 | { PROCMON_FILESYSTEM_OPERATION_PNP_WRITE_CONFIG0x10, "Write Config" },
1377 | { PROCMON_FILESYSTEM_OPERATION_PNP_EJECT0x11, "Eject" },
1378 | { PROCMON_FILESYSTEM_OPERATION_PNP_SET_LOCK0x12, "Set Lock" },
1379 | { PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_ID20x13, "Query ID2" },
1380 | { PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_PNP_DEVICE_STATE0x14, "Query PnP Device State" },
1381 | { PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_BUS_INFORMATION0x15, "Query Bus Information" },
1382 | { PROCMON_FILESYSTEM_OPERATION_PNP_DEVICE_USAGE_NOTIFICATION0x16, "Device Usage Notification" },
1383 | { PROCMON_FILESYSTEM_OPERATION_PNP_SURPRISE_REMOVAL0x17, "Surprise Removal" },
1384 | { PROCMON_FILESYSTEM_OPERATION_PNP_QUERY_LEGACY_BUS_INFORMATION0x18, "Query Legacy Bus Information" },
1385 | { 0, NULL((void*)0) }
1386 | };
1387 |
1388 | #define PROCMON_FILESYSTEM_OPERATION_LOCK_UNLOCK_FILE_LOCK0x01 0x01
1389 | #define PROCMON_FILESYSTEM_OPERATION_LOCK_UNLOCK_FILE_UNLOCK_SINGLE0x02 0x02
1390 | #define PROCMON_FILESYSTEM_OPERATION_LOCK_UNLOCK_FILE_UNLOCK_ALL0x03 0x03
1391 | #define PROCMON_FILESYSTEM_OPERATION_LOCK_UNLOCK_FILE_UNLOCK_BY_KEY0x04 0x04
1392 |
1393 | static const value_string filesystem_operation_lock_unlock_file_vals[] = {
1394 | { PROCMON_FILESYSTEM_OPERATION_LOCK_UNLOCK_FILE_LOCK0x01, "Lock" },
1395 | { PROCMON_FILESYSTEM_OPERATION_LOCK_UNLOCK_FILE_UNLOCK_SINGLE0x02, "Unlock Single" },
1396 | { PROCMON_FILESYSTEM_OPERATION_LOCK_UNLOCK_FILE_UNLOCK_ALL0x03, "Unlock All" },
1397 | { PROCMON_FILESYSTEM_OPERATION_LOCK_UNLOCK_FILE_UNLOCK_BY_KEY0x04, "Unlock By Key" },
1398 | { 0, NULL((void*)0) }
1399 | };
1400 |
1401 | #define PROCMON_FILESYSTEM_DISPOSITION_SUPERSEDE0x00 0x00
1402 | #define PROCMON_FILESYSTEM_DISPOSITION_OPEN0x01 0x01
1403 | #define PROCMON_FILESYSTEM_DISPOSITION_CREATE0x02 0x02
1404 | #define PROCMON_FILESYSTEM_DISPOSITION_OPEN_IF0x03 0x03
1405 | #define PROCMON_FILESYSTEM_DISPOSITION_OVERWRITE0x04 0x04
1406 | #define PROCMON_FILESYSTEM_DISPOSITION_OVERWRITE_IF0x05 0x05
1407 |
1408 | static const value_string filesystem_disposition_vals[] = {
1409 | { PROCMON_FILESYSTEM_DISPOSITION_SUPERSEDE0x00, "Supersede" },
1410 | { PROCMON_FILESYSTEM_DISPOSITION_OPEN0x01, "Open" },
1411 | { PROCMON_FILESYSTEM_DISPOSITION_CREATE0x02, "Create" },
1412 | { PROCMON_FILESYSTEM_DISPOSITION_OPEN_IF0x03, "Open If" },
1413 | { PROCMON_FILESYSTEM_DISPOSITION_OVERWRITE0x04, "Overwrite" },
1414 | { PROCMON_FILESYSTEM_DISPOSITION_OVERWRITE_IF0x05, "Overwrite If" },
1415 | { 0, NULL((void*)0) }
1416 | };
1417 |
1418 | static const value_string filesystem_open_result_vals[] = {
1419 | { 0, "Superseded" },
1420 | { 1, "Opened" },
1421 | { 2, "Created" },
1422 | { 3, "Overwritten" },
1423 | { 4, "Exists" },
1424 | { 5, "Does Not Exists" },
1425 | { 0, NULL((void*)0) }
1426 | };
1427 |
1428 | static const value_string filesystem_readwrite_priority_vals[] = {
1429 | { 0, "" },
1430 | { 1, "Very Low" },
1431 | { 2, "Low" },
1432 | { 3, "Normal" },
1433 | { 4, "High" },
1434 | { 5, "Critical" },
1435 | { 0, NULL((void*)0) }
1436 | };
1437 |
1438 | static const value_string ioctl_code_vals[] = {
1439 | {0x24058, "IOCTL_CDROM_GET_CONFIGURATION"},
1440 | {0x24800, "IOCTL_CDROM_CHECK_VERIFY"},
1441 | {0x24804, "IOCTL_CDROM_MEDIA_REMOVAL"},
1442 | {0x24808, "IOCTL_CDROM_EJECT_MEDIA"},
1443 | {0x2480c, "IOCTL_CDROM_LOAD_MEDIA"},
1444 | {0x41018, "IOCTL_SCSI_GET_ADDRESS"},
1445 | {0x41020, "IOCTL_SCSI_GET_DUMP_POINTERS"},
1446 | {0x41024, "IOCTL_SCSI_FREE_DUMP_POINTERS"},
1447 | {0x4d004, "IOCTL_SCSI_PASS_THROUGH"},
1448 | {0x4d014, "IOCTL_SCSI_PASS_THROUGH_DIRECT"},
1449 | {0x60190, "FSCTL_DFS_TRANSLATE_PATH"},
1450 | {0x60194, "FSCTL_DFS_GET_REFERRALS"},
1451 | {0x60198, "FSCTL_DFS_REPORT_INCONSISTENCY"},
1452 | {0x6019c, "FSCTL_DFS_IS_SHARE_IN_DFS"},
1453 | {0x601a0, "FSCTL_DFS_IS_ROOT"},
1454 | {0x601a4, "FSCTL_DFS_GET_VERSION"},
1455 | {0x70000, "IOCTL_DISK_GET_DRIVE_GEOMETRY"},
1456 | {0x70014, "IOCTL_DISK_VERIFY"},
1457 | {0x70020, "IOCTL_DISK_PERFORMANCE"},
1458 | {0x70024, "IOCTL_DISK_IS_WRITABLE"},
1459 | {0x70028, "IOCTL_DISK_LOGGING"},
1460 | {0x70030, "IOCTL_DISK_HISTOGRAM_STRUCTURE"},
1461 | {0x70034, "IOCTL_DISK_HISTOGRAM_DATA"},
1462 | {0x70038, "IOCTL_DISK_HISTOGRAM_RESET"},
1463 | {0x7003c, "IOCTL_DISK_REQUEST_STRUCTURE"},
1464 | {0x70040, "IOCTL_DISK_REQUEST_DATA"},
1465 | {0x70048, "IOCTL_DISK_GET_PARTITION_INFO_EX"},
1466 | {0x70050, "IOCTL_DISK_GET_DRIVE_LAYOUT_EX"},
1467 | {0x70060, "IOCTL_DISK_PERFORMANCE_OFF"},
1468 | {0x700a0, "IOCTL_DISK_GET_DRIVE_GEOMETRY_EX"},
1469 | {0x700f0, "IOCTL_DISK_GET_DISK_ATTRIBUTES"},
1470 | {0x70140, "IOCTL_DISK_UPDATE_PROPERTIES"},
1471 | {0x70214, "IOCTL_DISK_GET_CLUSTER_INFO"},
1472 | {0x70c00, "IOCTL_DISK_GET_MEDIA_TYPES"},
1473 | {0x74004, "IOCTL_DISK_GET_PARTITION_INFO"},
1474 | {0x7400c, "IOCTL_DISK_GET_DRIVE_LAYOUT"},
1475 | {0x7405c, "IOCTL_DISK_GET_LENGTH_INFO"},
1476 | {0x74080, "SMART_GET_VERSION"},
1477 | {0x740d4, "IOCTL_DISK_GET_CACHE_INFORMATION"},
1478 | {0x74800, "IOCTL_DISK_CHECK_VERIFY"},
1479 | {0x74804, "IOCTL_DISK_MEDIA_REMOVAL"},
1480 | {0x74808, "IOCTL_DISK_EJECT_MEDIA"},
1481 | {0x7480c, "IOCTL_DISK_LOAD_MEDIA"},
1482 | {0x74810, "IOCTL_DISK_RESERVE"},
1483 | {0x74814, "IOCTL_DISK_RELEASE"},
1484 | {0x74818, "IOCTL_DISK_FIND_NEW_DEVICES"},
1485 | {0x7c008, "IOCTL_DISK_SET_PARTITION_INFO"},
1486 | {0x7c010, "IOCTL_DISK_SET_DRIVE_LAYOUT"},
1487 | {0x7c018, "IOCTL_DISK_FORMAT_TRACKS"},
1488 | {0x7c01c, "IOCTL_DISK_REASSIGN_BLOCKS"},
1489 | {0x7c02c, "IOCTL_DISK_FORMAT_TRACKS_EX"},
1490 | {0x7c04c, "IOCTL_DISK_SET_PARTITION_INFO_EX"},
1491 | {0x7c054, "IOCTL_DISK_SET_DRIVE_LAYOUT_EX"},
1492 | {0x7c058, "IOCTL_DISK_CREATE_DISK"},
1493 | {0x7c084, "SMART_SEND_DRIVE_COMMAND"},
1494 | {0x7c088, "SMART_RCV_DRIVE_DATA"},
1495 | {0x7c0a4, "IOCTL_DISK_REASSIGN_BLOCKS_EX"},
1496 | {0x7c0c8, "IOCTL_DISK_UPDATE_DRIVE_SIZE"},
1497 | {0x7c0d0, "IOCTL_DISK_GROW_PARTITION"},
1498 | {0x7c0d8, "IOCTL_DISK_SET_CACHE_INFORMATION"},
1499 | {0x7c0f4, "IOCTL_DISK_SET_DISK_ATTRIBUTES"},
1500 | {0x7c218, "IOCTL_DISK_SET_CLUSTER_INFO"},
1501 | {0x90000, "FSCTL_REQUEST_OPLOCK_LEVEL_1"},
1502 | {0x90004, "FSCTL_REQUEST_OPLOCK_LEVEL_2"},
1503 | {0x90008, "FSCTL_REQUEST_BATCH_OPLOCK"},
1504 | {0x9000c, "FSCTL_OPLOCK_BREAK_ACKNOWLEDGE"},
1505 | {0x90010, "FSCTL_OPBATCH_ACK_CLOSE_PENDING"},
1506 | {0x90014, "FSCTL_OPLOCK_BREAK_NOTIFY"},
1507 | {0x90018, "FSCTL_LOCK_VOLUME"},
1508 | {0x9001c, "FSCTL_UNLOCK_VOLUME"},
1509 | {0x90020, "FSCTL_DISMOUNT_VOLUME"},
1510 | {0x90028, "FSCTL_IS_VOLUME_MOUNTED"},
1511 | {0x9002c, "FSCTL_IS_PATHNAME_VALID"},
1512 | {0x90030, "FSCTL_MARK_VOLUME_DIRTY"},
1513 | {0x9003b, "FSCTL_QUERY_RETRIEVAL_POINTERS"},
1514 | {0x9003c, "FSCTL_GET_COMPRESSION"},
1515 | {0x90050, "FSCTL_OPLOCK_BREAK_ACK_NO_2"},
1516 | {0x90058, "FSCTL_QUERY_FAT_BPB"},
1517 | {0x9005c, "FSCTL_REQUEST_FILTER_OPLOCK"},
1518 | {0x90060, "FSCTL_FILESYSTEM_GET_STATISTICS"},
1519 | {0x90064, "FSCTL_GET_NTFS_VOLUME_DATA"},
1520 | {0x90068, "FSCTL_GET_NTFS_FILE_RECORD"},
1521 | {0x9006f, "FSCTL_GET_VOLUME_BITMAP"},
1522 | {0x90073, "FSCTL_GET_RETRIEVAL_POINTERS"},
1523 | {0x90074, "FSCTL_MOVE_FILE"},
1524 | {0x90078, "FSCTL_IS_VOLUME_DIRTY"},
1525 | {0x90083, "FSCTL_ALLOW_EXTENDED_DASD_IO"},
1526 | {0x90087, "FSCTL_READ_PROPERTY_DATA"},
1527 | {0x9008b, "FSCTL_WRITE_PROPERTY_DATA"},
1528 | {0x9008f, "FSCTL_FIND_FILES_BY_SID"},
1529 | {0x90097, "FSCTL_DUMP_PROPERTY_DATA"},
1530 | {0x90098, "FSCTL_SET_OBJECT_ID"},
1531 | {0x9009c, "FSCTL_GET_OBJECT_ID"},
1532 | {0x900a0, "FSCTL_DELETE_OBJECT_ID"},
1533 | {0x900a4, "FSCTL_SET_REPARSE_POINT"},
1534 | {0x900a8, "FSCTL_GET_REPARSE_POINT"},
1535 | {0x900ac, "FSCTL_DELETE_REPARSE_POINT"},
1536 | {0x900b3, "FSCTL_ENUM_USN_DATA"},
1537 | {0x900bb, "FSCTL_READ_USN_JOURNAL"},
1538 | {0x900bc, "FSCTL_SET_OBJECT_ID_EXTENDED"},
1539 | {0x900c0, "FSCTL_CREATE_OR_GET_OBJECT_ID"},
1540 | {0x900c4, "FSCTL_SET_SPARSE"},
1541 | {0x900d7, "FSCTL_SET_ENCRYPTION"},
1542 | {0x900db, "FSCTL_ENCRYPTION_FSCTL_IO"},
1543 | {0x900df, "FSCTL_WRITE_RAW_ENCRYPTED" },
1544 | {0x900e3, "FSCTL_READ_RAW_ENCRYPTED" },
1545 | {0x900e7, "FSCTL_CREATE_USN_JOURNAL" },
1546 | {0x900eb, "FSCTL_READ_FILE_USN_DATA" },
1547 | {0x900ef, "FSCTL_WRITE_USN_CLOSE_RECORD" },
1548 | {0x900f0, "FSCTL_EXTEND_VOLUME" },
1549 | {0x900f4, "FSCTL_QUERY_USN_JOURNAL" },
1550 | {0x900f8, "FSCTL_DELETE_USN_JOURNAL" },
1551 | {0x900fc, "FSCTL_MARK_HANDLE" },
1552 | {0x90100, "FSCTL_SIS_COPYFILE" },
1553 | {0x90120, "FSCTL_FILE_PREFETCH" },
1554 | {0x901af, "CSC_FSCTL_OPERATION_QUERY_HANDLE" },
1555 | {0x901f0, "FSCTL_QUERY_DEPENDENT_VOLUME" },
1556 | {0x90230, "FSCTL_GET_BOOT_AREA_INFO" },
1557 | {0x90240, "FSCTL_REQUEST_OPLOCK" },
1558 | {0x90244, "FSCTL_CSV_TUNNEL_REQUEST" },
1559 | {0x9024c, "FSCTL_QUERY_FILE_SYSTEM_RECOGNITION" },
1560 | {0x90254, "FSCTL_CSV_GET_VOLUME_NAME_FOR_VOLUME_MOUNT_POINT" },
1561 | {0x90258, "FSCTL_CSV_GET_VOLUME_PATH_NAMES_FOR_VOLUME_NAME" },
1562 | {0x9025c, "FSCTL_IS_FILE_ON_CSV_VOLUME" },
1563 | {0x90260, "FSCTL_CORRUPTION_HANDLING" },
1564 | {0x90270, "FSCTL_SET_PURGE_FAILURE_MODE" },
1565 | {0x90277, "FSCTL_QUERY_FILE_LAYOUT" },
1566 | {0x90278, "FSCTL_IS_VOLUME_OWNED_BYCSVFS" },
1567 | {0x9027c, "FSCTL_GET_INTEGRITY_INFORMATION" },
1568 | {0x90284, "FSCTL_QUERY_FILE_REGIONS" },
1569 | {0x902b0, "FSCTL_SCRUB_DATA" },
1570 | {0x902b8, "FSCTL_DISABLE_LOCAL_BUFFERING" },
1571 | {0x9030c, "FSCTL_SET_EXTERNAL_BACKING" },
1572 | {0x90310, "FSCTL_GET_EXTERNAL_BACKING" },
1573 | {0x940b7, "FSCTL_SECURITY_ID_CHECK" },
1574 | {0x940cf, "FSCTL_QUERY_ALLOCATED_RANGES" },
1575 | {0x941e4, "FSCTL_TXFS_LIST_TRANSACTIONS" },
1576 | {0x94264, "FSCTL_OFFLOAD_READ" },
1577 | {0x980c8, "FSCTL_SET_ZERO_DATA" },
1578 | {0x980d0, "FSCTL_ENABLE_UPGRADE" },
1579 | {0x98208, "FSCTL_FILE_LEVEL_TRIM" },
1580 | {0x98268, "FSCTL_OFFLOAD_WRITE" },
1581 | {0x9c040, "FSCTL_SET_COMPRESSION" },
1582 | {0x9c104, "FSCTL_SIS_LINK_FILES" },
1583 | {0x9c108, "FSCTL_HSM_MSG" },
1584 | {0x9c2b4, "FSCTL_REPAIR_COPIES" },
1585 | {0xc4003, "FSCTL_MAILSLOT_PEEK" },
1586 | {0x110000, "FSCTL_PIPE_ASSIGN_EVENT" },
1587 | {0x110004, "FSCTL_PIPE_DISCONNECT" },
1588 | {0x110008, "FSCTL_PIPE_LISTEN" },
1589 | {0x110010, "FSCTL_PIPE_QUERY_EVENT" },
1590 | {0x110018, "FSCTL_PIPE_WAIT" },
1591 | {0x11001c, "FSCTL_PIPE_IMPERSONATE" },
1592 | {0x110020, "FSCTL_PIPE_SET_CLIENT_PROCESS" },
1593 | {0x110024, "FSCTL_QUERY_CLIENT_PROCESS" },
1594 | {0x11400c, "FSCTL_PIPE_PEEK" },
1595 | {0x116000, "FSCTL_PIPE_INTERNAL_READ" },
1596 | {0x119ff8, "FSCTL_PIPE_INTERNAL_WRITE" },
1597 | {0x11c017, "FSCTL_PIPE_TRANSCEIVE" },
1598 | {0x11dfff, "FSCTL_PIPE_INTERNAL_TRANSCEIVE" },
1599 | {0x140191, "FSCTL_LMR_START" },
1600 | {0x140193, "IOCTL_SMBMRX_START" },
1601 | {0x140194, "FSCTL_LMR_STOP" },
1602 | {0x140197, "IOCTL_SMBMRX_STOP" },
1603 | {0x140198, "IOCTL_SMBMRX_GETSTATE" },
1604 | {0x140199, "FSCTL_NETWORK_SET_CONFIGURATION_INFO" },
1605 | {0x14019e, "FSCTL_NETWORK_GET_CONFIGURATION_INFO" },
1606 | {0x1401a3, "FSCTL_NETWORK_GET_CONNECTION_INFO" },
1607 | {0x1401a7, "FSCTL_NETWORK_ENUMERATE_CONNECTIONS" },
1608 | {0x1401ab, "FSCTL_LMR_FORCE_DISCONNECT" },
1609 | {0x1401ac, "FSCTL_NETWORK_DELETE_CONNECTION" },
1610 | {0x1401b0, "FSCTL_LMR_BIND_TO_TRANSPORT" },
1611 | {0x1401b4, "FSCTL_LMR_UNBIND_FROM_TRANSPORT" },
1612 | {0x1401bb, "FSCTL_LMR_ENUMERATE_TRANSPORTS" },
1613 | {0x1401c4, "FSCTL_LMR_GET_HINT_SIZE" },
1614 | {0x1401c8, "FSCTL_LMR_TRANSACT" },
1615 | {0x1401cc, "FSCTL_LMR_ENUMERATE_PRINT_INFO" },
1616 | {0x1401d0, "FSCTL_NETWORK_GET_STATISTICS" },
1617 | {0x1401d4, "FSCTL_LMR_START_SMBTRACE" },
1618 | {0x1401d8, "FSCTL_LMR_END_SMBTRACE" },
1619 | {0x1401dc, "FSCTL_LMR_START_RBR" },
1620 | {0x1401e0, "FSCTL_NETWORK_SET_DOMAIN_NAME" },
1621 | {0x1401e4, "FSCTL_LMR_SET_SERVER_GUID" },
1622 | {0x1401e8, "FSCTL_LMR_QUERY_TARGET_INFO" },
1623 | {0x1401ec, "FSCTL_LMR_QUERY_DEBUG_INFO" },
1624 | {0x1401f4, "IOCTL_SMBMRX_ADDCONN" },
1625 | {0x1401f8, "IOCTL_SMBMRX_DELCONN" },
1626 | {0x140378, "IOCTL_UMRX_RELEASE_THREADS" },
1627 | {0x14037e, "IOCTL_UMRX_GET_REQUEST" },
1628 | {0x140382, "IOCTL_UMRX_RESPONSE_AND_REQUEST" },
1629 | {0x140386, "IOCTL_UMRX_RESPONSE" },
1630 | {0x140388, "IOCTL_UMRX_GET_LOCK_OWNER" },
1631 | {0x14038c, "IOCTL_LMR_QUERY_REMOTE_SERVER_NAME" },
1632 | {0x140390, "IOCTL_LMR_DISABLE_LOCAL_BUFFERING" },
1633 | {0x140394, "IOCTL_UMRX_PREPARE_QUEUE" },
1634 | {0x140397, "IOCTL_LMR_LWIO_POSTIO" },
1635 | {0x14039b, "IOCTL_LMR_LWIO_PREIO" },
1636 | {0x1403e8, "FSCTL_NETWORK_REMOTE_BOOT_INIT_SCRT" },
1637 | {0x140fdb, "IOCTL_SHADOW_END_REINT" },
1638 | {0x140fff, "IOCTL_GETSHADOW" },
1639 | {0x2d0800, "IOCTL_STORAGE_CHECK_VERIFY2" },
1640 | {0x2d080c, "IOCTL_STORAGE_LOAD_MEDIA2" },
1641 | {0x2d0940, "IOCTL_STORAGE_EJECTION_CONTROL" },
1642 | {0x2d0944, "IOCTL_STORAGE_MCN_CONTROL" },
1643 | {0x2d0c00, "IOCTL_STORAGE_GET_MEDIA_TYPES" },
1644 | {0x2d0c04, "IOCTL_STORAGE_GET_MEDIA_TYPES_EX" },
1645 | {0x2d0c10, "IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER" },
1646 | {0x2d0c14, "IOCTL_STORAGE_GET_HOTPLUG_INFO" },
1647 | {0x2d1080, "IOCTL_STORAGE_GET_DEVICE_NUMBER" },
1648 | {0x2d1100, "IOCTL_STORAGE_PREDICT_FAILURE" },
1649 | {0x2d1400, "IOCTL_STORAGE_QUERY_PROPERTY" },
1650 | {0x2d4800, "IOCTL_STORAGE_CHECK_VERIFY" },
1651 | {0x2d4804, "IOCTL_STORAGE_MEDIA_REMOVAL" },
1652 | {0x2d4808, "IOCTL_STORAGE_EJECT_MEDIA" },
1653 | {0x2d480c, "IOCTL_STORAGE_LOAD_MEDIA" },
1654 | {0x2d4810, "IOCTL_STORAGE_RESERVE" },
1655 | {0x2d4814, "IOCTL_STORAGE_RELEASE" },
1656 | {0x2d4818, "IOCTL_STORAGE_FIND_NEW_DEVICES" },
1657 | {0x2d5000, "IOCTL_STORAGE_RESET_BUS" },
1658 | {0x2d5004, "IOCTL_STORAGE_RESET_DEVICE" },
1659 | {0x2d5014, "IOCTL_STORAGE_BREAK_RESERVATION" },
1660 | {0x2d5018, "IOCTL_STORAGE_PERSISTENT_RESERVE_IN" },
1661 | {0x2d5140, "IOCTL_STORAGE_READ_CAPACITY" },
1662 | {0x2d518c, "IOCTL_STORAGE_QUERY_DEPENDENT_DISK" },
1663 | {0x2dcc18, "IOCTL_STORAGE_SET_HOTPLUG_INFO" },
1664 | {0x2dd01c, "IOCTL_STORAGE_PERSISTENT_RESERVE_OUT" },
1665 | {0x38a813, "IOCTL_CHANNEL_GET_SNDCHANNEL" },
1666 | {0x4d0000, "IOCTL_MOUNTDEV_QUERY_UNIQUE_ID" },
1667 | {0x4d0004, "IOCTL_MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY" },
1668 | {0x4d0008, "IOCTL_MOUNTDEV_QUERY_DEVICE_NAME" },
1669 | {0x4d000c, "IOCTL_MOUNTDEV_QUERY_SUGGESTED_LINK_NAME" },
1670 | {0x4d0010, "IOCTL_MOUNTDEV_LINK_CREATED" },
1671 | {0x4d0014, "IOCTL_MOUNTDEV_LINK_DELETED" },
1672 | {0x530018, "IOCTL_VOLSNAP_QUERY_NAMES_OF_SNAPSHOTS" },
1673 | {0x530024, "IOCTL_VOLSNAP_QUERY_DIFF_AREA" },
1674 | {0x53002c, "IOCTL_VOLSNAP_QUERY_DIFF_AREA_SIZES" },
1675 | {0x530034, "IOCTL_VOLSNAP_AUTO_CLEANUP" },
1676 | {0x53003c, "IOCTL_VOLSNAP_QUERY_REVERT" },
1677 | {0x530040, "IOCTL_VOLSNAP_REVERT_CLEANUP" },
1678 | {0x530048, "IOCTL_VOLSNAP_QUERY_REVERT_PROGRESS" },
1679 | {0x53004c, "IOCTL_VOLSNAP_CANCEL_REVERT" },
1680 | {0x530050, "IOCTL_VOLSNAP_QUERY_EPIC" },
1681 | {0x53005e, "IOCTL_VOLSNAP_QUERY_COPY_FREE_BITMAP" },
1682 | {0x530190, "IOCTL_VOLSNAP_QUERY_ORIGINAL_VOLUME_NAME" },
1683 | {0x53019c, "IOCTL_VOLSNAP_QUERY_CONFIG_INFO" },
1684 | {0x5301a0, "IOCTL_VOLSNAP_HAS_CHANGED" },
1685 | {0x5301a4, "IOCTL_VOLSNAP_SET_SNAPSHOT_PRIORITY" },
1686 | {0x5301a8, "IOCTL_VOLSNAP_QUERY_SNAPSHOT_PRIORITY" },
1687 | {0x5301ae, "IOCTL_VOLSNAP_QUERY_DELTA_BITMAP" },
1688 | {0x5301b2, "IOCTL_VOLSNAP_QUERY_SNAPSHOT_SUPPLEMENTAL" },
1689 | {0x5301b6, "IOCTL_VOLSNAP_QUERY_COPIED_BITMAP" },
1690 | {0x5301b8, "IOCTL_VOLSNAP_QUERY_MOVE_LIST" },
1691 | {0x5301be, "IOCTL_VOLSNAP_QUERY_PRE_COPIED_BITMAP" },
1692 | {0x5301c2, "IOCTL_VOLSNAP_QUERY_USED_PRE_COPIED_BITMAP" },
1693 | {0x5301c6, "IOCTL_VOLSNAP_QUERY_DEFRAG_PRE_COPIED_BITMAP" },
1694 | {0x5301ca, "IOCTL_VOLSNAP_QUERY_FREESPACE_PRE_COPIED_BITMAP" },
1695 | {0x5301ce, "IOCTL_VOLSNAP_QUERY_HOTBLOCKS_PRE_COPIED_BITMAP" },
1696 | {0x5301d0, "IOCTL_VOLSNAP_QUERY_DIFF_AREA_FILE_SIZES" },
1697 | {0x534054, "IOCTL_VOLSNAP_QUERY_OFFLINE" },
1698 | {0x534058, "IOCTL_VOLSNAP_QUERY_DIFF_AREA_MINIMUM_SIZE" },
1699 | {0x534064, "IOCTL_VOLSNAP_BLOCK_DELETE_IN_THE_MIDDLE" },
1700 | {0x534070, "IOCTL_VOLSNAP_QUERY_APPLICATION_FLAGS" },
1701 | {0x534080, "IOCTL_VOLSNAP_QUERY_PERFORMANCE_COUNTERS" },
1702 | {0x534088, "IOCTL_VOLSNAP_QUERY_PRE_COPY_AMOUNTS" },
1703 | {0x53408c, "IOCTL_VOLSNAP_QUERY_DEFAULT_PRE_COPY_AMOUNTS" },
1704 | {0x53c000, "IOCTL_VOLSNAP_FLUSH_AND_HOLD_WRITES" },
1705 | {0x53c004, "IOCTL_VOLSNAP_RELEASE_WRITES" },
1706 | {0x53c008, "IOCTL_VOLSNAP_PREPARE_FOR_SNAPSHOT" },
1707 | {0x53c00c, "IOCTL_VOLSNAP_ABORT_PREPARED_SNAPSHOT" },
1708 | {0x53c010, "IOCTL_VOLSNAP_COMMIT_SNAPSHOT" },
1709 | {0x53c014, "IOCTL_VOLSNAP_END_COMMIT_SNAPSHOT" },
1710 | {0x53c01c, "IOCTL_VOLSNAP_CLEAR_DIFF_AREA" },
1711 | {0x53c020, "IOCTL_VOLSNAP_ADD_VOLUME_TO_DIFF_AREA" },
1712 | {0x53c028, "IOCTL_VOLSNAP_SET_MAX_DIFF_AREA_SIZE" },
1713 | {0x53c030, "IOCTL_VOLSNAP_DELETE_OLDEST_SNAPSHOT" },
1714 | {0x53c038, "IOCTL_VOLSNAP_DELETE_SNAPSHOT" },
1715 | {0x53c044, "IOCTL_VOLSNAP_REVERT" },
1716 | {0x53c068, "IOCTL_VOLSNAP_SET_MAX_DIFF_AREA_SIZE_TEMP" },
1717 | {0x53c06c, "IOCTL_VOLSNAP_SET_APPLICATION_FLAGS" },
1718 | {0x53c07c, "IOCTL_VOLSNAP_SET_BC_FAILURE_MODE" },
1719 | {0x53c084, "IOCTL_VOLSNAP_SET_PRE_COPY_AMOUNTS" },
1720 | {0x53c090, "IOCTL_VOLSNAP_PRE_EXPOSE_DEVICES" },
1721 | {0x53c198, "IOCTL_VOLSNAP_SET_APPLICATION_INFO" },
1722 | {0x560000, "IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS" },
1723 | {0x560038, "IOCTL_VOLUME_GET_GPT_ATTRIBUTES" },
1724 | {0x700010, "IOCTL_DISK_QUERY_DEVICE_STATE" },
1725 | {0x704008, "IOCTL_DISK_QUERY_DISK_SIGNATURE" },
1726 | { 0, NULL((void*)0) }
1727 | };
1728 | static value_string_ext ioctl_code_vals_ext = VALUE_STRING_EXT_INIT(ioctl_code_vals){ _try_val_to_str_ext_init, 0, (sizeof (ioctl_code_vals) / sizeof ((ioctl_code_vals)[0]))-1, ioctl_code_vals, "ioctl_code_vals" , ((void*)0) };
1729 |
1730 |
1731 | static const value_string sync_type_vals[] = {
1732 | { 0x0, "Other" },
1733 | { 0x1, "Create Section" },
1734 | { 0, NULL((void*)0) }
1735 | };
1736 |
1737 | static const value_string page_protection_vals[] = {
1738 | { 0x0, "None" },
1739 | { 0x01, "No Access" },
1740 | { 0x02, "Read Only" },
1741 | { 0x04, "Read/Write" },
1742 | { 0x08, "Write Copy" },
1743 | { 0x10, "Execute" },
1744 | { 0x20, "Execute Read" },
1745 | { 0x40, "Execute Read/Write" },
1746 | { 0x200, "No Cache" },
1747 | { 0, NULL((void*)0) }
1748 | };
1749 |
1750 | static const value_string file_information_class_vals[] = {
1751 | {0, "Unknown"},
1752 | {1, "File Directory Information"},
1753 | {2, "File Full Directory Information"},
1754 | {3, "File Both Directory Information"},
1755 | {4, "File Basic Information"},
1756 | {5, "File Standard Information"},
1757 | {6, "File Internal Information"},
1758 | {7, "File Ea Information"},
1759 | {8, "File Access Information"},
1760 | {9, "File Name Information"},
1761 | {10, "File Rename Information"},
1762 | {11, "File Link Information"},
1763 | {12, "File Names Information"},
1764 | {13, "File Disposition Information"},
1765 | {14, "File Position Information"},
1766 | {15, "File Full Ea Information"},
1767 | {16, "File Mode Information"},
1768 | {17, "File Alignment Information"},
1769 | {18, "File All Information"},
1770 | {19, "File Allocation Information"},
1771 | {20, "File End Of File Information"},
1772 | {21, "File Alternate Name Information"},
1773 | {22, "File Stream Information"},
1774 | {23, "File Pipe Information"},
1775 | {24, "File Pipe Local Information"},
1776 | {25, "File Pipe Remote Information"},
1777 | {26, "File Mailslot Query Information"},
1778 | {27, "File Mailslot Set Information"},
1779 | {28, "File Compression Information"},
1780 | {29, "File ObjectId Information"},
1781 | {30, "File Completion Information"},
1782 | {31, "File Move Cluster Information"},
1783 | {32, "File Quota Information"},
1784 | {33, "File Reparse Point Information"},
1785 | {34, "File Network Open Information"},
1786 | {35, "File Attribute Tag Information"},
1787 | {36, "File Tracking Information"},
1788 | {37, "File Id Both Directory Information"},
1789 | {38, "File Id Full Directory Information"},
1790 | {39, "File Valid Data Length Information"},
1791 | {40, "File Short Name Information"},
1792 | {41, "File Io Completion Notification Information"},
1793 | {42, "File Io Status Block Range Information"},
1794 | {43, "File Io Priority Hint Information"},
1795 | {44, "File Sfio Reserve Information"},
1796 | {45, "File Sfio Volume Information"},
1797 | {46, "File Hard Link Information"},
1798 | {47, "File Process Ids Using File Information"},
1799 | {48, "File Normalized Name Information"},
1800 | {49, "File Network Physical Name Information"},
1801 | {50, "File Id Global Tx Directory Information"},
1802 | {51, "File Is Remote Device Information"},
1803 | {52, "File Unused Information"},
1804 | {53, "File Numa Node Information"},
1805 | {54, "File Standard Link Information"},
1806 | {55, "File Remote Protocol Information"},
1807 | {56, "File Rename Information Bypass Access Check"},
1808 | {57, "File Link Information Bypass Access Check"},
1809 | {58, "File Volume Name Information"},
1810 | {59, "File Id Information"},
1811 | {60, "File Id Extended Directory Information"},
1812 | {61, "File Replace Completion Information"},
1813 | {62, "File Hard Link Full Id Information"},
1814 | {63, "File Id Extended Both Directory Information"},
1815 | {64, "File Disposition Information Ex"},
1816 | {65, "File Rename Information Ex"},
1817 | {66, "File Rename Information Ex Bypass Access Check"},
1818 | {67, "File Desired Storage Class Information"},
1819 | {68, "File Stat Information"},
1820 | {69, "File Memory Partition Information"},
1821 | {70, "File Maximum Information"},
1822 | {71, "SeShutdownPrivilege"},
1823 | {72, "SeChangeNotifyPrivilege"},
1824 | {73, "SeUndockPrivilege"},
1825 | {74, "SeIncreaseWorkingSetPrivilege"},
1826 | {75, "SeTimeZonePrivilege"},
1827 | { 0, NULL((void*)0) }
1828 | };
1829 |
1830 | static bool_Bool dissect_procmon_filesystem_event(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, uint32_t operation, tvbuff_t* extra_details_tvb)
1831 | {
1832 | proto_tree* filesystem_tree;
1833 | int offset = 0, extra_offset = 0;
1834 | uint32_t sub_operation, ioctl_value = 0, file_information_class = 0;
1835 | int size_of_pointer;
1836 | bool_Bool is_path_ascii;
1837 | uint16_t path_char_count;
1838 | const value_string* sub_op_vals = NULL((void*)0);
1839 | uint32_t file_system_access_mask_mapping[4] = {0x120089, 0x120116, 0x1200a0, 0x1f01ff};
1840 | static const value_string file_system_access_mask_vals[] = {
1841 | {0x1f01ff, "All Access"},
1842 | {0x1201bf, "Generic Read/Write/Execute"},
1843 | {0x12019f, "Generic Read/Write"},
1844 | {0x1200a9, "Generic Read/Execute"},
1845 | {0x1201b6, "Generic Write/Execute"},
1846 | {0x120089, "Generic Read"},
1847 | {0x120116, "Generic Write"},
1848 | {0x1200a0, "Generic Execute"},
1849 | {0x1, "Read Data/List Directory"},
1850 | {0x2, "Write Data/Add File"},
1851 | {0x4, "Append Data/Add Subdirectory/Create Pipe Instance"},
1852 | {0x8, "Read EA"},
1853 | {0x10, "Write EA"},
1854 | {0x20, "Execute/Traverse"},
1855 | {0x40, "Delete Child"},
1856 | {0x80, "Read Attributes"},
1857 | {0x100, "Write Attributes"},
1858 | {0x10000, "Delete"},
1859 | {0x20000, "Read Control"},
1860 | {0x40000, "Write DAC"},
1861 | {0x80000, "Write Owner"},
1862 | {0x100000, "Synchronize"},
1863 | {0x1000000, "Access System Security"},
1864 | {0x2000000, "Maximum Allowed"},
1865 | { 0, NULL((void*)0) }
1866 | };
1867 | static const value_string file_system_io_flags_vals[] = {
1868 | {0x10, "Buffered"},
1869 | {0x1, "Non-cached"},
1870 | {0x2, "Paging I/O"},
1871 | {0x4, "Synchronous"},
1872 | {0x40, "Synchronous Paging I/O"},
1873 | {0x400000, "Write Through"},
1874 | { 0, NULL((void*)0) }
1875 | };
1876 |
1877 | if (pinfo->pseudo_header->procmon.system_bitness)
1878 | {
1879 | size_of_pointer = 8;
1880 | }
1881 | else
1882 | {
1883 | size_of_pointer = 4;
1884 | }
1885 |
1886 | filesystem_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_procmon_filesystem_event, NULL((void*)0), "File System Data");
1887 |
1888 | /* Handle the cases where the Sub operation value string is based on the operation */
1889 | sub_operation = tvb_get_uint8(tvb, offset);
1890 | switch(operation)
1891 | {
1892 | case PROCMON_FILESYSTEM_OPERATION_QUERY_INFORMATION_FILE25:
1893 | sub_op_vals = filesystem_operation_query_info_vals;
1894 | break;
1895 | case PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE26:
1896 | sub_op_vals = filesystem_operation_set_info_vals;
1897 | break;
1898 | case PROCMON_FILESYSTEM_OPERATION_QUERY_VOLUME_INFORMATION30:
1899 | sub_op_vals = filesystem_operation_query_volume_info_vals;
1900 | break;
1901 | case PROCMON_FILESYSTEM_OPERATION_SET_VOLUME_INFORMATION31:
1902 | sub_op_vals = filesystem_operation_set_volume_info_vals;
1903 | break;
1904 | case PROCMON_FILESYSTEM_OPERATION_DIRECTORY_CONTROL32:
1905 | sub_op_vals = filesystem_operation_directory_control_vals;
1906 | break;
1907 | case PROCMON_FILESYSTEM_OPERATION_PLUG_AND_PLAY47:
1908 | sub_op_vals = filesystem_operation_pnp_vals;
1909 | break;
1910 | case PROCMON_FILESYSTEM_OPERATION_LOCK_UNLOCK_FILE37:
1911 | sub_op_vals = filesystem_operation_lock_unlock_file_vals;
1912 | break;
1913 | }
1914 | if (sub_op_vals != NULL((void*)0))
1915 | {
1916 | proto_tree_add_uint_format_value(filesystem_tree, hf_procmon_filesystem_suboperation, tvb, offset, 1, sub_operation, "%s (%u)",
1917 | val_to_str_const(sub_operation, sub_op_vals, "Unknown"), sub_operation);
1918 | }
1919 | else
1920 | {
1921 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_suboperation, tvb, offset, 1, ENC_LITTLE_ENDIAN0x80000000);
1922 | }
1923 | offset += 1;
1924 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_padding, tvb, offset, 3, ENC_NA0x00000000);
1925 | offset += 3;
1926 |
1927 | switch(operation)
1928 | {
1929 | case PROCMON_FILESYSTEM_OPERATION_CREATE_FILE20:
1930 | {
1931 | static const value_string file_system_create_file_options_vals[] = {
1932 | {0x1, "Directory"},
1933 | {0x2, "Write Through"},
1934 | {0x4, "Sequential Access"},
1935 | {0x8, "No Buffering"},
1936 | {0x10, "Synchronous IO Alert"},
1937 | {0x20, "Synchronous IO Non-Alert"},
1938 | {0x40, "Non-Directory File"},
1939 | {0x80, "Create Tree Connection"},
1940 | {0x100, "Complete If Oplocked"},
1941 | {0x200, "No EA Knowledge"},
1942 | {0x400, "Open for Recovery"},
1943 | {0x800, "Random Access"},
1944 | {0x1000, "Delete On Close"},
1945 | {0x2000, "Open By ID"},
1946 | {0x4000, "Open For Backup"},
1947 | {0x8000, "No Compression"},
1948 | {0x100000, "Reserve OpFilter"},
1949 | {0x200000, "Open Reparse Point"},
1950 | {0x400000, "Open No Recall"},
1951 | {0x800000, "Open For Free Space Query"},
1952 | {0x10000, "Open Requiring Oplock"},
1953 | {0x20000, "Disallow Exclusive"},
1954 | { 0, NULL((void*)0) }
1955 | };
1956 |
1957 | static const value_string file_system_create_file_attribute_vals[] = {
1958 | {0x1, "R"},
1959 | {0x2, "H"},
1960 | {0x4, "S"},
1961 | {0x10, "D"},
1962 | {0x20, "A"},
1963 | {0x40, "D"},
1964 | {0x80, "N"},
1965 | {0x100, "T"},
1966 | {0x200, "SF"},
1967 | {0x400, "RP"},
1968 | {0x800, "C"},
1969 | {0x1000, "O"},
1970 | {0x2000, "NCI"},
1971 | {0x4000, "E"},
1972 | {0x10000, "V"},
1973 | { 0, NULL((void*)0) }
1974 | };
1975 |
1976 | static const value_string file_system_create_file_shared_mode_vals[] = {
1977 | {0x1, "Read"},
1978 | {0x2, "Write"},
1979 | {0x4, "Delete"},
1980 | { 0, NULL((void*)0) }
1981 | };
1982 |
1983 | int create_file_offset;
1984 | if (size_of_pointer == 4)
1985 | {
1986 | create_file_offset = offset+16;
1987 | }
1988 | else
1989 | {
1990 | create_file_offset = offset+20; //Padding for 64-bit
1991 | }
1992 |
1993 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_create_file_disposition, tvb, create_file_offset, 1, ENC_LITTLE_ENDIAN0x80000000);
1994 | create_file_offset += 1;
1995 | dissect_procmon_access_mask(tvb, pinfo, filesystem_tree, create_file_offset, hf_procmon_filesystem_create_file_options, 3, NULL((void*)0), file_system_create_file_options_vals);
1996 | create_file_offset += 3;
1997 |
1998 | if (size_of_pointer == 8)
1999 | create_file_offset += 4; //Padding for 64-bit
2000 |
2001 | uint16_t attributes = tvb_get_letohs(tvb, create_file_offset);
2002 | if (attributes == 0)
2003 | {
2004 | proto_tree_add_uint_format_value(filesystem_tree, hf_procmon_filesystem_create_file_attributes, tvb, create_file_offset, 2, attributes, "N/A");
2005 | }
2006 | else
2007 | {
2008 | dissect_procmon_access_mask(tvb, pinfo, filesystem_tree, create_file_offset, hf_procmon_filesystem_create_file_attributes, 3, NULL((void*)0), file_system_create_file_attribute_vals);
2009 | }
2010 | create_file_offset += 2;
2011 | dissect_procmon_access_mask(tvb, pinfo, filesystem_tree, create_file_offset, hf_procmon_filesystem_create_file_share_mode, 2, NULL((void*)0), file_system_create_file_shared_mode_vals);
2012 | create_file_offset += 2;
2013 |
2014 | //Unknown fields
2015 | create_file_offset += (4 + size_of_pointer*2);
2016 |
2017 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_create_file_allocation, tvb, create_file_offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2018 | /* create_file_offset += 4; */
2019 |
2020 | if (tvb_reported_length(extra_details_tvb) > 0)
2021 | {
2022 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_create_file_open_result, extra_details_tvb, extra_offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2023 | extra_offset += 4;
2024 | }
2025 |
2026 | break;
2027 | }
2028 | case PROCMON_FILESYSTEM_OPERATION_READ_FILE23:
2029 | case PROCMON_FILESYSTEM_OPERATION_WRITE_FILE24:
2030 | {
2031 | int file_offset = offset;
2032 | //Unknown fields
2033 | file_offset += 4;
2034 |
2035 | dissect_procmon_access_mask(tvb, pinfo, filesystem_tree, file_offset, hf_procmon_filesystem_readwrite_file_io_flags, 4, NULL((void*)0), file_system_io_flags_vals);
2036 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_readwrite_file_priority, tvb, file_offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2037 | file_offset += 4;
2038 |
2039 | //Unknown fields
2040 | file_offset += 4;
2041 |
2042 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_readwrite_file_length, tvb, file_offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2043 | file_offset += 4;
2044 | if (size_of_pointer == 8)
2045 | file_offset += 4; //Padding for 64-bit
2046 |
2047 | //Unknown fields
2048 | file_offset += 4;
2049 | if (size_of_pointer == 8)
2050 | file_offset += 4; //Padding for 64-bit
2051 |
2052 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_readwrite_file_offset, tvb, file_offset, 8, ENC_LITTLE_ENDIAN0x80000000);
2053 | if (tvb_reported_length(extra_details_tvb) > 0)
2054 | {
2055 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_readwrite_file_result_length, extra_details_tvb, extra_offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2056 | extra_offset += 4;
2057 | }
2058 |
2059 | break;
2060 | }
2061 | case PROCMON_FILESYSTEM_OPERATION_FILE_SYSTEM_CONTROL33:
2062 | case PROCMON_FILESYSTEM_OPERATION_DEVICE_IO_CONTROL34:
2063 | {
2064 | int control_offset = offset;
2065 | //Unknown fields
2066 | control_offset += 8;
2067 |
2068 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_ioctl_write_length, tvb, control_offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2069 | control_offset += 4;
2070 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_ioctl_read_length, tvb, control_offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2071 | control_offset += 4;
2072 |
2073 | if (size_of_pointer == 8)
2074 | control_offset += 4; //Padding for 64-bit
2075 |
2076 | //Unknown fields
2077 | control_offset += 4;
2078 | if (size_of_pointer == 8)
2079 | control_offset += 4; //Padding for 64-bit
2080 |
2081 | ioctl_value = tvb_get_letohl(tvb, control_offset);
2082 | if (try_val_to_str_ext(ioctl_value, &ioctl_code_vals_ext) == NULL((void*)0))
2083 | {
2084 | proto_tree_add_uint_format_value(filesystem_tree, hf_procmon_filesystem_ioctl_ioctl, tvb, control_offset, 4, ioctl_value,
2085 | "0x%08x (Device:0x%08x Function:%d Method: %d)", ioctl_value, ioctl_value >> 16, (ioctl_value >> 2) & 0xfff, ioctl_value & 3);
2086 | }
2087 | else
2088 | {
2089 | proto_tree_add_uint(filesystem_tree, hf_procmon_filesystem_ioctl_ioctl, tvb, control_offset, 4, ioctl_value);
2090 | }
2091 | /* control_offset += 4; */
2092 | break;
2093 | }
2094 | case PROCMON_FILESYSTEM_OPERATION_CREATE_FILE_MAPPING19:
2095 | {
2096 | int mapping_offset = offset;
2097 | //Unknown fields
2098 | mapping_offset += 12;
2099 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_create_file_mapping_sync_type, tvb, mapping_offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2100 | mapping_offset += 4;
2101 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_create_file_mapping_page_protection, tvb, mapping_offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2102 | break;
2103 | }
2104 | case PROCMON_FILESYSTEM_OPERATION_DIRECTORY_CONTROL32:
2105 | {
2106 | int control_offset = offset;
2107 | switch(sub_operation)
2108 | {
2109 | case PROCMON_FILESYSTEM_OPERATION_DIRECTORY_CONTROL_QUERY0x01:
2110 | //Unknown fields
2111 | control_offset += 16;
2112 | if (size_of_pointer == 8)
2113 | control_offset += 4; //Padding for 64-bit
2114 | //Unknown fields
2115 | control_offset += 4;
2116 | if (size_of_pointer == 8)
2117 | control_offset += 4; //Padding for 64-bit
2118 |
2119 | proto_tree_add_item_ret_uint(filesystem_tree, hf_procmon_filesystem_directory_control_file_information_class, tvb, control_offset, 4, ENC_LITTLE_ENDIAN0x80000000, &file_information_class);
2120 | if (tvb_reported_length(extra_details_tvb) > 0)
2121 | {
2122 | nstime_t timestamp;
2123 | uint32_t name_length, next_entry_offset;
2124 | switch (file_information_class)
2125 | {
2126 | case 1: // File Directory Information
2127 | case 2: // File Full Directory Information
2128 | case 3: // File Both Directory Information
2129 | case 12: // File Names Information
2130 | case 37: // File Id Both Directory Information
2131 | case 38: // File Id Full Directory Information
2132 | do
2133 | {
2134 | int start_extra_offset = extra_offset;
2135 | proto_item* information_item;
2136 | proto_tree* information_tree = proto_tree_add_subtree(filesystem_tree, extra_details_tvb, extra_offset, 0, ett_procmon_filesystem_information, &information_item, "Information");
2137 |
2138 | proto_tree_add_item_ret_uint(information_tree, hf_procmon_filesystem_directory_control_query_next_entry_offset, extra_details_tvb, extra_offset, 4, ENC_LITTLE_ENDIAN0x80000000, &next_entry_offset);
2139 | extra_offset += 4;
2140 | proto_tree_add_item(information_tree, hf_procmon_filesystem_directory_control_query_file_index, extra_details_tvb, extra_offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2141 | extra_offset += 4;
2142 | if (file_information_class == 12)
2143 | {
2144 | // File Names Information
2145 | proto_tree_add_item_ret_uint(information_tree, hf_procmon_filesystem_directory_control_query_name_length, extra_details_tvb, extra_offset, 4, ENC_LITTLE_ENDIAN0x80000000, &name_length);
2146 | extra_offset += 4;
2147 | proto_tree_add_item(information_tree, hf_procmon_filesystem_directory_control_query_name, extra_details_tvb, extra_offset, name_length, ENC_UTF_160x00000004 | ENC_LITTLE_ENDIAN0x80000000);
2148 | extra_offset += name_length;
2149 | proto_item_set_len(information_item, extra_offset-start_extra_offset);
2150 | continue;
2151 | }
2152 |
2153 | filetime_to_nstime(&timestamp, tvb_get_letoh64(extra_details_tvb, extra_offset));
2154 | proto_tree_add_time(information_tree, hf_procmon_filesystem_directory_control_query_creation_time, extra_details_tvb, extra_offset, 8, &timestamp);
2155 | extra_offset += 8;
2156 | filetime_to_nstime(&timestamp, tvb_get_letoh64(extra_details_tvb, extra_offset));
2157 | proto_tree_add_time(information_tree, hf_procmon_filesystem_directory_control_query_last_access_time, extra_details_tvb, extra_offset, 8, &timestamp);
2158 | extra_offset += 8;
2159 | filetime_to_nstime(&timestamp, tvb_get_letoh64(extra_details_tvb, extra_offset));
2160 | proto_tree_add_time(information_tree, hf_procmon_filesystem_directory_control_query_last_write_time, extra_details_tvb, extra_offset, 8, &timestamp);
2161 | extra_offset += 8;
2162 | filetime_to_nstime(&timestamp, tvb_get_letoh64(extra_details_tvb, extra_offset));
2163 | proto_tree_add_time(information_tree, hf_procmon_filesystem_directory_control_query_change_time, extra_details_tvb, extra_offset, 8, &timestamp);
2164 | extra_offset += 8;
2165 | proto_tree_add_item(information_tree, hf_procmon_filesystem_directory_control_query_end_of_file, extra_details_tvb, extra_offset, 8, ENC_LITTLE_ENDIAN0x80000000);
2166 | extra_offset += 8;
2167 | proto_tree_add_item(information_tree, hf_procmon_filesystem_directory_control_query_allocation_size, extra_details_tvb, extra_offset, 8, ENC_LITTLE_ENDIAN0x80000000);
2168 | extra_offset += 8;
2169 | proto_tree_add_item(information_tree, hf_procmon_filesystem_directory_control_query_file_attributes, extra_details_tvb, extra_offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2170 | extra_offset += 4;
2171 | proto_tree_add_item_ret_uint(information_tree, hf_procmon_filesystem_directory_control_query_name_length, extra_details_tvb, extra_offset, 4, ENC_LITTLE_ENDIAN0x80000000, &name_length);
2172 | extra_offset += 4;
2173 | if (file_information_class == 1)
2174 | {
2175 | proto_tree_add_item(information_tree, hf_procmon_filesystem_directory_control_query_name, extra_details_tvb, extra_offset, name_length, ENC_UTF_160x00000004 | ENC_LITTLE_ENDIAN0x80000000);
2176 | extra_offset += name_length;
2177 | proto_item_set_len(information_item, extra_offset - start_extra_offset);
2178 | continue;
2179 | }
2180 | proto_tree_add_item(information_tree, hf_procmon_filesystem_directory_control_query_file_ea_size, extra_details_tvb, extra_offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2181 | extra_offset += 4;
2182 | if (file_information_class == 2)
2183 | {
2184 | proto_tree_add_item(information_tree, hf_procmon_filesystem_directory_control_query_name, extra_details_tvb, extra_offset, name_length, ENC_UTF_160x00000004 | ENC_LITTLE_ENDIAN0x80000000);
2185 | extra_offset += name_length;
2186 | proto_item_set_len(information_item, extra_offset - start_extra_offset);
2187 | continue;
2188 | }
2189 | if (file_information_class == 38)
2190 | {
2191 | proto_tree_add_item(information_tree, hf_procmon_filesystem_directory_control_query_file_id, extra_details_tvb, extra_offset, 8, ENC_LITTLE_ENDIAN0x80000000);
2192 | extra_offset += 8;
2193 | proto_tree_add_item(information_tree, hf_procmon_filesystem_directory_control_query_name, extra_details_tvb, extra_offset, name_length, ENC_UTF_160x00000004 | ENC_LITTLE_ENDIAN0x80000000);
2194 | extra_offset += name_length;
2195 | proto_item_set_len(information_item, extra_offset - start_extra_offset);
2196 | continue;
2197 | }
2198 | proto_tree_add_item(information_tree, hf_procmon_filesystem_directory_control_query_short_name_length, extra_details_tvb, extra_offset, 1, ENC_LITTLE_ENDIAN0x80000000);
2199 | extra_offset += 1;
2200 | proto_tree_add_item(information_tree, hf_procmon_filesystem_padding, extra_details_tvb, extra_offset, 1, ENC_NA0x00000000);
2201 | extra_offset += 1;
2202 | proto_tree_add_item(information_tree, hf_procmon_filesystem_directory_control_query_short_name, extra_details_tvb, extra_offset, 24, ENC_UTF_160x00000004 | ENC_LITTLE_ENDIAN0x80000000);
2203 | extra_offset += 24;
2204 | if (file_information_class == 3)
2205 | {
2206 | proto_tree_add_item(information_tree, hf_procmon_filesystem_directory_control_query_name, extra_details_tvb, extra_offset, name_length, ENC_UTF_160x00000004 | ENC_LITTLE_ENDIAN0x80000000);
2207 | extra_offset += name_length;
2208 | proto_item_set_len(information_item, extra_offset - start_extra_offset);
2209 | continue;
2210 | }
2211 | proto_tree_add_item(information_tree, hf_procmon_filesystem_padding, extra_details_tvb, extra_offset, 2, ENC_NA0x00000000);
2212 | extra_offset += 2;
2213 | proto_tree_add_item(information_tree, hf_procmon_filesystem_directory_control_query_name, extra_details_tvb, extra_offset, name_length, ENC_UTF_160x00000004 | ENC_LITTLE_ENDIAN0x80000000);
2214 | extra_offset += name_length;
2215 | proto_item_set_len(information_item, extra_offset - start_extra_offset);
2216 | }
2217 | while ((tvb_reported_length_remaining(extra_details_tvb, extra_offset) > 0) && (next_entry_offset != 0));
2218 | break;
2219 | }
2220 | }
2221 | break;
2222 | case PROCMON_FILESYSTEM_OPERATION_DIRECTORY_CONTROL_NOTIFY_CHANGE0x02:
2223 | {
2224 | static const value_string file_system_create_notify_change_flags_vals[] = {
2225 | {0x1, "FILE_NOTIFY_CHANGE_FILE_NAME"},
2226 | {0x2, "FILE_NOTIFY_CHANGE_DIR_NAME"},
2227 | {0x3, "FILE_NOTIFY_CHANGE_NAME"},
2228 | {0x4, "FILE_NOTIFY_CHANGE_ATTRIBUTES"},
2229 | {0x8, "FILE_NOTIFY_CHANGE_SIZE"},
2230 | {0x10, "FILE_NOTIFY_CHANGE_LAST_WRITE"},
2231 | {0x20, "FILE_NOTIFY_CHANGE_LAST_ACCESS"},
2232 | {0x40, "FILE_NOTIFY_CHANGE_CREATION"},
2233 | {0x80, "FILE_NOTIFY_CHANGE_EA"},
2234 | {0x100, "FILE_NOTIFY_CHANGE_SECURITY"},
2235 | {0x200, "FILE_NOTIFY_CHANGE_STREAM_NAME"},
2236 | {0x400, "FILE_NOTIFY_CHANGE_STREAM_SIZE"},
2237 | {0x800, "FILE_NOTIFY_CHANGE_STREAM_WRITE"},
2238 | { 0, NULL((void*)0) }
2239 | };
2240 |
2241 | //Unknown fields
2242 | control_offset += 16;
2243 | if (size_of_pointer == 8)
2244 | control_offset += 4; //Padding for 64-bit
2245 |
2246 | dissect_procmon_access_mask(tvb, pinfo, filesystem_tree, control_offset, hf_procmon_filesystem_directory_control_notify_change_flags, 4, NULL((void*)0), file_system_create_notify_change_flags_vals);
2247 | break;
2248 | }
2249 | default:
2250 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_details, tvb, offset, 5 * size_of_pointer + 20, ENC_NA0x00000000);
2251 | break;
2252 | }
2253 | break;
2254 | }
2255 | default:
2256 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_details, tvb, offset, 5 * size_of_pointer + 20, ENC_NA0x00000000);
2257 | break;
2258 | }
2259 | offset += (5 * size_of_pointer + 20);
2260 |
2261 | dissect_procmon_detail_string_info(tvb, filesystem_tree, offset,
2262 | hf_procmon_filesystem_path_size, hf_procmon_filesystem_path_is_ascii, hf_procmon_filesystem_path_char_count, ett_procmon_filesystem_path,
2263 | &is_path_ascii, &path_char_count);
2264 | offset += 2;
2265 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_padding, tvb, offset, 2, ENC_NA0x00000000);
2266 | offset += 2;
2267 | offset = dissect_procmon_detail_string(tvb, filesystem_tree, offset, is_path_ascii, path_char_count, hf_procmon_filesystem_path);
2268 |
2269 | switch(operation)
2270 | {
2271 | case PROCMON_FILESYSTEM_OPERATION_CREATE_FILE20:
2272 | {
2273 | uint32_t sid_length;
2274 | dissect_procmon_access_mask(tvb, pinfo, filesystem_tree, offset, hf_procmon_filesystem_create_file_access_mask, 4, file_system_access_mask_mapping, file_system_access_mask_vals);
2275 | offset += 4;
2276 | proto_tree_add_item_ret_uint(filesystem_tree, hf_procmon_filesystem_create_file_impersonating_sid_length, tvb, offset, 1, ENC_LITTLE_ENDIAN0x80000000, &sid_length);
2277 | offset += 1;
2278 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_padding, tvb, offset, 3, ENC_NA0x00000000);
2279 | offset += 3;
2280 | if (sid_length > 0)
2281 | {
2282 | uint32_t revision, count, value;
2283 | uint64_t identifier_authority;
2284 | int sid_offset = offset;
2285 | proto_item* sid_item;
2286 | wmem_strbuf_t* impersonating_strbuf = wmem_strbuf_new(pinfo->pool, "S-");
2287 | proto_tree* impersonating_tree = proto_tree_add_subtree(filesystem_tree, tvb, sid_offset, sid_length, ett_procmon_filesystem_create_file_impersonating, &sid_item, "Impersonating SID");
2288 | proto_tree_add_item_ret_uint(impersonating_tree, hf_procmon_filesystem_create_file_sid_revision, tvb, sid_offset, 1, ENC_LITTLE_ENDIAN0x80000000, &revision);
2289 | sid_offset += 1;
2290 | proto_tree_add_item_ret_uint(impersonating_tree, hf_procmon_filesystem_create_file_sid_count, tvb, sid_offset, 1, ENC_LITTLE_ENDIAN0x80000000, &count);
2291 | sid_offset += 1;
2292 | proto_tree_add_item_ret_uint64(impersonating_tree, hf_procmon_filesystem_create_file_sid_authority, tvb, sid_offset, 6, ENC_BIG_ENDIAN0x00000000, &identifier_authority);
2293 | sid_offset += 6;
2294 | wmem_strbuf_append_printf(impersonating_strbuf, "%u-%012" PRIx64"l" "x", revision, identifier_authority);
2295 | for (uint32_t i = 0; i < count; i++)
2296 | {
2297 | proto_tree_add_item_ret_uint(impersonating_tree, hf_procmon_filesystem_create_file_sid_value, tvb, sid_offset, 4, ENC_LITTLE_ENDIAN0x80000000, &value);
2298 | wmem_strbuf_append_printf(impersonating_strbuf, "-%08x", value);
2299 | sid_offset += 4;
2300 | }
2301 | proto_item* sid_string_item = proto_tree_add_string(impersonating_tree, hf_procmon_filesystem_create_file_impersonating, tvb, offset, sid_offset - offset, wmem_strbuf_get_str(impersonating_strbuf));
2302 | PROTO_ITEM_SET_GENERATED(sid_string_item)proto_item_set_generated((sid_string_item));
2303 | proto_item_append_text(sid_item, " (%s)", wmem_strbuf_get_str(impersonating_strbuf));
2304 | }
2305 | break;
2306 | }
2307 | case PROCMON_FILESYSTEM_OPERATION_FILE_SYSTEM_CONTROL33:
2308 | case PROCMON_FILESYSTEM_OPERATION_DEVICE_IO_CONTROL34:
2309 | switch (ioctl_value)
2310 | {
2311 | case 0x94264: // FSCTL_OFFLOAD_READ
2312 | offset += 8;
2313 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_ioctl_offset, tvb, offset, 8, ENC_LITTLE_ENDIAN0x80000000);
2314 | offset += 8;
2315 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_ioctl_length, tvb, offset, 8, ENC_LITTLE_ENDIAN0x80000000);
2316 | /* offset += 8; */
2317 | break;
2318 | case 0x98268: // FSCTL_OFFLOAD_WRITE
2319 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_ioctl_offset, tvb, offset, 8, ENC_LITTLE_ENDIAN0x80000000);
2320 | offset += 8;
2321 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_ioctl_length, tvb, offset, 8, ENC_LITTLE_ENDIAN0x80000000);
2322 | /* offset += 8; */
2323 | break;
2324 | }
2325 | break;
2326 |
2327 | case PROCMON_FILESYSTEM_OPERATION_DIRECTORY_CONTROL32:
2328 | dissect_procmon_detail_string_info(tvb, filesystem_tree, offset,
2329 | hf_procmon_filesystem_directory_size, hf_procmon_filesystem_directory_is_ascii, hf_procmon_filesystem_directory_char_count, ett_procmon_filesystem_directory,
2330 | &is_path_ascii, &path_char_count);
2331 | offset += 2;
2332 | /* offset = */ dissect_procmon_detail_string(tvb, filesystem_tree, offset, is_path_ascii, path_char_count, hf_procmon_filesystem_directory);
2333 | break;
2334 |
2335 | case PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE26:
2336 | switch (sub_operation)
2337 | {
2338 | case PROCMON_FILESYSTEM_OPERATION_SET_INFORMATION_FILE_DISPOSITION0x0D:
2339 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_set_info_file_disposition_delete, tvb, offset, 1, ENC_LITTLE_ENDIAN0x80000000);
2340 | offset += 1;
2341 | proto_tree_add_item(filesystem_tree, hf_procmon_filesystem_padding, tvb, offset, 3, ENC_NA0x00000000);
2342 | /* offset += 3; */
2343 | break;
2344 | }
2345 | break;
2346 |
2347 | default:
2348 | break;
2349 | }
2350 |
2351 | return (extra_offset > 0);
2352 | }
2353 |
2354 | #define PROCMON_PROFILING_OPERATION_THREAD0x0000 0x0000
2355 | #define PROCMON_PROFILING_OPERATION_PROCESS0x0001 0x0001
2356 | #define PROCMON_PROFILING_OPERATION_DEBUG_OUTPUT0x0002 0x0002
2357 |
2358 | static const value_string profiling_operation_vals[] = {
2359 | { PROCMON_PROFILING_OPERATION_THREAD0x0000, "Thread" },
2360 | { PROCMON_PROFILING_OPERATION_PROCESS0x0001, "Process" },
2361 | { PROCMON_PROFILING_OPERATION_DEBUG_OUTPUT0x0002, "Debug Output" },
2362 | { 0, NULL((void*)0) }
2363 | };
2364 |
2365 | static bool_Bool dissect_procmon_profiling_event(tvbuff_t* tvb, packet_info* pinfo _U___attribute__((unused)), proto_tree* tree, uint32_t operation, tvbuff_t* extra_details_tvb _U___attribute__((unused)))
2366 | {
2367 | int offset = 0;
2368 |
2369 | proto_tree_add_subtree(tree, tvb, offset, -1, ett_procmon_profiling_event, NULL((void*)0), "Profiling Data");
2370 |
2371 | switch(operation)
2372 | {
2373 | case PROCMON_PROFILING_OPERATION_THREAD0x0000:
2374 | case PROCMON_PROFILING_OPERATION_PROCESS0x0001:
2375 | case PROCMON_PROFILING_OPERATION_DEBUG_OUTPUT0x0002:
2376 | //Unknown
2377 | break;
2378 | default:
2379 | break;
2380 | }
2381 |
2382 | return false0;
2383 | }
2384 |
2385 | #define PROCMON_NETWORK_OPERATION_UNKNOWN0x0000 0x0000
2386 | #define PROCMON_NETWORK_OPERATION_OTHER0x0001 0x0001
2387 | #define PROCMON_NETWORK_OPERATION_SEND0x0002 0x0002
2388 | #define PROCMON_NETWORK_OPERATION_RECEIVE0x0003 0x0003
2389 | #define PROCMON_NETWORK_OPERATION_ACCEPT0x0004 0x0004
2390 | #define PROCMON_NETWORK_OPERATION_CONNECT0x0005 0x0005
2391 | #define PROCMON_NETWORK_OPERATION_DISCONNECT0x0006 0x0006
2392 | #define PROCMON_NETWORK_OPERATION_RECONNECT0x0007 0x0007
2393 | #define PROCMON_NETWORK_OPERATION_RETRANSMIT0x0008 0x0008
2394 | #define PROCMON_NETWORK_OPERATION_TCP_COPY0x0009 0x0009
2395 |
2396 | static const value_string network_operation_vals[] = {
2397 | { PROCMON_NETWORK_OPERATION_UNKNOWN0x0000, "Unknown" },
2398 | { PROCMON_NETWORK_OPERATION_OTHER0x0001, "Other" },
2399 | { PROCMON_NETWORK_OPERATION_SEND0x0002, "Send" },
2400 | { PROCMON_NETWORK_OPERATION_RECEIVE0x0003, "Receive" },
2401 | { PROCMON_NETWORK_OPERATION_ACCEPT0x0004, "Accept" },
2402 | { PROCMON_NETWORK_OPERATION_CONNECT0x0005, "Connect" },
2403 | { PROCMON_NETWORK_OPERATION_DISCONNECT0x0006, "Disconnect" },
2404 | { PROCMON_NETWORK_OPERATION_RECONNECT0x0007, "Reconnect" },
2405 | { PROCMON_NETWORK_OPERATION_RETRANSMIT0x0008, "Retransmit" },
2406 | { PROCMON_NETWORK_OPERATION_TCP_COPY0x0009, "TCP Copy" },
2407 | { 0, NULL((void*)0) }
2408 | };
2409 |
2410 | static const true_false_string tfs_tcp_udp = { "TCP", "UDP" };
2411 |
2412 | #define NETWORK_FLAG_IS_SRC_IPv4_MASK0x0001 0x0001
2413 | #define NETWORK_FLAG_IS_DEST_IPv4_MASK0x0002 0x0002
2414 | #define NETWORK_FLAG_IS_TCP_MASK0x0004 0x0004
2415 |
2416 | static bool_Bool dissect_procmon_network_event(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, uint32_t operation _U___attribute__((unused)), tvbuff_t* extra_details_tvb _U___attribute__((unused)))
2417 | {
2418 | proto_tree* network_event_tree;
2419 | int offset = 0;
2420 | uint16_t flags;
2421 | int detail_length, detail_offset;
2422 | uint8_t* detail_substring;
2423 | wmem_strbuf_t* details = wmem_strbuf_new(pinfo->pool, "");
2424 | static int* const network_flags_vals[] = {
2425 | &hf_procmon_network_flags_is_src_ipv4,
2426 | &hf_procmon_network_flags_is_dst_ipv4,
2427 | &hf_procmon_network_flags_tcp_udp,
2428 | NULL((void*)0)
2429 | };
2430 |
2431 | network_event_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_procmon_network_event, NULL((void*)0), "Network Data");
2432 |
2433 | proto_tree_add_bitmask_with_flags(network_event_tree, tvb, offset, hf_procmon_network_flags, ett_procmon_network_flags, network_flags_vals, ENC_LITTLE_ENDIAN0x80000000, BMT_NO_APPEND0x01);
2434 | flags = tvb_get_letohs(tvb, offset);
2435 | offset += 2;
2436 |
2437 | //Unknown fields
2438 | offset += 2;
2439 |
2440 | proto_tree_add_item(network_event_tree, hf_procmon_network_length, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2441 | offset += 4;
2442 | if (flags & NETWORK_FLAG_IS_SRC_IPv4_MASK0x0001)
2443 | {
2444 | proto_tree_add_item(network_event_tree, hf_procmon_network_src_ipv4, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2445 | offset += 4;
2446 | proto_tree_add_item(network_event_tree, hf_procmon_network_padding, tvb, offset, 12, ENC_NA0x00000000);
2447 | offset += 12;
2448 | }
2449 | else
2450 | {
2451 | proto_tree_add_item(network_event_tree, hf_procmon_network_src_ipv6, tvb, offset, IPv6_ADDR_SIZE16, ENC_NA0x00000000);
2452 | offset += IPv6_ADDR_SIZE16;
2453 | }
2454 | if (flags & NETWORK_FLAG_IS_DEST_IPv4_MASK0x0002)
2455 | {
2456 | proto_tree_add_item(network_event_tree, hf_procmon_network_dest_ipv4, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2457 | offset += 4;
2458 | proto_tree_add_item(network_event_tree, hf_procmon_network_padding, tvb, offset, 12, ENC_NA0x00000000);
2459 | offset += 12;
2460 | }
2461 | else
2462 | {
2463 | proto_tree_add_item(network_event_tree, hf_procmon_network_dest_ipv6, tvb, offset, IPv6_ADDR_SIZE16, ENC_NA0x00000000);
2464 | offset += IPv6_ADDR_SIZE16;
2465 | }
2466 | proto_tree_add_item(network_event_tree, hf_procmon_network_src_port, tvb, offset, 2, ENC_LITTLE_ENDIAN0x80000000);
2467 | offset += 2;
2468 | proto_tree_add_item(network_event_tree, hf_procmon_network_dest_port, tvb, offset, 2, ENC_LITTLE_ENDIAN0x80000000);
2469 | offset += 2;
2470 | detail_offset = offset;
2471 | while (((detail_substring = tvb_get_stringz_enc(pinfo->pool, tvb, offset, &detail_length, ENC_UTF_160x00000004 | ENC_LITTLE_ENDIAN0x80000000)) != NULL((void*)0)) && (strlen(detail_substring) > 0))
2472 | {
2473 | wmem_strbuf_append_printf(details, " %s", detail_substring);
2474 | offset += detail_length;
2475 | }
2476 | //Include the NULL string at the end of the list
2477 | offset += 2;
2478 | proto_tree_add_string(network_event_tree, hf_procmon_network_details, tvb, detail_offset, offset-detail_offset, wmem_strbuf_get_str(details));
2479 |
2480 | return false0;
2481 | }
2482 |
2483 | static int
2484 | dissect_procmon_event(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U___attribute__((unused)))
2485 | {
2486 | proto_item *ti, *ti_event, *ti_operation;
2487 | proto_tree *procmon_tree, *header_tree, *stack_trace_tree;
2488 | int offset = 0;
2489 | int size_of_pointer;
2490 | uint32_t event_class, operation;
2491 | uint32_t stack_trace_size, details_size, extra_details_offset;
2492 | nstime_t timestamp;
2493 | uint16_t extra_details_size = 0;
2494 | int hf_operation;
2495 | const value_string* operation_vs = NULL((void*)0);
2496 | bool_Bool handle_extra_details = false0;
2497 | tvbuff_t *details_tvb, *extra_details_tvb;
2498 |
2499 | col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME"MS Procmon");
2500 | col_clear(pinfo->cinfo, COL_INFO);
2501 | col_set_str(pinfo->cinfo, COL_INFO, "MS Procmon Event");
2502 |
2503 | ti = proto_tree_add_item(tree, proto_procmon, tvb, 0, -1, ENC_NA0x00000000);
2504 | procmon_tree = proto_item_add_subtree(ti, ett_procmon);
2505 |
2506 | header_tree = proto_tree_add_subtree(procmon_tree, tvb, offset, 52, ett_procmon_header, NULL((void*)0), "Event Header");
2507 |
2508 | proto_tree_add_item(header_tree, hf_procmon_process_index, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2509 | offset += 4;
2510 | proto_tree_add_item(header_tree, hf_procmon_thread_id, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2511 | offset += 4;
2512 | ti_event = proto_tree_add_item_ret_uint(header_tree, hf_procmon_event_class, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &event_class);
2513 | offset += 4;
2514 |
2515 | switch (event_class)
2516 | {
2517 | case PROCMON_EVENT_CLASS_TYPE_PROCESS1:
2518 | operation_vs = process_operation_vals;
2519 | hf_operation = hf_procmon_process_operation;
2520 | break;
2521 | case PROCMON_EVENT_CLASS_TYPE_REGISTRY2:
2522 | operation_vs = registry_operation_vals;
2523 | hf_operation = hf_procmon_registry_operation;
2524 | break;
2525 | case PROCMON_EVENT_CLASS_TYPE_FILE_SYSTEM3:
2526 | operation_vs = filesystem_operation_vals;
2527 | hf_operation = hf_procmon_filesystem_operation;
2528 | break;
2529 | case PROCMON_EVENT_CLASS_TYPE_PROFILING4:
2530 | operation_vs = profiling_operation_vals;
2531 | hf_operation = hf_procmon_profiling_operation;
2532 | break;
2533 | case PROCMON_EVENT_CLASS_TYPE_NETWORK5:
2534 | operation_vs = network_operation_vals;
2535 | hf_operation = hf_procmon_network_operation;
2536 | break;
2537 | default:
2538 | hf_operation = hf_procmon_operation_type;
2539 | break;
2540 | }
2541 | ti_operation = proto_tree_add_item_ret_uint(header_tree, hf_operation, tvb, offset, 2, ENC_LITTLE_ENDIAN0x80000000, &operation);
2542 | offset += 2;
2543 |
2544 | if (operation_vs != NULL((void*)0))
2545 | {
2546 | const char* event_class_str = val_to_str_const(event_class, event_class_vals, "Unknown");
2547 | const char* operation_str = try_val_to_str(operation, operation_vs);
2548 | if (operation_str == NULL((void*)0))
2549 | {
2550 | expert_add_info_format(pinfo, ti_operation, &ei_procmon_unknown_operation, "Unknown %s operation: 0x%04x", event_class_str, operation);
2551 | col_add_fstr(pinfo->cinfo, COL_INFO, "%s Operation: Unknown (0x%04x)", event_class_str, operation);
2552 | }
2553 | else
2554 | {
2555 | col_add_fstr(pinfo->cinfo, COL_INFO, "%s Operation: %s", event_class_str, operation_str);
2556 | }
2557 | }
2558 |
2559 | //Next 6 bytes are unknown
2560 | offset += 6;
2561 | proto_tree_add_item(header_tree, hf_procmon_duration, tvb, offset, 8, ENC_LITTLE_ENDIAN0x80000000);
2562 | offset += 8;
2563 | filetime_to_nstime(&timestamp, tvb_get_letoh64(tvb, offset));
2564 | proto_tree_add_time(header_tree, hf_procmon_timestamp, tvb, offset, 8, &timestamp);
2565 | offset += 8;
2566 | proto_tree_add_item(header_tree, hf_procmon_event_result, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000);
2567 | offset += 4;
2568 | proto_tree_add_item(header_tree, hf_procmon_stack_trace_depth, tvb, offset, 2, ENC_LITTLE_ENDIAN0x80000000);
2569 | offset += 2;
2570 | //Next 2 bytes are unknown
2571 | offset += 2;
2572 | proto_tree_add_item_ret_uint(header_tree, hf_procmon_details_size, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &details_size);
2573 | offset += 4;
2574 | proto_tree_add_item_ret_uint(header_tree, hf_procmon_extra_details_offset, tvb, offset, 4, ENC_LITTLE_ENDIAN0x80000000, &extra_details_offset);
2575 | offset += 4;
2576 |
2577 | //Stack trace size part of the record
2578 | stack_trace_size = tvb_get_letohl(tvb, offset);
2579 | offset += 4;
2580 | if (stack_trace_size > 0)
2581 | {
2582 | stack_trace_tree = proto_tree_add_subtree(procmon_tree, tvb, offset, stack_trace_size, ett_procmon_stack_trace, NULL((void*)0), "Stack Trace");
2583 | if (pinfo->pseudo_header->procmon.system_bitness)
2584 | {
2585 | size_of_pointer = 8;
2586 | }
2587 | else
2588 | {
2589 | size_of_pointer = 4;
2590 | }
2591 | for (uint32_t i = 0; i < stack_trace_size; i += size_of_pointer)
2592 | {
2593 | proto_tree_add_item(stack_trace_tree, hf_procmon_stack_trace_address, tvb, offset, size_of_pointer, ENC_LITTLE_ENDIAN0x80000000);
2594 | offset += size_of_pointer;
2595 | }
2596 | }
2597 |
2598 |
2599 | details_tvb = tvb_new_subset_length(tvb, offset, details_size);
2600 | offset += details_size;
2601 | if (extra_details_offset > 0)
2602 | {
2603 | extra_details_size = tvb_get_letohs(tvb, offset);
2604 | offset += 2;
2605 | }
2606 |
2607 | extra_details_tvb = tvb_new_subset_length(tvb, offset, extra_details_size);
2608 | switch(event_class)
2609 | {
2610 | case PROCMON_EVENT_CLASS_TYPE_PROCESS1:
2611 | handle_extra_details = dissect_procmon_process_event(details_tvb, pinfo, procmon_tree, operation, extra_details_tvb);
2612 | break;
2613 | case PROCMON_EVENT_CLASS_TYPE_REGISTRY2:
2614 | handle_extra_details = dissect_procmon_registry_event(details_tvb, pinfo, procmon_tree, operation, extra_details_tvb);
2615 | break;
2616 | case PROCMON_EVENT_CLASS_TYPE_FILE_SYSTEM3:
2617 | handle_extra_details = dissect_procmon_filesystem_event(details_tvb, pinfo, procmon_tree, operation, extra_details_tvb);
2618 | break;
2619 | case PROCMON_EVENT_CLASS_TYPE_PROFILING4:
2620 | handle_extra_details = dissect_procmon_profiling_event(details_tvb, pinfo, procmon_tree, operation, extra_details_tvb);
2621 | break;
2622 | case PROCMON_EVENT_CLASS_TYPE_NETWORK5:
2623 | handle_extra_details = dissect_procmon_network_event(details_tvb, pinfo, procmon_tree, operation, extra_details_tvb);
2624 | break;
2625 | default:
2626 | expert_add_info(pinfo, ti_event, &ei_procmon_unknown_event_class);
2627 | proto_tree_add_item(procmon_tree, hf_procmon_detail_data, details_tvb, 0, details_size, ENC_NA0x00000000);
2628 | break;
2629 | }
2630 |
2631 | if ((extra_details_size > 0) && (!handle_extra_details))
2632 | {
2633 | proto_tree_add_item(procmon_tree, hf_procmon_extra_detail_data, tvb, offset, extra_details_size, ENC_NA0x00000000);
2634 | offset += extra_details_size;
2635 | }
2636 |
2637 | return offset;
2638 | }
2639 |
2640 | /*
2641 | * Register the protocol with Wireshark.
2642 | */
2643 | void
2644 | proto_register_procmon(void)
2645 | {
2646 | static hf_register_info hf[] = {
2647 | { &hf_procmon_process_index,
2648 | { "Process Index", "procmon.process_index",
2649 | FT_UINT32, BASE_DEC_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2650 | },
2651 | { &hf_procmon_thread_id,
2652 | { "Thread ID", "procmon.thread_id",
2653 | FT_UINT32, BASE_DEC_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2654 | },
2655 | { &hf_procmon_event_class,
2656 | { "Event Class", "procmon.event_class",
2657 | FT_UINT32, BASE_DEC, VALS(event_class_vals)((0 ? (const struct _value_string*)0 : ((event_class_vals)))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}
2658 | },
2659 | { &hf_procmon_operation_type,
2660 | { "Operation Type", "procmon.operation_type",
2661 | FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2662 | },
2663 | { &hf_procmon_duration,
2664 | { "Duration", "procmon.duration",
2665 | FT_UINT64, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2666 | },
2667 | { &hf_procmon_timestamp,
2668 | { "Timestamp", "procmon.timestamp",
2669 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2670 | },
2671 | { &hf_procmon_event_result,
2672 | { "Event Result", "procmon.event_result",
2673 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2674 | },
2675 | { &hf_procmon_stack_trace_depth,
2676 | { "Stack Trace Depth", "procmon.stack_trace_depth",
2677 | FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2678 | },
2679 | { &hf_procmon_details_size,
2680 | { "Details Size", "procmon.details_size",
2681 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2682 | },
2683 | { &hf_procmon_extra_details_offset,
2684 | { "Extra Details Offset", "procmon.extra_details_offset",
2685 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2686 | },
2687 | { &hf_procmon_stack_trace_address,
2688 | { "Stack trace address", "procmon.stack_trace_address",
2689 | FT_UINT64, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2690 | },
2691 | { &hf_procmon_detail_data,
2692 | { "Detail Data", "procmon.detail_data",
2693 | FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2694 | },
2695 | { &hf_procmon_extra_detail_data,
2696 | { "Extra detail data", "procmon.extra_detail_data",
2697 | FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2698 | },
2699 | { &hf_procmon_process_operation,
2700 | { "Operation Type", "procmon.process.operation_type",
2701 | FT_UINT16, BASE_DEC, VALS(process_operation_vals)((0 ? (const struct _value_string*)0 : ((process_operation_vals )))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}
2702 | },
2703 | { &hf_procmon_process_pid,
2704 | { "PID", "procmon.process.pid",
2705 | FT_UINT32, BASE_DEC_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2706 | },
2707 | { &hf_procmon_process_path,
2708 | { "Path", "procmon.process.path",
2709 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2710 | },
2711 | { &hf_procmon_process_path_size,
2712 | { "Path Size", "procmon.process.path.size",
2713 | FT_UINT16, BASE_DEC_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2714 | },
2715 | { &hf_procmon_process_path_is_ascii,
2716 | { "Is ASCII", "procmon.process.path.is_ascii",
2717 | FT_BOOLEAN, 16, NULL((void*)0), STRING_IS_ASCII_MASK0x8000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2718 | },
2719 | { &hf_procmon_process_path_char_count,
2720 | { "Char Count", "procmon.process.path.char_count",
2721 | FT_UINT16, BASE_DEC, NULL((void*)0), STRING_CHAR_COUNT_MASK0x7FFF, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2722 | },
2723 | { &hf_procmon_process_commandline,
2724 | { "Commandline", "procmon.process.commandline",
2725 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2726 | },
2727 | { &hf_procmon_process_commandline_size,
2728 | { "Commandline Size", "procmon.process.commandline.size",
2729 | FT_UINT16, BASE_DEC_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2730 | },
2731 | { &hf_procmon_process_commandline_is_ascii,
2732 | { "Is ASCII", "procmon.process.commandline.is_ascii",
2733 | FT_BOOLEAN, 16, NULL((void*)0), STRING_IS_ASCII_MASK0x8000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2734 | },
2735 | { &hf_procmon_process_commandline_char_count,
2736 | { "Char Count", "procmon.process.commandline.char_count",
2737 | FT_UINT16, BASE_DEC, NULL((void*)0), STRING_CHAR_COUNT_MASK0x7FFF, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2738 | },
2739 | { &hf_procmon_process_exit_status,
2740 | { "Exit Status", "procmon.process.exit_status",
2741 | FT_UINT32, BASE_DEC_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2742 | },
2743 | { &hf_procmon_process_kernel_time,
2744 | { "Kernel time", "procmon.process.kernel_time",
2745 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2746 | },
2747 | { &hf_procmon_process_user_time,
2748 | { "User time", "procmon.process.user_time",
2749 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2750 | },
2751 | { &hf_procmon_process_working_set,
2752 | { "Working Set", "procmon.process.working_set",
2753 | FT_UINT64, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2754 | },
2755 | { &hf_procmon_process_peak_working_set,
2756 | { "Peak Working Set", "procmon.process.peak_working_set",
2757 | FT_UINT64, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2758 | },
2759 | { &hf_procmon_process_private_bytes,
2760 | { "Private Bytes", "procmon.process.private_bytes",
2761 | FT_UINT64, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2762 | },
2763 | { &hf_procmon_process_peak_private_bytes,
2764 | { "Peak Private Bytes", "procmon.process.peak_private_bytes",
2765 | FT_UINT64, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2766 | },
2767 | { &hf_procmon_process_thread_id,
2768 | { "Thread ID", "procmon.process.thread_id",
2769 | FT_UINT32, BASE_DEC_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2770 | },
2771 | { &hf_procmon_process_image_base,
2772 | { "Image Base", "procmon.process.image_base",
2773 | FT_UINT64, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2774 | },
2775 | { &hf_procmon_process_image_size,
2776 | { "Image Size", "procmon.process.image_size",
2777 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2778 | },
2779 | { &hf_procmon_process_parent_pid,
2780 | { "Parent PID", "procmon.process.parent_pid",
2781 | FT_UINT32, BASE_DEC_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2782 | },
2783 | { &hf_procmon_process_curdir,
2784 | { "Current Directory", "procmon.process.curdir",
2785 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2786 | },
2787 | { &hf_procmon_process_curdir_size,
2788 | { "Current Directory Size", "procmon.process.curdir.size",
2789 | FT_UINT16, BASE_DEC_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2790 | },
2791 | { &hf_procmon_process_curdir_is_ascii,
2792 | { "Is ASCII", "procmon.process.curdir.is_ascii",
2793 | FT_BOOLEAN, 16, NULL((void*)0), STRING_IS_ASCII_MASK0x8000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2794 | },
2795 | { &hf_procmon_process_curdir_char_count,
2796 | { "Char Count", "procmon.process.curdir.char_count",
2797 | FT_UINT16, BASE_DEC, NULL((void*)0), STRING_CHAR_COUNT_MASK0x7FFF, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2798 | },
2799 | { &hf_procmon_process_environment_char_count,
2800 | { "Environment Size", "procmon.process.environment.char_count",
2801 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2802 | },
2803 | { &hf_procmon_process_environment,
2804 | { "Environment", "procmon.process.environment",
2805 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2806 | },
2807 | { &hf_procmon_registry_operation,
2808 | { "Operation Type", "procmon.registry.operation_type",
2809 | FT_UINT16, BASE_DEC, VALS(registry_operation_vals)((0 ? (const struct _value_string*)0 : ((registry_operation_vals )))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2810 | },
2811 | { &hf_procmon_registry_desired_access,
2812 | { "Desired Access", "procmon.registry.desired_access",
2813 | FT_UINT32, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2814 | },
2815 | { &hf_procmon_registry_granted_access,
2816 | { "Granted Access", "procmon.registry.granted_access",
2817 | FT_UINT32, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2818 | },
2819 | { &hf_procmon_registry_disposition,
2820 | { "Disposition", "procmon.registry.disposition",
2821 | FT_UINT32, BASE_DEC, VALS(registry_disposition_vals)((0 ? (const struct _value_string*)0 : ((registry_disposition_vals )))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}
2822 | },
2823 | { &hf_procmon_registry_key,
2824 | { "Key", "procmon.registry.key",
2825 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2826 | },
2827 | { &hf_procmon_registry_key_size,
2828 | { "Key Size", "procmon.registry.key.size",
2829 | FT_UINT16, BASE_DEC_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2830 | },
2831 | { &hf_procmon_registry_key_is_ascii,
2832 | { "Is ASCII", "procmon.registry.key.is_ascii",
2833 | FT_BOOLEAN, 16, NULL((void*)0), STRING_IS_ASCII_MASK0x8000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2834 | },
2835 | { &hf_procmon_registry_key_char_count,
2836 | { "Char Count", "procmon.registry.key.char_count",
2837 | FT_UINT16, BASE_DEC, NULL((void*)0), STRING_CHAR_COUNT_MASK0x7FFF, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2838 | },
2839 | { &hf_procmon_registry_new_key,
2840 | { "New Key", "procmon.registry.new_key",
2841 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2842 | },
2843 | { &hf_procmon_registry_new_key_size,
2844 | { "New Key Size", "procmon.registry.new_key.size",
2845 | FT_UINT16, BASE_DEC_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2846 | },
2847 | { &hf_procmon_registry_new_key_is_ascii,
2848 | { "Is ASCII", "procmon.registry.new_key.is_ascii",
2849 | FT_BOOLEAN, 16, NULL((void*)0), STRING_IS_ASCII_MASK0x8000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2850 | },
2851 | { &hf_procmon_registry_new_key_char_count,
2852 | { "Char Count", "procmon.registry.new_key.char_count",
2853 | FT_UINT16, BASE_DEC, NULL((void*)0), STRING_CHAR_COUNT_MASK0x7FFF, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2854 | },
2855 | { &hf_procmon_registry_value,
2856 | { "Value", "procmon.registry.value",
2857 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2858 | },
2859 | { &hf_procmon_registry_value_size,
2860 | { "Value Size", "procmon.registry.value.size",
2861 | FT_UINT16, BASE_DEC_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2862 | },
2863 | { &hf_procmon_registry_value_is_ascii,
2864 | { "Is ASCII", "procmon.registry.value.is_ascii",
2865 | FT_BOOLEAN, 16, NULL((void*)0), STRING_IS_ASCII_MASK0x8000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2866 | },
2867 | { &hf_procmon_registry_value_char_count,
2868 | { "Char Count", "procmon.registry.value.char_count",
2869 | FT_UINT16, BASE_DEC, NULL((void*)0), STRING_CHAR_COUNT_MASK0x7FFF, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2870 | },
2871 | { &hf_procmon_registry_length,
2872 | { "Length", "procmon.registry.length",
2873 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2874 | },
2875 | { &hf_procmon_registry_key_information_class,
2876 | { "Information Class", "procmon.registry.key.information_class",
2877 | FT_UINT32, BASE_DEC, VALS(registry_key_information_class_vals)((0 ? (const struct _value_string*)0 : ((registry_key_information_class_vals )))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}
2878 | },
2879 | { &hf_procmon_registry_key_set_information_class,
2880 | { "Information Class", "procmon.registry.key.set_information_class",
2881 | FT_UINT32, BASE_DEC, VALS(registry_value_set_information_class_vals)((0 ? (const struct _value_string*)0 : ((registry_value_set_information_class_vals )))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}
2882 | },
2883 | { &hf_procmon_registry_value_information_class,
2884 | { "Information Class", "procmon.registry.value.information_class",
2885 | FT_UINT32, BASE_DEC, VALS(registry_value_information_class_vals)((0 ? (const struct _value_string*)0 : ((registry_value_information_class_vals )))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}
2886 | },
2887 | { &hf_procmon_registry_index,
2888 | { "Index", "procmon.registry.index",
2889 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2890 | },
2891 | { &hf_procmon_registry_type,
2892 | { "Type", "procmon.registry.type",
2893 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2894 | },
2895 | { &hf_procmon_registry_data_length,
2896 | { "Data Length", "procmon.registry.data_length",
2897 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2898 | },
2899 | { &hf_procmon_registry_key_name_size,
2900 | { "Name Size", "procmon.registry.key.name_size",
2901 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2902 | },
2903 | { &hf_procmon_registry_key_name,
2904 | { "Name", "procmon.registry.key.name",
2905 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2906 | },
2907 | { &hf_procmon_registry_key_handle_tags,
2908 | { "Handle Tags", "procmon.registry.key.handle_tags",
2909 | FT_UINT32, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2910 | },
2911 | { &hf_procmon_registry_key_flags,
2912 | { "Flags", "procmon.registry.key.flags",
2913 | FT_UINT32, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2914 | },
2915 | { &hf_procmon_registry_key_last_write_time,
2916 | { "Last Write Time", "procmon.registry.key.last_write_time",
2917 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2918 | },
2919 | { &hf_procmon_registry_key_title_index,
2920 | { "Title Index", "procmon.registry.key.title_index",
2921 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2922 | },
2923 | { &hf_procmon_registry_key_subkeys,
2924 | { "Subkeys", "procmon.registry.key.subkeys",
2925 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2926 | },
2927 | { &hf_procmon_registry_key_max_name_len,
2928 | { "Max Name Length", "procmon.registry.key.max_name_len",
2929 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2930 | },
2931 | { &hf_procmon_registry_key_values,
2932 | { "Values", "procmon.registry.key.values",
2933 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2934 | },
2935 | { &hf_procmon_registry_key_max_value_name_len,
2936 | { "Max Value Name Length", "procmon.registry.key.max_value_name_len",
2937 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2938 | },
2939 | { &hf_procmon_registry_key_max_value_data_len,
2940 | { "Max Value Data Length", "procmon.registry.key.max_value_data_len",
2941 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2942 | },
2943 | { &hf_procmon_registry_key_class_offset,
2944 | { "Class Offset", "procmon.registry.key.class_offset",
2945 | FT_UINT32, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2946 | },
2947 | { &hf_procmon_registry_key_class_length,
2948 | { "Class Length", "procmon.registry.key.class_length",
2949 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2950 | },
2951 | { &hf_procmon_registry_key_max_class_len,
2952 | { "Max Class Length", "procmon.registry.key.max_class_len",
2953 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2954 | },
2955 | { &hf_procmon_registry_value_reg_type,
2956 | { "Registry Type", "procmon.registry.value.reg_type",
2957 | FT_UINT32, BASE_DEC, VALS(registry_value_reg_type_vals)((0 ? (const struct _value_string*)0 : ((registry_value_reg_type_vals )))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}
2958 | },
2959 | { &hf_procmon_registry_value_offset_to_data,
2960 | { "Offset to Data", "procmon.registry.value.offset_to_data",
2961 | FT_UINT32, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2962 | },
2963 | { &hf_procmon_registry_value_length,
2964 | { "Length", "procmon.registry.value.length",
2965 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2966 | },
2967 | { &hf_procmon_registry_value_name_size,
2968 | { "Name Size", "procmon.registry.value.name_size",
2969 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2970 | },
2971 | { &hf_procmon_registry_value_name,
2972 | { "Name", "procmon.registry.value.name",
2973 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2974 | },
2975 | { &hf_procmon_registry_value_dword,
2976 | { "DWORD", "procmon.registry.value.dword",
2977 | FT_UINT32, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2978 | },
2979 | { &hf_procmon_registry_value_qword,
2980 | { "QWORD", "procmon.registry.value.qword",
2981 | FT_UINT64, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2982 | },
2983 | { &hf_procmon_registry_value_sz,
2984 | { "SZ", "procmon.registry.value.sz",
2985 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2986 | },
2987 | { &hf_procmon_registry_value_binary,
2988 | { "Binary", "procmon.registry.value.binary",
2989 | FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2990 | },
2991 | { &hf_procmon_registry_value_multi_sz,
2992 | { "MultiSZ", "procmon.registry.value.multi_sz",
2993 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2994 | },
2995 | { &hf_procmon_registry_key_set_information_write_time,
2996 | { "Last Write Time", "procmon.registry.key.set_information.write_time",
2997 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
2998 | },
2999 | { &hf_procmon_registry_key_set_information_wow64_flags,
3000 | { "WOW64 Flags", "procmon.registry.key.set_information.wow64_flags",
3001 | FT_UINT32, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3002 | },
3003 | { &hf_procmon_registry_key_set_information_handle_tags,
3004 | { "Handle Tags", "procmon.registry.key.set_information.handle_tags",
3005 | FT_UINT32, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3006 | },
3007 | { &hf_procmon_filesystem_operation,
3008 | { "Operation Type", "procmon.filesystem.operation_type",
3009 | FT_UINT16, BASE_DEC, VALS(filesystem_operation_vals)((0 ? (const struct _value_string*)0 : ((filesystem_operation_vals )))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3010 | },
3011 | { &hf_procmon_filesystem_suboperation,
3012 | { "Suboperation", "procmon.filesystem.suboperation",
3013 | FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3014 | },
3015 | { &hf_procmon_filesystem_padding,
3016 | { "Padding", "procmon.filesystem.padding",
3017 | FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3018 | },
3019 | { &hf_procmon_filesystem_details,
3020 | { "Details", "procmon.filesystem.details",
3021 | FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3022 | },
3023 | { &hf_procmon_filesystem_path,
3024 | { "Path", "procmon.filesystem.path",
3025 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3026 | },
3027 | { &hf_procmon_filesystem_path_size,
3028 | { "Path Size", "procmon.filesystem.path.size",
3029 | FT_UINT16, BASE_DEC_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3030 | },
3031 | { &hf_procmon_filesystem_path_is_ascii,
3032 | { "Is ASCII", "procmon.filesystem.path.is_ascii",
3033 | FT_BOOLEAN, 16, NULL((void*)0), STRING_IS_ASCII_MASK0x8000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3034 | },
3035 | { &hf_procmon_filesystem_path_char_count,
3036 | { "Char Count", "procmon.filesystem.path.char_count",
3037 | FT_UINT16, BASE_DEC, NULL((void*)0), STRING_CHAR_COUNT_MASK0x7FFF, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3038 | },
3039 | { &hf_procmon_filesystem_create_file_access_mask,
3040 | { "File Access Mask", "procmon.filesystem.create_file.access_mask",
3041 | FT_UINT32, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3042 | },
3043 | { &hf_procmon_filesystem_create_file_impersonating_sid_length,
3044 | { "Impersonating SID Length", "procmon.filesystem.create_file.impersonating_sid_length",
3045 | FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3046 | },
3047 | { &hf_procmon_filesystem_create_file_impersonating,
3048 | { "Impersonating", "procmon.filesystem.create_file.impersonating",
3049 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3050 | },
3051 | { &hf_procmon_filesystem_create_file_disposition,
3052 | { "Disposition", "procmon.filesystem.create_file.disposition",
3053 | FT_UINT8, BASE_DEC, VALS(filesystem_disposition_vals)((0 ? (const struct _value_string*)0 : ((filesystem_disposition_vals )))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}
3054 | },
3055 | { &hf_procmon_filesystem_create_file_options,
3056 | { "Options", "procmon.filesystem.create_file.options",
3057 | FT_UINT24, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3058 | },
3059 | { &hf_procmon_filesystem_create_file_attributes,
3060 | { "Attributes", "procmon.filesystem.create_file.attributes",
3061 | FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3062 | },
3063 | { &hf_procmon_filesystem_create_file_share_mode,
3064 | { "Share Mode", "procmon.filesystem.create_file.share_mode",
3065 | FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3066 | },
3067 | { &hf_procmon_filesystem_create_file_allocation,
3068 | { "Allocation", "procmon.filesystem.create_file.allocation",
3069 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3070 | },
3071 | { &hf_procmon_filesystem_create_file_sid_revision,
3072 | { "Revision", "procmon.filesystem.create_file.sid.revision",
3073 | FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3074 | },
3075 | { &hf_procmon_filesystem_create_file_sid_count,
3076 | { "Count", "procmon.filesystem.create_file.sid.count",
3077 | FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3078 | },
3079 | { &hf_procmon_filesystem_create_file_sid_authority,
3080 | { "Authority", "procmon.filesystem.create_file.sid.authority",
3081 | FT_UINT48, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3082 | },
3083 | { &hf_procmon_filesystem_create_file_sid_value,
3084 | { "Value", "procmon.filesystem.create_file.sid.value",
3085 | FT_UINT32, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3086 | },
3087 | { &hf_procmon_filesystem_create_file_open_result,
3088 | { "Open Result", "procmon.filesystem.create_file.open_result",
3089 | FT_UINT32, BASE_DEC, VALS(filesystem_open_result_vals)((0 ? (const struct _value_string*)0 : ((filesystem_open_result_vals )))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}
3090 | },
3091 | { &hf_procmon_filesystem_readwrite_file_io_flags,
3092 | { "IO Flags", "procmon.filesystem.readwrite_file.io_flags",
3093 | FT_UINT32, BASE_HEX, NULL((void*)0), 0x00EFFFFF, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3094 | },
3095 | { &hf_procmon_filesystem_readwrite_file_priority,
3096 | { "Priority", "procmon.filesystem.readwrite_file.priority",
3097 | FT_UINT32, BASE_HEX, VALS(filesystem_readwrite_priority_vals)((0 ? (const struct _value_string*)0 : ((filesystem_readwrite_priority_vals )))), 0x00E00000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}
3098 | },
3099 | { &hf_procmon_filesystem_readwrite_file_length,
3100 | { "Length", "procmon.filesystem.readwrite_file.length",
3101 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3102 | },
3103 | { &hf_procmon_filesystem_readwrite_file_offset,
3104 | { "Offset", "procmon.filesystem.readwrite_file.file_offset",
3105 | FT_INT64, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3106 | },
3107 | { &hf_procmon_filesystem_readwrite_file_result_length,
3108 | { "Result Length", "procmon.filesystem.readwrite_file.result_length",
3109 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3110 | },
3111 | { &hf_procmon_filesystem_ioctl_write_length,
3112 | { "Write Length", "procmon.filesystem.ioctl.write_length",
3113 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3114 | },
3115 | { &hf_procmon_filesystem_ioctl_read_length,
3116 | { "Read Length", "procmon.filesystem.ioctl.read_length",
3117 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3118 | },
3119 | { &hf_procmon_filesystem_ioctl_ioctl,
3120 | { "ioctl", "procmon.filesystem.ioctl.ioctl",
3121 | FT_UINT32, BASE_DEC|BASE_EXT_STRING0x00000200, &ioctl_code_vals_ext, 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3122 | },
3123 | { &hf_procmon_filesystem_ioctl_offset,
3124 | { "Offset", "procmon.filesystem.ioctl.offset",
3125 | FT_INT64, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3126 | },
3127 | { &hf_procmon_filesystem_ioctl_length,
3128 | { "Length", "procmon.filesystem.ioctl.length",
3129 | FT_UINT64, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3130 | },
3131 | { &hf_procmon_filesystem_create_file_mapping_sync_type,
3132 | { "Sync Type", "procmon.filesystem.create_file_mapping.sync_type",
3133 | FT_UINT32, BASE_HEX, VALS(sync_type_vals)((0 ? (const struct _value_string*)0 : ((sync_type_vals)))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3134 | },
3135 | { &hf_procmon_filesystem_create_file_mapping_page_protection,
3136 | { "Page Protection", "procmon.filesystem.create_file_mapping.page_protection",
3137 | FT_UINT32, BASE_HEX, VALS(page_protection_vals)((0 ? (const struct _value_string*)0 : ((page_protection_vals )))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3138 | },
3139 | { &hf_procmon_filesystem_directory,
3140 | { "Directory", "procmon.filesystem.directory",
3141 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3142 | },
3143 | { &hf_procmon_filesystem_directory_size,
3144 | { "Directory Size", "procmon.filesystem.directory.size",
3145 | FT_UINT16, BASE_DEC_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3146 | },
3147 | { &hf_procmon_filesystem_directory_is_ascii,
3148 | { "Is ASCII", "procmon.filesystem.directory.is_ascii",
3149 | FT_BOOLEAN, 16, NULL((void*)0), STRING_IS_ASCII_MASK0x8000, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3150 | },
3151 | { &hf_procmon_filesystem_directory_char_count,
3152 | { "Char Count", "procmon.filesystem.directory.char_count",
3153 | FT_UINT16, BASE_DEC, NULL((void*)0), STRING_CHAR_COUNT_MASK0x7FFF, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3154 | },
3155 | { &hf_procmon_filesystem_directory_control_file_information_class,
3156 | { "File Information Class", "procmon.filesystem.directory_control.file_information_class",
3157 | FT_UINT32, BASE_DEC, VALS(file_information_class_vals)((0 ? (const struct _value_string*)0 : ((file_information_class_vals )))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3158 | },
3159 | { &hf_procmon_filesystem_directory_control_notify_change_flags,
3160 | { "Notify Change Flags", "procmon.filesystem.directory_control.notify_change_flags",
3161 | FT_UINT32, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3162 | },
3163 | { &hf_procmon_filesystem_set_info_file_disposition_delete,
3164 | { "Disposition Delete", "procmon.filesystem.set_info_file.disposition.delete",
3165 | FT_UINT8, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3166 | },
3167 | { &hf_procmon_filesystem_directory_control_query_next_entry_offset,
3168 | { "Next Entry Offset", "procmon.filesystem.directory_control.query.next_entry_offset",
3169 | FT_UINT32, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3170 | },
3171 | { &hf_procmon_filesystem_directory_control_query_file_index,
3172 | { "File Index", "procmon.filesystem.directory_control.query.file_index",
3173 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3174 | },
3175 | { &hf_procmon_filesystem_directory_control_query_name_length,
3176 | { "Name Length", "procmon.filesystem.directory_control.query.name_length",
3177 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3178 | },
3179 | { &hf_procmon_filesystem_directory_control_query_name,
3180 | { "Name", "procmon.filesystem.directory_control.query.name",
3181 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3182 | },
3183 | { &hf_procmon_filesystem_directory_control_query_creation_time,
3184 | { "Creation Time", "procmon.filesystem.directory_control.query.creation_time",
3185 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3186 | },
3187 | { &hf_procmon_filesystem_directory_control_query_last_access_time,
3188 | { "Last Access Time", "procmon.filesystem.directory_control.query.last_access_time",
3189 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3190 | },
3191 | { &hf_procmon_filesystem_directory_control_query_last_write_time,
3192 | { "Last Write Time", "procmon.filesystem.directory_control.query.last_write_time",
3193 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3194 | },
3195 | { &hf_procmon_filesystem_directory_control_query_change_time,
3196 | { "Change Time", "procmon.filesystem.directory_control.query.change_time",
3197 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3198 | },
3199 | { &hf_procmon_filesystem_directory_control_query_end_of_file,
3200 | { "End of File", "procmon.filesystem.directory_control.query.end_of_file",
3201 | FT_UINT64, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3202 | },
3203 | { &hf_procmon_filesystem_directory_control_query_allocation_size,
3204 | { "Allocation Size", "procmon.filesystem.directory_control.query.allocation_size",
3205 | FT_UINT64, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3206 | },
3207 | { &hf_procmon_filesystem_directory_control_query_file_attributes,
3208 | { "File Attributes", "procmon.filesystem.directory_control.query.file_attributes",
3209 | FT_UINT32, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3210 | },
3211 | { &hf_procmon_filesystem_directory_control_query_file_ea_size,
3212 | { "EA Size", "procmon.filesystem.directory_control.query.ea_size",
3213 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3214 | },
3215 | { &hf_procmon_filesystem_directory_control_query_file_id,
3216 | { "File ID", "procmon.filesystem.directory_control.query.file_id",
3217 | FT_UINT64, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3218 | },
3219 | { &hf_procmon_filesystem_directory_control_query_short_name_length,
3220 | { "Name Length", "procmon.filesystem.directory_control.query.short_name_length",
3221 | FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3222 | },
3223 | { &hf_procmon_filesystem_directory_control_query_short_name,
3224 | { "Name", "procmon.filesystem.directory_control.short_name",
3225 | FT_STRING, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3226 | },
3227 | { &hf_procmon_profiling_operation,
3228 | { "Operation Type", "procmon.profiling.operation_type",
3229 | FT_UINT16, BASE_DEC, VALS(profiling_operation_vals)((0 ? (const struct _value_string*)0 : ((profiling_operation_vals )))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3230 | },
3231 | { &hf_procmon_network_operation,
3232 | { "Operation Type", "procmon.network.operation_type",
3233 | FT_UINT16, BASE_DEC, VALS(network_operation_vals)((0 ? (const struct _value_string*)0 : ((network_operation_vals )))), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3234 | },
3235 | { &hf_procmon_network_flags,
3236 | { "Flags", "procmon.network.flags",
3237 | FT_UINT16, BASE_HEX, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3238 | },
3239 | { &hf_procmon_network_flags_is_src_ipv4,
3240 | { "Is Src IPv4", "procmon.network.flags.is_src_ipv4",
3241 | FT_BOOLEAN, 16, NULL((void*)0), 0x0001, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3242 | },
3243 | { &hf_procmon_network_flags_is_dst_ipv4,
3244 | { "Is Dest IPv4", "procmon.network.flags.is_dst_ipv4",
3245 | FT_BOOLEAN, 16, NULL((void*)0), 0x0002, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3246 | },
3247 | { &hf_procmon_network_flags_tcp_udp,
3248 | { "TCP/UDP", "procmon.network.flags.tcp_udp",
3249 | FT_BOOLEAN, 16, TFS(&tfs_tcp_udp)((0 ? (const struct true_false_string*)0 : ((&tfs_tcp_udp )))), 0x0004, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0)}
3250 | },
3251 | { &hf_procmon_network_length,
3252 | { "Length", "procmon.network.length",
3253 | FT_UINT32, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3254 | },
3255 | { &hf_procmon_network_src_ipv4,
3256 | { "Src IP", "procmon.network.src_ipv4",
3257 | FT_IPv4, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3258 | },
3259 | { &hf_procmon_network_src_ipv6,
3260 | { "Src IP", "procmon.network.src_ipv6",
3261 | FT_IPv6, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3262 | },
3263 | { &hf_procmon_network_dest_ipv4,
3264 | { "Dest IP", "procmon.network.dest_ipv4",
3265 | FT_IPv4, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3266 | },
3267 | { &hf_procmon_network_dest_ipv6,
3268 | { "Dest IP", "procmon.network.dest_ipv6",
3269 | FT_IPv6, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3270 | },
3271 | { &hf_procmon_network_src_port,
3272 | { "Src Port", "procmon.network.src_port",
3273 | FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3274 | },
3275 | { &hf_procmon_network_dest_port,
3276 | { "Dest Port", "procmon.network.dest_port",
3277 | FT_UINT16, BASE_DEC, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3278 | },
3279 | { &hf_procmon_network_padding,
3280 | { "Padding", "procmon.network.padding",
3281 | FT_BYTES, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3282 | },
3283 | { &hf_procmon_network_details,
3284 | { "Details", "procmon.network.details",
3285 | FT_STRINGZ, BASE_NONE, NULL((void*)0), 0, NULL((void*)0), HFILL-1, 0, HF_REF_TYPE_NONE, -1, ((void*)0) }
3286 | },
3287 |
3288 | };
3289 |
3290 | /* Setup protocol subtree array */
3291 | static int *ett[] = {
3292 | &ett_procmon,
3293 | &ett_procmon_header,
3294 | &ett_procmon_stack_trace,
3295 | &ett_procmon_process_event,
3296 | &ett_procmon_process_path,
3297 | &ett_procmon_process_commandline,
3298 | &ett_procmon_process_curdir,
3299 | &ett_procmon_registry_event,
3300 | &ett_procmon_registry_key,
3301 | &ett_procmon_registry_new_key,
3302 | &ett_procmon_registry_value,
3303 | &ett_procmon_filesystem_event,
3304 | &ett_procmon_filesystem_path,
3305 | &ett_procmon_filesystem_create_file_impersonating,
3306 | &ett_procmon_filesystem_directory,
3307 | &ett_procmon_filesystem_information,
3308 | &ett_procmon_profiling_event,
3309 | &ett_procmon_network_event,
3310 | &ett_procmon_network_flags,
3311 | };
3312 |
3313 | static ei_register_info ei[] = {
3314 | { &ei_procmon_unknown_event_class, { "procmon.event_class.unknown", PI_UNDECODED0x05000000, PI_WARN0x00600000, "Unknown event class", EXPFILL0, ((void*)0), 0, ((void*)0), {0, {((void*)0), ((void*)0), FT_NONE , BASE_NONE, ((void*)0), 0, ((void*)0), -1, 0, HF_REF_TYPE_NONE , -1, ((void*)0)}} }},
3315 | { &ei_procmon_unknown_operation, { "procmon.operation_type.unknown", PI_UNDECODED0x05000000, PI_WARN0x00600000, "Unknown event operation", EXPFILL0, ((void*)0), 0, ((void*)0), {0, {((void*)0), ((void*)0), FT_NONE , BASE_NONE, ((void*)0), 0, ((void*)0), -1, 0, HF_REF_TYPE_NONE , -1, ((void*)0)}} }},
3316 | };
3317 |
3318 | expert_module_t* expert_procmon;
3319 |
3320 | /* Register the protocol name and description */
3321 | proto_procmon = proto_register_protocol(PNAME"MS Procmon Event", PSNAME"MS Procmon", PFNAME"procmon");
3322 |
3323 | /* Required function calls to register the header fields and subtrees */
3324 | proto_register_field_array(proto_procmon, hf, array_length(hf)(sizeof (hf) / sizeof (hf)[0]));
3325 | proto_register_subtree_array(ett, array_length(ett)(sizeof (ett) / sizeof (ett)[0]));
3326 | expert_procmon = expert_register_protocol(proto_procmon);
3327 | expert_register_field_array(expert_procmon, ei, array_length(ei)(sizeof (ei) / sizeof (ei)[0]));
3328 |
3329 | procmon_handle = register_dissector("procmon", dissect_procmon_event, proto_procmon);
3330 | }
3331 |
3332 | void
3333 | proto_reg_handoff_procmon(void)
3334 | {
3335 | int file_type_subtype_procmon;
3336 |
3337 | file_type_subtype_procmon = wtap_name_to_file_type_subtype("procmon");
3338 | if (file_type_subtype_procmon != -1)
3339 | dissector_add_uint("wtap_fts_rec", file_type_subtype_procmon, procmon_handle);
3340 | }
3341 |
3342 | /*
3343 | * Editor modelines - https://www.wireshark.org/tools/modelines.html
3344 | *
3345 | * Local variables:
3346 | * c-basic-offset: 4
3347 | * tab-width: 8
3348 | * indent-tabs-mode: nil
3349 | * End:
3350 | *
3351 | * vi: set shiftwidth=4 tabstop=8 expandtab:
3352 | * :indentSize=4:tabSize=8:noTabs=true:
3353 | */