The IMAPIProp::GetPropList method returns property tags for all properties.
See IMAPIProp : IUnknown.
HRESULT GetPropList(
ULONG ulFlags,
LPSPropTagArray FAR * lppPropTagArray
);
The IMAPIProp::GetPropList method retrieves the property tag for each property currently supported by an object. If the object does not currently support any properties, GetPropList returns a property tag array with the cValues member set to zero.
The scope of properties returned by GetPropList varies from provider to provider. Some service providers exclude those properties for which the caller does not have access. All providers return properties of type PT_OBJECT.
If the object does not support Unicode, GetPropList returns MAPI_E_BAD_CHARWIDTH, even if there are no string properties defined for the object.
Remote transport providers implement GetPropList exactly as specified here. There are no special concerns. Your implementation should, of course, return the same list of properties as supported by the GetProps method.
Call the MAPIFreeBuffer function to free the property tag array pointed to by lppPropTagArray.