3.1.4.1.15 NspiModLinkAtt (Opnum 14)

The NspiModLinkAtt method modifies the values of a specific property of a specific row in the address book. This protocol only supports modifying the value of the PidTagAddressBookMember property ([MS-OXOABK] section 2.2.6.1) of an address book object with display type DT_DISTLIST and the PidTagAddressBookPublicDelegates property ([MS-OXOABK] section 2.2.5.5) of an address book object with display type DT_MAILUSER.

 long NspiModLinkAtt(
   [in] NSPI_HANDLE hRpc,
   [in] DWORD dwFlags,
   [in] DWORD ulPropTag,
   [in] DWORD dwMId,
   [in] BinaryArray_r* lpEntryIds
 );

hRpc: An RPC context handle, as specified in section 2.2.10.

dwFlags: A DWORD [MS-DTYP] value that contains a set of bit flags. The server MUST ignore values other than the bit flag fDelete.

ulPropTag: A DWORD value. Contains the proptag of the property that the client wants to modify.

dwMId: A DWORD value that contains the Minimal Entry ID of the address book row that the client wants to modify.

lpEntryIds: A BinaryArray_r value. Contains a list of EntryIDs to be used to modify the requested property on the requested address book row. These EntryIDs can be either Ephemeral Entry IDs or Permanent Entry IDs or both.

Return Values: The server returns a long value that specifies the return status of the method.

Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying RPC protocol, as specified in [MS-RPCE].

Server Processing Rules: Upon receiving this message, the server MUST process the data from the message subject to the following constraints:

  1. If the server returns any return value other than Success (0x00000000), the server MUST NOT modify any properties of any objects in the address book.<8>

  2. The server MAY make additional validations, as described in section 5). If the server chooses to limit the visibility of data based on these validations, the server MUST proceed as if that data did not exist in the address book.

  3. If the input parameter ulPropTag does not specify a proptag the server recognizes, the server MUST return NotFound.

  4. If the server is unable to locate the object specified by the input parameter dwMId, the server MUST return the value InvalidParameter (0x80070057).

  5. If the server is able to locate the object, but will not allow modifications to the object due to its display type, the server MUST NOT modify any properties of any objects in the address book, and the server MUST return the value AccessDenied (0x80070005).

  6. If the input parameter dwFlags contains the bit value fDelete, the server MUST remove all values specified by the input parameter lpEntryIDs from the property specified by ulPropTag for the object specified by input parameter dwMId. The server MUST ignore any values specified by lpEntryIDs that are not present on the object specified by dwMId.

  7. If the input parameter dwFlags does not contain the bit value fDelete, the server MUST add all values specified by the input parameter lpEntryIDs to the property specified by ulPropTag for the object specified by the input parameter dwMId. The server MUST ignore any values specified by lpEntryIDs that are already present on the object specified by dwMId.

  8. If the server is unable to apply the modifications specified, the server MUST return the value AccessDenied (0x80070005).

  9. If no other return values have been specified by these constraints, the server MUST return the return value Success (0x00000000).