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