1 : // Copyright 2015 Google Inc. All Rights Reserved.
2 : //
3 : // Licensed under the Apache License, Version 2.0 (the "License");
4 : // you may not use this file except in compliance with the License.
5 : // You may obtain a copy of the License at
6 : //
7 : // http://www.apache.org/licenses/LICENSE-2.0
8 : //
9 : // Unless required by applicable law or agreed to in writing, software
10 : // distributed under the License is distributed on an "AS IS" BASIS,
11 : // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 : // See the License for the specific language governing permissions and
13 : // limitations under the License.
14 :
15 : #ifndef SYZYGY_KASKO_MINIDUMP_REQUEST_H_
16 : #define SYZYGY_KASKO_MINIDUMP_REQUEST_H_
17 :
18 : #include <stdint.h>
19 :
20 : #include <utility>
21 : #include <vector>
22 :
23 : #include "base/strings/string16.h"
24 : #include "syzygy/core/address_range.h"
25 :
26 m : namespace kasko {
27 :
28 : // Represents the inputs of a minidump request.
29 m : struct MinidumpRequest {
30 : // Specifies the type of Minidump to be included in a report.
31 m : enum Type {
32 : // Minidump with stacks, PEB, TEB, and unloaded module list.
33 m : SMALL_DUMP_TYPE,
34 :
35 : // Minidump with all of the above, plus memory referenced from stack.
36 m : LARGER_DUMP_TYPE,
37 :
38 : // Large dump with all process memory.
39 m : FULL_DUMP_TYPE
40 m : };
41 :
42 : // Represents a custom stream to be included in the generated minidump.
43 m : struct CustomStream {
44 m : uint32_t type;
45 m : const void* data;
46 m : size_t length;
47 m : };
48 :
49 : // Represents a user-selected memory range to be included in the generated
50 : // minidump.
51 m : using MemoryRange = core::AddressRange<uint32_t, uint32_t>;
52 :
53 : // Represents a single crash key and its value.
54 m : using CrashKey = std::pair<const base::char16*, const base::char16*>;
55 :
56 : // Instantiates a default request.
57 m : MinidumpRequest();
58 m : ~MinidumpRequest();
59 :
60 : // The requested dump type (default: SMALL_DUMP_TYPE).
61 m : Type type;
62 :
63 : // True if exception_info_address is valid in the client process; false
64 : // otherwise.
65 m : bool client_exception_pointers;
66 :
67 : // The address of an EXCEPTION_POINTERS structure (optional, default: 0).
68 m : uint32_t exception_info_address;
69 :
70 : // Crash keys to be included with the report (default: empty).
71 m : std::vector<CrashKey> crash_keys;
72 :
73 : // Custom streams to be included with the report (default: empty).
74 m : std::vector<CustomStream> custom_streams;
75 :
76 : // User-selected memory ranges to be included in the minidump.
77 m : std::vector<MemoryRange> user_selected_memory_ranges;
78 m : };
79 :
80 m : } // namespace kasko
81 :
82 : #endif // SYZYGY_KASKO_MINIDUMP_REQUEST_H_
|