Important: |
---|
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist. |
The GetIDsFromNamesmethod 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 rgszPropNamesarray.
- rgszPropNames
-
[in] Property names in a string array. Properties must be of the same data type.
Note: Property names are case insensitive, 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_CREATEoption, 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_CREATEflag 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_CREATEflag is set.
Note: If GetIDsFromNamesfails to find an index for a property ID, then the following value is returned in rgPropIDs. If you do not specify any flags, then GetIDsFromNamesreturns the property ID if it exists, otherwise it returns PIMPR_INVALID_IDin rgPropIDs.
Option Value Description PIMPR_INVALID_ID
0xFFFF
Property ID not found.
- rgPropIDs
-
[out] An array of property ID's. For information on CEPROPID, see CeOpenStream (EDB).
Return Value
This method returns the following:
- S_OK
-
The method completed successfully.
- S_FAIL
-
The method call failed.
- E_INVALIDARG
-
When defining ulFlags, PIM_CREATEwas specified without also specifying a valid data type.
- HRESULT_FROM_WIN32(GetLastError())
-
Maps the last WIN32 error value into an HRESULT.
Remarks
The GetIDsFromNamesmethod is based on IMAPIProp::GetIDsFromNames.
Calling GetIDsFromNamesmultiple times for the same property name produces the same property ID.
Named properties must be of one of the types listed in the following table.
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. |
Copy Code | |
---|---|
WCHAR *rgszNamedProps[3] = {0}; CEPROPID rgPropIDs[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, rgPropIDs); |
Code Example
The following code example demonstrates how to use GetIDsFromNames. All of the named properties can be used with all of PIM item types. Property names are not case sensitive. To get/set the named properties, call IItem::GetPropsand IItem::SetProps.
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. |
Copy Code | |
---|---|
HRESULT CreateNamedPropExample(IPOutlookApp2 *pPoom, OlItemType olItemType) { HRESULT hr = E_FAIL; WCHAR * rgszNamedProps[3] = {0}; CEPROPID rgPropIds[3] = {0}; // Case 1: Create three named properties of type String. 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 named properties of type Integer. rgszNamedProps[0] = L"Height"; rgszNamedProps[1] = L"Weight"; hr = pPoom->GetIDsFromNames(2, rgszNamedProps, PIM_CREATE | CEVT_I4, rgPropIds); // Case 3: Create one named property of type indexed uint, that is not replicated when an item is copied by using IItem::Copy. rgszNamedProps[0] = L"RecordId"; hr = pPoom->GetIDsFromNames(1, rgszNamedProps, PIM_CREATE | PIM_INDEXED | PIM_DONTREPLICATE | CEVT_UI4, rgPropIds); return hr; } |
Remarks
Property ID's are of type CEPROPID, which is defined in the Windbase.h header file as a DWORD (unsigned long int). The two high-order bytes contain the identifier, and the two low-order bytes contain the type. For a list of supported types, see the CEVALUNIONunion in Windbase.h header file.
For example, Case 1 in the above sample code produces the following three Property IDs:
Copy Code | |
---|---|
2147549215 (1000000000000001 0000000000011111) 2147614751 (1000000000000010 0000000000011111) 2147680287 (1000000000000011 0000000000011111) |
Since IPOutlookApp2descends from IPOutlookApp, you can initialize your POOM Session with a pointer to IID_IPOutlookApp2instead of IID_IPOutlookApp.
For your project to compile properly, you must add the
statement
#include <pimstore.h>
to your source file's list
of pre-processor directives, and you must add pimstore.lib to the
project's list of Additional Dependencies (
Project Properties>
Configuration Properties>
Linker>
Input>
Additional Dependencies).
For your project to link properly, you must add the following two statements to the beginning of your source file's list of pre-processor directives:
Copy Code | |
---|---|
#include <objbase.h> #include <initguid.h> |
Requirements
Header | pimstore.h |
Library | Pimstore.lib |
Windows Mobile | Pocket PC for Windows Mobile Version 5.0 and later, Smartphone for Windows Mobile Version 5.0 and later |