问题
The spec for pst mentions that the name-id-map is one per pst. This map may contain several pidlid properties as defined in their spec MS-OXPROPS, but from the looks of it most of these pidlid properties appear to be message specific. How are properties for each message stored/managed in this name-id-map ?
回答1:
No, the messages store the 4 byte property tags. E.g. PR_SUBJECT_A (which is not a named property and hence does not need to be mapped) is 0x0037001E.
The map is needed only if a client calls IMAPIProp::GetIDsFromNames and IMAPIProp::GetNamesFromIDs. In the former case, you get the GUID and the id (either string or an int) and you need to lookup the 4 byte (or rather 2 bytes since the lower 2 bytes are prop type) prop tag corresponding to that GUID/id combination. In case of GetNamesFromIDs, you do reverse lookup - given the prop tag, return the GUID/id.
来源:https://stackoverflow.com/questions/23799316/pst-name-id-map-specifics