1 | Warp 4 FP 10
|
---|
2 |
|
---|
3 | WPFolder instance data in the .CLASSINFO EA:
|
---|
4 |
|
---|
5 |
|
---|
6 | ---- Key 0x0b7a (2938 IDKEY_FDRGRIDINFO) ----
|
---|
7 |
|
---|
8 | Type: 0x0004 (binary)
|
---|
9 | Size: 8
|
---|
10 |
|
---|
11 | Contains the grid spacing for folders. Apparently two ULONG. First is
|
---|
12 | horizontal, second vertical spacing.
|
---|
13 |
|
---|
14 | Example:
|
---|
15 |
|
---|
16 | 04 00 7A 0B 08 00 FF 00 00 00 80 00 00 00
|
---|
17 | ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^
|
---|
18 | | | | | |
|
---|
19 | | | | | Vertical spacing
|
---|
20 | | | | Horizontal spacing
|
---|
21 | | | Size
|
---|
22 | | Key
|
---|
23 | Binary
|
---|
24 |
|
---|
25 |
|
---|
26 | ---- Key 0x0b74 (2932 Sort class) ----
|
---|
27 |
|
---|
28 | FF D0 FF FF FF D0 FF FF FF 04 00 74 0B 10 00 08 ÿÐÿÿÿÐÿÿÿ..t....
|
---|
29 | ^^^^^ ^^^^^ ^^^^^ ^^
|
---|
30 | | | | |
|
---|
31 | | | | Unknown
|
---|
32 | | | Size, Init: 0x10, will be modified: already seen: 0x22
|
---|
33 | | Key
|
---|
34 | Binary
|
---|
35 |
|
---|
36 | 00 57 50 49 6D 61 67 65 46 69 6C 65 00 FF FF .WPImageFile.ÿÿ.
|
---|
37 | ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^
|
---|
38 | | | |
|
---|
39 | | Sort Class name with ending 0 unknown
|
---|
40 | Unknown
|
---|
41 |
|
---|
42 |
|
---|
43 | ---- Key 0x0b71 (2929 Sort page) ----
|
---|
44 |
|
---|
45 | 04
|
---|
46 | 00 71 0B 18 00 FE FF FF FF 00 00 00 00 FE FF FF .q...þÿÿÿ....þÿÿ
|
---|
47 | ^^^^^ ^^^^^ ^^^^^^^^^^ ^^
|
---|
48 | | | | |
|
---|
49 | | | | Always sort: 01=yes, 00=no
|
---|
50 | | | Init: FE FF FF FF, later standard sort e.g. 05 00 00 00
|
---|
51 | | Size 0x18 (24)
|
---|
52 | Key
|
---|
53 |
|
---|
54 | FF 00 00 00 00 00 00 00 00 00 00 00 00 04 00 7A ÿ..............z
|
---|
55 | 0B 08 00 00 00 00 00 00 00 00 00 02 00 7B 0B 04 .............{..
|
---|
56 | 00 00 00 00 00 09 00 48 00 57 50 4F 62 6A 65 63 .......H.WPObjec
|
---|
57 | 74 00 04 00 0B 00 20 00 01 00 00 00 00 00 00 00 t..... .........
|
---|
58 | 09 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 ...............
|
---|
59 | 03 00 00 00 02 00 00 00 04 00 0C 00 0E 00 02 00 ................
|
---|
60 | 32 31 37 33 36 34 40 32 30 00 FF FF 04 00 04 00 217364@20.ÿÿ....
|
---|
61 | 08 00 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 ..ÿÿÿÿÿÿÿÿ......
|
---|
62 |
|
---|
63 |
|
---|
64 | ---- Key 0x0b73 (2931 IDKEY_FDRLONGARRAY) ----
|
---|
65 |
|
---|
66 | Type: 0x0004 (binary)
|
---|
67 | Size: 0x54 (84)
|
---|
68 |
|
---|
69 | Example:
|
---|
70 |
|
---|
71 | 00 00 04 00 73 0B 54 00 80 00 30 00 64 00 50 00 ....s.T..0.d.P.
|
---|
72 | ^^^^^ ^^^^^ ^^^^^ ^^ ^^ ^^
|
---|
73 | | | | | | |
|
---|
74 | | | | | | View (2. Tree): 0x50: with lines
|
---|
75 | | | | | | 0x10: without lines
|
---|
76 | | | | | Tree Icon: 0x64: small
|
---|
77 | | | | | 0x44: normal
|
---|
78 | | | | | 0x41: invisible
|
---|
79 | | | | |
|
---|
80 | | | | View (first view page): 22h: Non flowed, single column, small icons
|
---|
81 | | | | 02h: Non flowed, single column, normal icons
|
---|
82 | | | | 01h: Non flowed, single column, invisible icons
|
---|
83 | | | | 32h: Non flowed, multiple columns, small icons
|
---|
84 | | | | 12h: Non flowed, multiple columns, normal icons
|
---|
85 | | | | 11h: Non flowed, multiple columns, invisible icons
|
---|
86 | | | Size (84 dec) 04h: Flowed as placed normal icons
|
---|
87 | | | 24h: Flowed as placed small icons
|
---|
88 | | Key 80h: Gridded
|
---|
89 | Binary
|
---|
90 |
|
---|
91 | 08 80 30 00 03 00 00 00 00 00 00 00 FF FF FF FF .0.........ÿ
|
---|
92 | ^^
|
---|
93 | |
|
---|
94 |
|
---|
95 |
|
---|
96 | ÿÿÿ
|
---|
97 | 00 00 00 40 EF FF FF FF EF FF FF FF DD FF FF FF ...@ïÿÿÿïÿÿÿÝÿÿÿ
|
---|
98 | EF FF FF FF EF FF FF FF DD FF FF FF 00 00 00 40 ïÿÿÿïÿÿÿÝÿÿÿ...@
|
---|
99 | 00 00 00 40 00 00 00 40 00 00 00 00 02 00 00 00 ...@...@........
|
---|
100 | D0 FF FF FF D0 FF FF FF D0 FF FF FF 04 00 74 0B ÐÿÿÿÐÿÿÿÐÿÿÿ..t.
|
---|
101 | ^^
|
---|
102 | |
|
---|
103 | Last byte
|
---|
104 |
|
---|
105 |
|
---|
106 | ----------------------
|
---|
107 | Data structures:
|
---|
108 |
|
---|
109 | #define INSTANCEDATA_TYPE_LONG 0x0002
|
---|
110 | #define INSTANCEDATA_TYPE_STRING 0x0003
|
---|
111 | #define INSTANCEDATA_TYPE_BINARY 0x0004
|
---|
112 |
|
---|
113 | /* Every block of instance data starts with this struct.
|
---|
114 | The data follows directly after this header */
|
---|
115 | typedef struct _InstanceDataHead
|
---|
116 | {
|
---|
117 | USHORT usType; /* One of the INSTANCEDATA_TYPE_* constants */
|
---|
118 | USHORT usKey; /* key used in wpSaveXXX() */
|
---|
119 | USHORT usLength; /* size of data followingalue */
|
---|
120 | }INSTANCEDATAHEAD;
|
---|
121 |
|
---|
122 |
|
---|
123 | /* The following structs represent the different types
|
---|
124 | of instance data */
|
---|
125 | typedef struct _wpInstanceDataLong
|
---|
126 | {
|
---|
127 | USHORT usType; /* 0x0002 */
|
---|
128 | USHORT usKey; /* key used in wpSaveLong() */
|
---|
129 | USHORT usLength; /* size of value, always 0x0004 */
|
---|
130 | ULONG ulValue;
|
---|
131 | }INSTANCEDATALONG;
|
---|
132 |
|
---|
133 |
|
---|
134 | typedef struct _wpInstanceDataString
|
---|
135 | {
|
---|
136 | USHORT usType; /* 0x0003 */
|
---|
137 | USHORT usKey; /* key used in wpSaveString() */
|
---|
138 | USHORT usLength; /* String length including terminating 0 */
|
---|
139 | UCHAR ucData[]; /* The string including a terminating 0 */
|
---|
140 | }INSTANCEDATASTRING;
|
---|
141 |
|
---|
142 |
|
---|
143 | typedef struct _wpInstanceDataBinary
|
---|
144 | {
|
---|
145 | USHORT usType; /* 0x0004 */
|
---|
146 | USHORT usKey; /* key used in wpSaveData() */
|
---|
147 | USHORT usLength; /* Size of data block */
|
---|
148 | BYTE data[]; /* Data */
|
---|
149 | }INSTANCEDATABINARY;
|
---|
150 |
|
---|
151 | -----------------
|
---|
152 |
|
---|
153 | /* Instance data block for a class. For every class in the chain of classes
|
---|
154 | there may be one of these blocks. The current class is the first, the parent class
|
---|
155 | instance data follows, then the grand parent class instance data etc. Last one is
|
---|
156 | always WPObject. */
|
---|
157 | typedef struct _InstanceDataBlockHead
|
---|
158 | {
|
---|
159 | USHORT usClassNameLength; /* Length of class name including terminating 0 */
|
---|
160 | USHORT usDataSize; /* Size of data block starting after this structure */
|
---|
161 | UCHAR ucClassName[]; /* Array holding classname with terminating 0 */
|
---|
162 | }DATABLOCKHEAD;
|
---|
163 | /* Data block with variable length is immediately following.
|
---|
164 | This data block consist of several INSTANCEDATALONG/STRING/BINARY */
|
---|
165 |
|
---|
166 | /* The above structure is documented in wpobject.idl as WPSRCLASSBLOCK: */
|
---|
167 |
|
---|
168 | /* Notes: The class name immediately follows the control block. The
|
---|
169 | * first instance variable control block immediately follows
|
---|
170 | * this.
|
---|
171 | */
|
---|
172 | typedef struct _WPSRCLASSBLOCK
|
---|
173 | {
|
---|
174 | SHORT ClassNameLength; /* Length of class name, including the
|
---|
175 | * .. null terminator. This must be a
|
---|
176 | * .. SHORT and must be at the beginning
|
---|
177 | * .. of the structure.
|
---|
178 | */
|
---|
179 | USHORT IVarLength; /* Length of instance variable
|
---|
180 | * .. information, including the two-
|
---|
181 | * .. byte null terminator
|
---|
182 | */
|
---|
183 | } WPSRCLASSBLOCK;
|
---|
184 |
|
---|
185 | ----------------
|
---|
186 |
|
---|
187 | struct CLASSINFO
|
---|
188 | {
|
---|
189 | const USHORT usEAType; /* Always EAT_BINARY: 0xFFFE */
|
---|
190 | USHORT usSize; /* Size of data starting with usUnknown1 */
|
---|
191 | USHORT usUnknown1;
|
---|
192 | USHORT usUnknown2;
|
---|
193 | USHORT usDataSize; /* Data size following the class name (starting with usOffset) */
|
---|
194 | USHORT usUnknown3;
|
---|
195 | UCHAR ucClassName[]; /* The class of this object including the terminating 0, e.g. WPDataFile */
|
---|
196 | USHORT usOffset; /* Offset to WPObject instance data block starting at usOffset */
|
---|
197 | USHORT usUnknown4; /* Seems to be always 0x19c9 (c9 19)*/
|
---|
198 | USHORT usUnknown5; /* Seems to be always 0x0010 */
|
---|
199 | USHORT usUnknown6; /* Always the same as usUnknown4 0x19c9 */
|
---|
200 | USHORT usSizeInstanceData; /* Size of all INSTANCEDATABLOCKs + sizeof(usSizeInstanceData2) + sizeof(usUnknown6)
|
---|
201 | + sizeof(usUnknown7) + sizeof(usUnknown8) + sizeof(usSizeInstanceData) */
|
---|
202 | USHORT usUnknown7; /* Always the same as usUnknown4 0x19c9 */
|
---|
203 | USHORT usSizeInstanceData2; /* Size of all INSTANCEDATABLOCKs including 6 terminating zero bytes.
|
---|
204 | Each INSTANCEDATABLOCK structure is followed by a data block of variable length. */
|
---|
205 | USHORT usUnknown8; /* Seems to be alway 0x0000 (?) */
|
---|
206 | INSTANCEDATABLOCK instanceDataBlocks[]; /* One or more instance data blocks. At least the WPObject data block is present. */
|
---|
207 | /* The WPObject instance data block is always the last one. Attention: the instance
|
---|
208 | data blocks may have different sizes! */
|
---|
209 | const UCHAR ucZero[6]; /* 6 terminating zero bytes */
|
---|
210 | }
|
---|
211 |
|
---|
212 | Remark:
|
---|
213 | All data is stored in INTEL byte order in the EA, this means lowByte-HighByte.
|
---|
214 | See example.
|
---|
215 |
|
---|
216 | ******************* Examples *************************************************
|
---|
217 |
|
---|
218 | FE FF 72 00 10 00 00 00 5F 00 00 00 57 50 44 61 þÿr....._...WPDa
|
---|
219 | ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^
|
---|
220 | | | | |
|
---|
221 | | | | Class
|
---|
222 | | | |
|
---|
223 | | | Total data size following starting after the class name and
|
---|
224 | | | including the 6 terminating 0 bytes.
|
---|
225 | | |
|
---|
226 | | |
|
---|
227 | | Size of data following (here 114 dez). Total size of EA is this + 4 (FE FF + size-word)
|
---|
228 | |
|
---|
229 | |
|
---|
230 | EAT_BINARY
|
---|
231 |
|
---|
232 | |----------------------------
|
---|
233 | 74 61 46 69 6C 65 00 |10 00 2F 15 10 00 2F 15 59 taFile.../.../.Y
|
---|
234 | ^^^^^^^^^^^^^^^^^^^^ |__________________________________________________Controllblock. Always 16 bytes
|
---|
235 | ^^^^^ ^^^ ^^
|
---|
236 | | | |
|
---|
237 | | | Data size til end starting here * (???)
|
---|
238 | | * <-----------------------------------|
|
---|
239 | |
|
---|
240 | Total data to Begin of WPObject data block (length word)
|
---|
241 |
|
---|
242 | --------------------|
|
---|
243 | 00 2F 15 4F 00 00 00| 09 00 3C 00 57 50 4F 62 6A ./.O.....<.WPObj
|
---|
244 | ____________________| ^^^^^ ^^^^^ ^^^^^^^^^^^^^^
|
---|
245 | ^^ ^^^^^ | | |
|
---|
246 | | | | |
|
---|
247 | | | | Class name in wpSave*() with terminating 0
|
---|
248 | | | |
|
---|
249 | | | Data in WPObject data block starting after the name (including 0).
|
---|
250 | | |
|
---|
251 | | WPObject starts here: Length of name including terminating 0.
|
---|
252 | | In this example it's the first instance data block.
|
---|
253 | |
|
---|
254 | Size of following data beginning with first class instance data block including terminating 6 zero bytes
|
---|
255 |
|
---|
256 |
|
---|
257 | 65 63 74 00 04 00 0B 00 20 00 04 00 00 00 00 00 ect..... .......
|
---|
258 | ^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^
|
---|
259 | | | |
|
---|
260 | | | Value
|
---|
261 | | |
|
---|
262 | | Length
|
---|
263 | |
|
---|
264 | Key (4001 dez)
|
---|
265 |
|
---|
266 | 00 00 09 00 00 00 10 00 00 00 00 00 00 00 00 00 ................
|
---|
267 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
---|
268 |
|
---|
269 | 00 00 03 00 00 00 02 00 00 00 04 00 0C 00 02 00 ................
|
---|
270 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^
|
---|
271 | Value cont. | | |
|
---|
272 | | | Length
|
---|
273 | | |
|
---|
274 | | Key
|
---|
275 | |
|
---|
276 | Value is ??
|
---|
277 |
|
---|
278 | FF FF 04 00 04 00 08 00 FF FF FF FF FF FF FF FF ÿÿ......ÿÿÿÿÿÿÿÿ
|
---|
279 | ^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^
|
---|
280 | | | | | |
|
---|
281 | | | | | Value
|
---|
282 | | | | |
|
---|
283 | | | | Length
|
---|
284 | | | |
|
---|
285 | | | Key
|
---|
286 | | |
|
---|
287 | | Value type
|
---|
288 | |
|
---|
289 | Value
|
---|
290 |
|
---|
291 |
|
---|
292 | 00 00 00 00 00 00 ......
|
---|
293 | ^^^^^^^^^^^^^^^^^
|
---|
294 | |
|
---|
295 | Terminating 6 zero bytes
|
---|
296 |
|
---|
297 |
|
---|
298 | *********************************
|
---|
299 |
|
---|
300 |
|
---|
301 |
|
---|
302 |
|
---|
303 |
|
---|
304 | ******************************************************
|
---|
305 |
|
---|
306 | Complex example:
|
---|
307 |
|
---|
308 |
|
---|
309 | FE FF FE 00 00 00 00 00 F0 00 00 00 43 57 4D 50 þÿþ.....ð...CWMP
|
---|
310 | ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^
|
---|
311 | | | | |
|
---|
312 | | | | Class
|
---|
313 | | | |
|
---|
314 | | | Total data size following starting after the class name and
|
---|
315 | | | including the 6 terminating 0 bytes.
|
---|
316 | | |
|
---|
317 | | |
|
---|
318 | | Size of data following (here 254 dez). Total size is this + 4 (FE FF + size-word)
|
---|
319 | |
|
---|
320 | |
|
---|
321 | EAT_BINARY
|
---|
322 |
|
---|
323 |
|
---|
324 | 33 00 A1 00 2D 15 10 00 2D 15 EA 00 2D 15 E0 00 3.¡.-...-.ê.-.à.
|
---|
325 | ^^^^^ ^^^^^ ^^^^^
|
---|
326 | | | |
|
---|
327 | | | Size of all instance data blocks following including terminating zero bytes
|
---|
328 | | |
|
---|
329 | | 161 Offset to WPObject starting from this word. See below for an explanation
|
---|
330 | |
|
---|
331 | Class(cont.)
|
---|
332 |
|
---|
333 |
|
---|
334 | 00 00 08 00 85 00 43 57 41 75 64 69 6F 00 02 00 ....
|
---|
335 | .CWAudio...
|
---|
336 | ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^
|
---|
337 | | | | |
|
---|
338 | | | | Value is a LONG ->wpSaveLong()
|
---|
339 | | | |
|
---|
340 | | | Class name in wpSave*() with terminating 0
|
---|
341 | | |
|
---|
342 | | Total length of data for this name starting after the terminating 0
|
---|
343 | |
|
---|
344 | Length of Class name incl. terminating 0
|
---|
345 |
|
---|
346 |
|
---|
347 | A1 0F 04 00 56 01 00 00 02 00 A3 0F 04 00 44 AC ¡...V.....£...D¬
|
---|
348 | ^^^^^ ^^^^^ ^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^
|
---|
349 | | | | | | | |
|
---|
350 | | | | | | | Value
|
---|
351 | | | | | | |
|
---|
352 | | | | | | Length
|
---|
353 | | | | | |
|
---|
354 | | | | | Key
|
---|
355 | | | | |
|
---|
356 | | | | Value is a LONG
|
---|
357 | | | |
|
---|
358 | | | Value (here: 342dez)
|
---|
359 | | |
|
---|
360 | | Length
|
---|
361 | |
|
---|
362 | Key (4001 dez)
|
---|
363 |
|
---|
364 |
|
---|
365 | 00 00 02 00 A2 0F 04 00 02 00 00 00 02 00 A4 0F ....¢.........€.
|
---|
366 | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^
|
---|
367 | | | |
|
---|
368 | | LONG value LONG value
|
---|
369 | |
|
---|
370 | Value cont.
|
---|
371 |
|
---|
372 | 04 00 10 00 00 00 02 00 A5 0F 04 00 67 8A 62 00 ........¥...gb.
|
---|
373 | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
---|
374 | | |
|
---|
375 | LONG value cont. LONG value
|
---|
376 |
|
---|
377 | 02 00 AC 0F 04 00 8B 3A 05 00 03 00 A6 0F 12 00 ..¬...:....Š...
|
---|
378 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^
|
---|
379 | | | | |
|
---|
380 | LONG value | | Length of String in wpSaveString() including terminating 0
|
---|
381 | | |
|
---|
382 | | Key for wpSaveString
|
---|
383 | |
|
---|
384 | Value is a string
|
---|
385 |
|
---|
386 |
|
---|
387 | 57 6F 75 6E 64 20 49 6E 20 4D 79 20 48 65 61 72 Wound In My Hear
|
---|
388 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
---|
389 | |
|
---|
390 | Value of wpSaveString() (+ terminating 0)
|
---|
391 |
|
---|
392 | 74 00 03 00 A7 0F 0B 00 50 72 6F 70 61 67 61 6E t...§...Propagan
|
---|
393 | ^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^
|
---|
394 | | | | |
|
---|
395 | | | | String value of wpSaveString()...
|
---|
396 | | | |
|
---|
397 | | | Length of string including 0
|
---|
398 | | |
|
---|
399 | | Key for wpSaveString (here: 4007dez)
|
---|
400 | |
|
---|
401 | Value is a string ->wpSaveString()
|
---|
402 |
|
---|
403 |
|
---|
404 | 64 61 00 03 00 A8 0F 05 00 31 32 33 34 00 03 00 da...š...1234...
|
---|
405 | ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^
|
---|
406 | | |
|
---|
407 | | String value
|
---|
408 | |
|
---|
409 | String with length 5 (including 0)
|
---|
410 |
|
---|
411 |
|
---|
412 | A9 0F 01 00 00 03 00 AA 0F 01 00 00 03 00 AB 0F ©......ª......«.
|
---|
413 | ^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^
|
---|
414 | | | | | |
|
---|
415 | | | | Empty string Empty string
|
---|
416 | | | |
|
---|
417 | | | |
|
---|
418 | | | String (here: only terminating 0)
|
---|
419 | | |
|
---|
420 | | Length of string (here: 1 this means an empty string, only the terminating 0)
|
---|
421 | |
|
---|
422 | Key
|
---|
423 |
|
---|
424 | *************** Now following WPObject instance data ******************
|
---|
425 |
|
---|
426 | 01 00 00 09 00 3C 00 57 50 4F 62 6A 65 63 74 00 .....<.WPObject.
|
---|
427 | ^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
---|
428 | | | |
|
---|
429 | | | Class name with terminating 0
|
---|
430 | | |
|
---|
431 | | Total length of this data block starting after the name
|
---|
432 | |
|
---|
433 | Length of Class name incl. terminating 0
|
---|
434 |
|
---|
435 | 04 00 0B 00 20 00 EF BB 00 00 00 00 00 00 09 00 .... .ï»........
|
---|
436 | ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
---|
437 | | | | |
|
---|
438 | | | | Value
|
---|
439 | | | |
|
---|
440 | | | Length
|
---|
441 | | |
|
---|
442 | | Key
|
---|
443 | |
|
---|
444 |
|
---|
445 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 ................
|
---|
446 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
---|
447 |
|
---|
448 |
|
---|
449 | 00 00 02 00 00 00 04 00 0C 00 02 00 FF FF 04 00 ............ÿÿ..
|
---|
450 | ^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^
|
---|
451 | | | | | | |
|
---|
452 | Value | | | | Value is a ??
|
---|
453 | | | | |
|
---|
454 | | | | Value
|
---|
455 | | | |
|
---|
456 | | | Length (here 2)
|
---|
457 | | |
|
---|
458 | | Key
|
---|
459 | |
|
---|
460 | Value is a ??
|
---|
461 |
|
---|
462 | 04 00 08 00 FF FF FF FF FF FF FF FF 00 00 00 00 ....ÿÿÿÿÿÿÿÿ....
|
---|
463 | ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^
|
---|
464 | | | | |
|
---|
465 | | | Value ??? 6 terminating 0 bytes
|
---|
466 | | |
|
---|
467 | | Length
|
---|
468 | |
|
---|
469 | Key
|
---|
470 |
|
---|
471 | 00 00 ..
|
---|
472 | ^^^^^
|
---|
473 | |
|
---|
474 | ???
|
---|
475 |
|
---|
476 | ---------------------------------
|
---|
477 |
|
---|
478 | Example 1:
|
---|
479 |
|
---|
480 | FE FF E9 00 10 00 00 00 D3 00 00 00 57 50 43 6F þÿé.....Ó...WPCo
|
---|
481 | 6D 6D 61 6E 64 46 69 6C 65 00
|
---|
482 | --> 6E 00 2D 15 10 00 mmandFile.n.-...
|
---|
483 | ^^^^^
|
---|
484 | |
|
---|
485 | 110 Offset to WPObject
|
---|
486 |
|
---|
487 | 2D 15 CD 00 2D 15 C3 00 00 00 0E 00 4C 00 57 50 -.Í.-.Ã.....L.WP
|
---|
488 | 50 72 6F 67 72 61 6D 46 69 6C 65 00 04 00 0A 00 ProgramFile.....
|
---|
489 | 14 00 00 00 00 00 02 00 00 00 00 00 00 00 10 00 ................
|
---|
490 | 00 00 01 00 00 00 04 00 0B 00 02 00 FF FF 04 00 ............ÿÿ..
|
---|
491 | 06 00 24 00 00 00 00 00 00 00 00 00 00 00 00 00 ..$.............
|
---|
492 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
|
---|
493 | 00 00 00 00 00 00 00 00 <--
|
---|
494 |
|
---|
495 | 09 00 52 00 57 50 4F 62 ..........R.WPOb
|
---|
496 | ^^^^^
|
---|
497 | |
|
---|
498 | WPObject class name length
|
---|
499 |
|
---|
500 | 6A 65 63 74 00 04 00 0B 00 20 00 04 00 00 00 00 ject..... ......
|
---|
501 |
|
---|
502 |
|
---|
503 | 00 00 00 0B 00 00 00 10 00 00 00 00 00 00 00 00 ................
|
---|
504 | 00 00 00 03 00 00 00 02 00 00 00 04 00 0C 00 18 ................
|
---|
505 | 00 02 00 32 30 37 30 39 34 40 32 30 2C 32 31 37 ...207094@20,217
|
---|
506 | 32 33 33 40 32 30 00 FF FF 04 00 04 00 08 00 FF 233@20.ÿÿ......ÿ
|
---|
507 | FF FF FF FF FF FF FF 00 00 00 00 00 00 ÿÿÿÿÿÿÿ......
|
---|
508 |
|
---|
509 | ------------------
|
---|
510 |
|
---|
511 | Example 2:
|
---|
512 |
|
---|
513 | FE FF 7E 00 00 00 00 00 6B 00 00 00 57 50 44 61 þÿ~.....k...WPDa
|
---|
514 | 74 61 46 69 6C 65 00
|
---|
515 | --> 10 00 BE 14 10 00 BE 14 65 taFile...Ÿ...Ÿ.e
|
---|
516 | ^^^^^
|
---|
517 | |
|
---|
518 | 16 Offset to WPObject starting from this word
|
---|
519 |
|
---|
520 | 00 BE 14 5B 00 00 00 <--
|
---|
521 |
|
---|
522 | 09 00 48 00 57 50 4F 62 6A .Ÿ.[.....H.WPObj
|
---|
523 | ^^^^^
|
---|
524 | |
|
---|
525 | WPObject class name length
|
---|
526 |
|
---|
527 | 65 63 74 00 04 00 0B 00 20 00 00 10 00 00 00 00 ect..... .......
|
---|
528 | 00 00 09 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
|
---|
529 | 00 00 03 00 00 00 02 00 00 00 04 00 0C 00 0E 00 ................
|
---|
530 | 02 00 32 30 39 31 32 37 40 32 30 00 FF FF 04 00 ..209127@20.ÿÿ..
|
---|
531 | 04 00 08 00 FF FF FF FF FF FF FF FF 00 00 00 00 ....ÿÿÿÿÿÿÿÿ....
|
---|
532 | 00 00 ..
|
---|
533 |
|
---|
534 |
|
---|
535 | ------------------------------------------------------------------
|
---|
536 |
|
---|
537 | WPS bugs
|
---|
538 | ---------
|
---|
539 |
|
---|
540 | wpFreeMem(somSelf, pByte) doesn't check for pByte==NULL causing trap.
|
---|
541 |
|
---|
542 | wpAllocMem() may block if called from within a folder frame procedure. For example
|
---|
543 | when owner drawing icons in lighttable folders a method in CW-Multimedia classes
|
---|
544 | is called to get a bitmap handle. If that method uses wpAllocMem() internally to
|
---|
545 | keep track of data a deadlock occurs. Replacing wpAllocMem() with malloc() solves the
|
---|
546 | issue.
|
---|
547 |
|
---|