3.2.5.10 Processing RopGetPropertyIdsFromNames

When the server receives a RopGetPropertyIdsFromNames ROP request buffer ([MS-OXCROPS] section 2.2.8.1) from the client, the server parses the buffer. The server responds with a RopGetPropertyIdsFromNames ROP response buffer. For details about how the server parses buffers and processes ROPs, see [MS-OXCROPS] section 3.2.5.1. For details about how the server formats buffers for the response, see [MS-OXCROPS] section 3.2.5.2.

If the PropertyNameCount field of the ROP request buffer is zero, and the RopGetPropertyIdsFromNames ROP ([MS-OXCROPS] section 2.2.8.1) is acting on a Logon object, the server MUST enumerate all property IDs that are registered for named properties. Otherwise, the server MUST, for each entry in the PropertyNames field of the ROP request buffer, follow this procedure:

  1. If the GUID field of the PropertyName structure ([MS-OXCDATA] section 2.6.1) in the ROP request buffer specifies the PS_MAPI property set, the returned property ID is obtained from the LID field. Otherwise, if the GUID field specifies the PS_INTERNET_HEADERS property set and the Kind field of the PropertyName structure is set to 0x01, coerce the value of the Name field to all lowercase. Property sets are specified in [MS-OXPROPS] section 1.3.2.

  2. Find the property ID registered for the named property that matches the PropertyName structure as follows:

    • If the Kind field is set to 0x01, the named property has a property name that matches the value of the Name field of the PropertyName structure.

    • If the Kind field is set to 0x00, the named property has a LID that matches the value of the LID field of the PropertyName structure.

  3. For unfound rows, the returned property ID MUST be 0x0000 unless all of the following conditions are true:

    • The Flags field of the ROP request buffer is set to 0x02.

    • The user has permission to create new entries.

    • The server-imposed limit on property ID mappings specified later in this section hasn't yet been reached.

  4. If the above conditions in step three are all met, a new property ID is registered for the named property. The newly assigned property ID MUST be unique in that it MUST NOT be assigned to another named property and MUST NOT be equal to 0xFFFF. The newly assigned property ID MUST be greater than 0x8000.

Because only 32,767 property IDs are available (15 significant bits), the server MUST impose a limit of at most 32,767 on the total number of registered property IDs. If the client attempts to register additional property IDs and the server has reached this limit, then the server MUST return OutOfMemory (0x8007000E) in the ReturnValue field of the ROP response buffer.