Last modified: July 23, 2011

Applies to: Outlook

Retrieves the access level and status for one or more of the object's properties.

HRESULT HrGetPropAccess(
  LPSPropTagArray FAR * lppPropTagArray,
  ULONG FAR * FAR * lprgulAccess


[in, out] On input, an array of property tags that indicate the properties for which to retrieve access levels and status; otherwise, a pointer to NULL, which indicates that HrGetPropAccess should retrieve access levels and status for all properties. On output, an array of property tags for which access and status flags were retrieved. The flags are stored in the array pointed to by the lprgulAccess parameter.


[out] A pointer to an array of flag bitmasks. Each bitmask indicates the access levels or status, or both, for each of the properties identified in the array pointed to by the lpPropTagArray parameter. The two arrays are positional in that the first bitmask that lprgulAccess points to describes the first property that lpPropTagArray points to, and so on. For each property tag, the following flags can be set:

Access-level flag

Status flag

IPROP_READONLY, which indicates that the property cannot be modified.

IPROP_CLEAN, which indicates that the property has not been modified.

IPROP_READWRITE, which indicates that the property can be modified.

IPROP_DIRTY, which indicates that the property has been modified.


The access level and status flags for the properties were successfully returned.

The IPropData::HrGetPropAccess method retrieves a set of flags that indicates the access level and status for one or more properties.

You can use HrGetPropAccess for the following purposes:

  • To determine whether a client changed or deleted a writable property.

  • To prevent a client from changing or deleting a property by using the IMAPIProp methods.

If one of the properties in the property tag array pointed to by lppPropTagArray has been deleted, HrGetPropAccess sets the array entry to 0 on output. If you set lppPropTagArray to NULL and one of the object's properties has been deleted, the deleted property is returned in the array.

If a property has been modified, its IPROP_DIRTY flag is set in the corresponding entry in the array that lprgulAccess points to. Neither IPROP_READONLY nor IPROP_READWRITE will be set.

If a property has not been modified or deleted, only the IPROP_READONLY or IPROP_READWRITE flag will be set.