[2] | 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 |
|
---|