none
[MS-PST] Documentation - incorrect / insufficient documentation about internal / external BIDs RRS feed

  • Question

  • I've been using the latest [MS-PST] document (5/9/2017) and I could not figure out how to determine if a data block is internal or external.

    The first mention of "internal" or "external" with regards to blocks is in the table at the top of section 2.2.2.8.3 ("Internal BID?" in table header) and then the text at the top of 2.2.2.8.3.1. There is no previous mention of what an "internal BID" is or how a block might be marked "internal." The description of BIDs in section 2.2.2.2 simply states that the two least significant bits are "for internal use" and "implementations MUST ignore these bits."

    I also found in the data tree example in section 3.6 the mention of a "data block that has the i bit set," but I could find no other description of an i bit with regards to blocks or BIDs.

    I then went through some older versions of [MS-PST] and found that earlier versions of section 2.2.2.2 have a clear description of the i bit and how it should be used to determine if a block is "internal" and "external" blocks. I suggest this needed information be added back to the documentation. The 4/30/2014 version is the latest I found with this extra bit information.

    Thanks!

    Friday, July 14, 2017 4:02 PM

All replies

  • Hello Ross:

    Thank you for your inquiry about Microsoft office specification. We have created an incident for investigating this issue. One of the Open specifications team member will contact you by Monday.

    Thanks.


    Tarun Chopra | Escalation Engineer | Open Specifications Support Team


    Saturday, July 15, 2017 2:08 AM
  • Hi Ross, 

    Thanks for bringing this issue with the documentation to our attention. Allow me to review the relevant sections, gather some background on what changes were made and why and then I'll get back to you. 

    Best regards,
    Tom Jebo 
    Sr Escalation Engineer
    Microsoft Open Specifications Support
    Sunday, July 16, 2017 6:52 AM
    Moderator
  • Hi Ross, 
     
    I tend to agree with you on this. I think the diagrams and bit descriptions were perhaps over zealously removed.
    We can keep the existing description which is important to alert implementers to the fact that a BID in the Page context does not use the lower 2 bits as flags but instead uses the entire structure as the bidIndex. Perhaps something like this with some modification:

    ---------------
     
    2.2.2.2 BID (Block ID)
     
    Every block allocated in the PST file is identified using the BID structure. This structure varies in size
    according the format of the file. In the case of ANSI files, the structure is a 32-bit unsigned value,
    while in Unicode files it is a 64-bit unsigned long. In addition, there are two types of BIDs:
     
    1. BIDs used in the context of Pages (2.2.2.7) use all of the bits of the structure (below) and are incremented by 1.
    2. Block BIDs (2.2.2.8) reserve the two least significant bits for flags (see below). As a result these increment by 4 each time a new one is assigned. 
     
    Shown as used by Blocks (2.2.2.8):
    <<then follow with the removed diagrams and bit descriptions>>

    ----------------
     
    Do you agree?
     
    If so, I will file a request to get this revised.  Thanks again for bringing this to our attention! 
     
    Best regards,
    Tom Jebo 
    Sr Escalation Engineer
    Microsoft Open Specifications Support


    Thursday, July 20, 2017 1:55 AM
    Moderator