IPOutlookApp2::GetIDsFromNames
The GetIDsFromNames method creates unique property ID's for named properties, as well as queries for the existence of, and gets a particular named property.
Syntax
HRESULT GetIDsFromNames(
ULONG cPropNames,
LPCWSTR const * rgszPropNames,
ULONG ulFlags,
CEPROPID * rgPropIDs
);
Parameters
cPropNames
[in] The number of property names passed in the rgszPropNames array.rgszPropNames
[in] Property names in a string array. Properties must be of the same data type.Note Property names are case insensitive, are limited to 255 characters in length, and cannot include the following special characters: ,;{}()[].
ulFlags
[in] Bitmask of flags that indicates how the named property is created. The following table shows the options the parameter can take. These are combined with the bitwise OR.Option Value Description PIM_CREATE 0x010000 Creates the named property if it does not already exist. If you use the PIM_CREATE option, then you must combine the ulFlags bitmask (using the bitwise OR) with one of the data types listed below. PIM_INDEXED 0x200000 Specifies whether the named property should be indexed for faster Find functionality. Used only if the PIM_CREATE flag is set.
PIM_DONTREPLICATE 0x400000 Specifies whether the named property should not be copied along with the rest of the item's properties when a copy of the item is made. Used only if the PIM_CREATE flag is set.
Note If GetIDsFromNames fails to find an index for a property ID, then the following value is returned in rgPropIDs.
If you do not specify any flags, then GetIDsFromNames returns the property ID if it exists, otherwise it returns PIMPR_INVALID_ID in rgPropIDs.
Option Value Description PIMPR_INVALID_ID 0xFFFF Property ID not found. rgPropIDs
[out] An array of property ID's.
Return Values
This method returns the following:
- S_OK
The method completed successfully. - S_FAIL
The method call failed. - E_INVALIDARG
When defining ulFlags, PIM_CREATE was specified without also specifying a valid data type. - HRESULT_FROM_WIN32(GetLastError())
Maps the last WIN32 error value into an HRESULT.
Remarks
The GetIDsFromNames method is based on IMAPIProp::GetIDsFromNames.
Calling GetIDsFromNames multiple times for the same property name produces the same property ID.
Named properties must of one of the types listed in the following table. For more information, see EDB Data Types and Size Limits.
Data Type | Description |
---|---|
CEVT_BLOB | BLOB structure |
CEVT_BOOL | Boolean value |
CEVT_FILETIME | FILETIME structure |
CEVT_I2 | 16-bit signed integer |
CEVT_I4 | 32-bit signed integer |
CEVT_LPWSTR | Null-terminated string |
CEVT_R8 | 64-bit float |
CEVT_UI2 | 16-bit unsigned integer |
CEVT_UI4 | 32-bit unsigned integer |
Code Example
The following code example demonstrates how to create three named properties.
Note To make the following code example easier to read, security checking and error handling are not included. This code example should not be used in a release configuration unless it has been modified to include them.
WCHAR *rgszNamedProps[3] = {0};
CEPROPID rgPropIDs1[3] = {0};
rgszNamedProps[0] = L"Blood Group";
rgszNamedProps[1] = L"Favorite Book";
rgszNamedProps[2] = L"Pet";
hr = m_polApp->GetIDsFromNames(3, rgszNamedProps,PIM_CREATE|CEVT_LPWSTR, rgPropIDsGet);
Code Example
The following code example demonstrates how to use GetIDsFromNames.
Note To make the following code example easier to read, security checking and error handling are not included. This code example should not be used in a release configuration unless it has been modified to include them.
HRESULT CreateNamedPropExample(IPOutlookApp2 *pPoom, OlItemType olItemType)
{
// All the named properties can be used for all PIM items.
// Note that property names are not case sensitive.
// To get/set the named properties, call GetProps/SetProps on the IItem.
HRESULT hr = E_FAIL;
WCHAR *rgszNamedProps[3] = {0};
CEPROPID rgPropIds[3] = {0};
// Case 1: Create three string named props.
rgszNamedProps[0] = L"Blood Group";
rgszNamedProps[1] = L"Favorite Book";
rgszNamedProps[2] = L"Pet";
hr = pPoom->GetIDsFromNames(3, rgszNamedProps, PIM_CREATE | CEVT_LPWSTR, rgPropIds);
// Case 2: Create two int props.
rgszNamedProps[0] = L"Height";
rgszNamedProps[1] = L"Weight";
hr = pPoom->GetIDsFromNames(2, rgszNamedProps, PIM_CREATE | CEVT_I4, rgPropIds);
// Case 3: Create one indexed uint prop that is not replicated when an item
// is copied with the Copy function.
rgszNamedProps[0] = L"RecordId";
hr = pPoom->GetIDsFromNames(1, rgszNamedProps, PIM_CREATE | PIM_INDEXED | PIM_DONTREPLICATE | CEVT_UI4, rgPropIds);
// Case 4: Attempt to re-create a named property.
rgszNamedProps[0] = L"PET";
hr = pPoom->GetIDsFromNames(1, rgszNamedProps, PIM_CREATE | PIM_INDEXED | PIM_DONTREPLICATE | CEVT_UI4, rgPropIds);
// The propid returned will be the same one that was returned for case 1.
// (ie you canmt re-create the item.
return hr;
}
Requirements
Pocket PC: Windows Mobile Version 5.0 and later
Smartphone: Windows Mobile Version 5.0 and later
OS Versions: Windows CE 5.01 and later
Header: pimstore.h
Library: pimstore.lib
See Also
IPOutlookApp2 | IMAPIProp::GetIDsFromNames | IPOutlookApp | Pocket Outlook Object Model API Interfaces | Pocket Outlook Object Model API Enumerations
Send Feedback on this topic to the authors