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