3.2.1.2 Fetching the GUID
The only missing piece of information at this point is the GUID. It is fetched by first calculating the GUID Entry Index:
GUID index – 0x03
= 0x04 – 0x03
= 0x01
Then the offset into the GUID stream is determined:
GUID Entry Index * size of GUID
=0x01 * 0x10
= 0x10
The offset is then used to fetch the GUID from the GUID stream ("__substg1.0_00020102"), which is contained inside the named property mapping storage ("__nameid_version1.0"). In this case, bytes 16 – 31 will be fetched from the stream.
In this example, the 16 bytes fetched are as follows (in hexadecimal notation):
-
03 20 06 00 00 00 00 00 C0 00 00 00 00 00 00 46
Considering that the bytes are in little-endian format, the GUID is as follows:
{0x00062003, 0x0000, 0x0000, {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}
Thus all the fields needed to specify the property name, given a property ID, can be obtained from the data stored in the entry stream, the string stream, and the GUID stream.