ScRelocProps

Applies to: Outlook 2013 | Outlook 2016

Adjusts the pointers in an SPropValue array after the array and its data have been copied or moved to a new location.

Property Value
Header file:
Mapidefs.h
Implemented by:
MAPI
Called by:
Client applications and service providers
SCODE ScRelocProps(
  int cprop,
  LPSPropValue rgprop,
  LPVOID pvBaseOld,
  LPVOID pvBaseNew,
  ULONG FAR * pcb
);

Parameters

cprop

[in] Count of properties in the array pointed to by the rgprop parameter.

rgprop

[in] Pointer to an array of SPropValue structures for which pointers are to be adjusted.

pvBaseOld

[in] Pointer to the original base address of the array pointed to by the rgprop parameter.

pvBaseNew

[in] Pointer to the new base address of the array pointed to by the rgprop parameter.

pcb

[in, out] Optional pointer to the size, in bytes, of the array indicated by the pvBaseNew parameter. If not NULL, the pcb parameter is set to the number of bytes stored in the pvD parameter.

Return value

S_OK

Pointers were adjusted successfully.

MAPI_E_INVALID_PARAMETER

One or both parameters were invalid, or an unknown property type was encountered.

Remarks

The ScRelocProps function operates on the assumption that the property value array for which pointers are adjusted was originally allocated in a single call similar to a call to the ScCopyProps function. If a client application or service provider is working with a property value that is built from disjointed blocks of memory, it should use ScCopyProps to copy properties instead.

ScRelocProps is used to maintain the validity of pointers in an SPropValue array. To maintain pointers' validity when writing such an array to and reading it from a disk, perform the following operations:

  1. Before writing the array and data to a disk, call ScRelocProps on the array with the pvBaseNew parameter pointing to some standard value zero, for instance.

  2. After reading the array and data from a disk, call ScRelocProps on the array with the pvBaseOld parameter equal to the same standard value used in Step 1. The array and data must be read into a buffer created with a single allocation.

  3. The pcb parameter to ScRelocProps is optional.

See also

MAPIAllocateBuffer

ScCountProps

ScDupPropset

ScRelocNotifications