IPropertyStorage::ReadPropertyNames

Retrieves any existing string names for the specified property identifiers.

HRESULT ReadPropertyNames(
  ULONG cpropid,         //Number of elements in rgpropid
  PROPID const  rgpropid[],  //Property identifiers for which names 
                             //are to be retrieved
  LPWSTR rglpwstrName[]  //Array of returned string names
);
 

Parameters

cpropid
[in] Number of elements on input of the array rgpropid. May legally be zero, though this is a no-op, reading no property names.
rgpropid[]
[in] Array of property identifiers for which names are to be retrieved.
rglpwstrName[]
[in, out] Caller-allocated array of size cpropid of LPWSTRs. On return, the implementation fills in this array. A given entry contains either the corresponding string name of a property identifier or NULL if the property identifier has no string name.

Each LPWSTR member of the array should be freed using CoTaskMemFree.

Return Values

This method supports the standard return value E_UNEXPECTED, as well as the following:

S_OK
One or more string names were retrieved and all members of rglpwstrName are valid (either NULL or a valid LPWSTR).
S_FALSE
No string names were retrieved because none of the requested property identifiers have string names presently associated with them in this property storage object (this result does not address whether the given property identifiers presently exist in the set).
STG_E_INVALIDHEADER
The property name dictionary was not found.
STG_E_READFAULT
Error reading the storage.
STG_E_ACCESSDENIED
The requested access to the property storage object has been denied. No string names were retrieved.
STG_E_INSUFFICIENTMEMORY
There is not sufficient memory to perform this operation. No string names were retrieved.
STG_E_INVALIDPARAMETER
A parameter is invalid. No string names were retrieved.
HRESULT_FROM_WIN32(ERROR_NO_UNICODE_TRANSLATION)
There was a failed attempt to translate a Unicode string to or from Ansi.

Remarks

For each property identifier in the list of property identifiers supplied in the rgpropid array, IPropertyStorage::ReadPropertyNames retrieves the corresponding string name, if there is one. String names are created either by specifying the names in calls to IPropertyStorage::WriteMultiple when you are creating the property, or through a call to IPropertyStorage::WritePropertyNames. In any case, the string name is optional; all properties must have a property identifier.

String names mapped to property identifiers must be unique within the set.

QuickInfo

  Windows NT: Use version 4.0 or later.
  Windows: Use Windows 95 or later. Available as a redistributable for Windows 95.
  Windows CE: Unsupported.
  Header: Declared in objidl.h.

See Also

IPropertyStorage::WritePropertyNames, IPropertyStorage::WriteMultiple