1 /*
2  * The volume information definitions of a Windows Prefetch File (PF)
3  *
4  * Copyright (C) 2011-2021, Joachim Metz <joachim.metz@gmail.com>
5  *
6  * Refer to AUTHORS for acknowledgements.
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU Lesser General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public License
19  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
20  */
21 
22 #if !defined( _SCCA_VOLUME_INFORMATION_H )
23 #define _SCCA_VOLUME_INFORMATION_H
24 
25 #include <common.h>
26 #include <types.h>
27 
28 #if defined( __cplusplus )
29 extern "C" {
30 #endif
31 
32 typedef struct scca_volume_information_v17 scca_volume_information_v17_t;
33 
34 struct scca_volume_information_v17
35 {
36 	/* The (volume) device path offset
37 	 * Consists of 4 bytes
38 	 */
39 	uint8_t device_path_offset[ 4 ];
40 
41 	/* The (volume) device path number of characters
42 	 * Consists of 4 bytes
43 	 */
44 	uint8_t device_path_number_of_characters[ 4 ];
45 
46 	/* The (volume) creation time
47 	 * Consists of 8 bytes
48 	 */
49 	uint8_t creation_time[ 8 ];
50 
51 	/* The (volume) serial number
52 	 * Consists of 4 bytes
53 	 */
54 	uint8_t serial_number[ 4 ];
55 
56 	/* The file references offset
57 	 * Consists of 4 bytes
58 	 */
59 	uint8_t file_references_offset[ 4 ];
60 
61 	/* The file references size
62 	 * Consists of 4 bytes
63 	 */
64 	uint8_t file_references_size[ 4 ];
65 
66 	/* The directory strings array offset
67 	 * Consists of 4 bytes
68 	 */
69 	uint8_t directory_strings_array_offset[ 4 ];
70 
71 	/* The number of directory strings
72 	 * Consists of 4 bytes
73 	 */
74 	uint8_t number_of_directory_strings[ 4 ];
75 
76 	/* Unknown
77 	 * Consists of 4 bytes
78 	 */
79 	uint8_t unknown1[ 4 ];
80 };
81 
82 typedef struct scca_volume_information_v23 scca_volume_information_v23_t;
83 
84 struct scca_volume_information_v23
85 {
86 	/* The (volume) device path offset
87 	 * Consists of 4 bytes
88 	 */
89 	uint8_t device_path_offset[ 4 ];
90 
91 	/* The (volume) device path number of characters
92 	 * Consists of 4 bytes
93 	 */
94 	uint8_t device_path_number_of_characters[ 4 ];
95 
96 	/* The (volume) creation time
97 	 * Consists of 8 bytes
98 	 */
99 	uint8_t creation_time[ 8 ];
100 
101 	/* The (volume) serial number
102 	 * Consists of 4 bytes
103 	 */
104 	uint8_t serial_number[ 4 ];
105 
106 	/* The file references offset
107 	 * Consists of 4 bytes
108 	 */
109 	uint8_t file_references_offset[ 4 ];
110 
111 	/* The file references size
112 	 * Consists of 4 bytes
113 	 */
114 	uint8_t file_references_size[ 4 ];
115 
116 	/* The directory strings array offset
117 	 * Consists of 4 bytes
118 	 */
119 	uint8_t directory_strings_array_offset[ 4 ];
120 
121 	/* The number of directory strings
122 	 * Consists of 4 bytes
123 	 */
124 	uint8_t number_of_directory_strings[ 4 ];
125 
126 	/* Unknown
127 	 * Consists of 4 bytes
128 	 */
129 	uint8_t unknown1[ 4 ];
130 
131 	/* Unknown
132 	 * Consists of 28 bytes
133 	 */
134 	uint8_t unknown2[ 28 ];
135 
136 	/* Unknown
137 	 * Consists of 4 bytes
138 	 */
139 	uint8_t unknown3[ 4 ];
140 
141 	/* Unknown
142 	 * Consists of 28 bytes
143 	 */
144 	uint8_t unknown4[ 28 ];
145 
146 	/* Unknown
147 	 * Consists of 4 bytes
148 	 */
149 	uint8_t unknown5[ 4 ];
150 };
151 
152 typedef struct scca_volume_information_v30 scca_volume_information_v30_t;
153 
154 struct scca_volume_information_v30
155 {
156 	/* The (volume) device path offset
157 	 * Consists of 4 bytes
158 	 */
159 	uint8_t device_path_offset[ 4 ];
160 
161 	/* The (volume) device path number of characters
162 	 * Consists of 4 bytes
163 	 */
164 	uint8_t device_path_number_of_characters[ 4 ];
165 
166 	/* The (volume) creation time
167 	 * Consists of 8 bytes
168 	 */
169 	uint8_t creation_time[ 8 ];
170 
171 	/* The (volume) serial number
172 	 * Consists of 4 bytes
173 	 */
174 	uint8_t serial_number[ 4 ];
175 
176 	/* The file references offset
177 	 * Consists of 4 bytes
178 	 */
179 	uint8_t file_references_offset[ 4 ];
180 
181 	/* The file references size
182 	 * Consists of 4 bytes
183 	 */
184 	uint8_t file_references_size[ 4 ];
185 
186 	/* The directory strings array offset
187 	 * Consists of 4 bytes
188 	 */
189 	uint8_t directory_strings_array_offset[ 4 ];
190 
191 	/* The number of directory strings
192 	 * Consists of 4 bytes
193 	 */
194 	uint8_t number_of_directory_strings[ 4 ];
195 
196 	/* Unknown
197 	 * Consists of 4 bytes
198 	 */
199 	uint8_t unknown1[ 4 ];
200 
201 	/* Unknown
202 	 * Consists of 24 bytes
203 	 */
204 	uint8_t unknown2[ 24 ];
205 
206 	/* Unknown
207 	 * Consists of 4 bytes
208 	 */
209 	uint8_t unknown3[ 4 ];
210 
211 	/* Unknown
212 	 * Consists of 24 bytes
213 	 */
214 	uint8_t unknown4[ 24 ];
215 
216 	/* Unknown
217 	 * Consists of 4 bytes
218 	 */
219 	uint8_t unknown5[ 4 ];
220 };
221 
222 #if defined( __cplusplus )
223 }
224 #endif
225 
226 #endif /* !defined( _SCCA_VOLUME_INFORMATION_H ) */
227 
228