An LE module can keep resources in its objects, listed by the resource table at the
header’s resource table offset (0x50, from the start of the LE header), with
as many entries as its resource count (0x54). Windows VxDs keep their
version information in a separate block instead, outside every object, which the header
points to directly.
Resource entry
Each entry is 14 bytes:
| Offset | Size | Field | Meaning |
|---|---|---|---|
| 0 | 2 | Type ID | The resource type, a number. |
| 2 | 2 | Name ID | The resource’s number. |
| 4 | 4 | Size | The size of the resource in bytes. |
| 8 | 2 | Object | The object that holds it, from 1. |
| 10 | 4 | Offset | Its offset in that object. |
IBM’s LX description says the entries are sorted by name within each type. A resource is found through its object: the offset gives the page of the object and the place in it, and the object page table gives where that page is in the file. The explorer finds the bytes this way when the pages the resource spans lie one after another in the file. It names the types with Windows’ numbers (1 cursor, 2 bitmap, 3 icon, 4 menu, 5 dialog, 6 string table, 16 version and so on); which numbering LE files use was not confirmed.
VxD version resource
A Windows VxD can carry its version information in a block of its own. The header’s
fields at 0xB8 and 0xBC give its file offset and size; see
VxD fields. The block is laid out like a
resource in a 16-bit Windows .res file:
| Size | Field | Meaning |
|---|---|---|
| 3 or more | Type | FF and a 16-bit type number (16, version); otherwise a name ending in a zero byte. |
| 3 or more | Name | FF and a 16-bit number; otherwise a name ending in a zero byte. |
| 2 | Memory flags | 0x0010 movable, 0x0020 pure, 0x0040 preload, 0x1000 discardable. |
| 4 | Size | The size of the data that follows. |
| size | Data | A 16-bit VS_VERSIONINFO block, its strings in single-byte characters. |
This layout was read from the files; no specification of the block was found. The explorer reads it so, and lists it with the module’s resources.
00003CC8 FF 10 00 FF 01 00 30 00 B8 01 00 00 B8 01 34 00 ......0.......4.
00003CD8 56 53 5F 56 45 52 53 49 4F 4E 5F 49 4E 46 4F 00 VS_VERSION_INFO.
00003CE8 BD 04 EF FE 00 00 01 00 00 00 04 00 B6 03 00 00 ................
0x0030 (movable, pure), 440 bytes of data. The data is a VS_VERSIONINFO of 440 bytes (0x1B8) with a 52-byte (0x34) value, its key in single bytes, then the fixed file information, which starts with its signature FEEF04BDThe header’s size, 0x1C4, is the 12 bytes of the resource header and the
440 bytes of data.