IMsgStore::OpenEntry
The IMsgStore::OpenEntry method opens a folder or message and returns an interface pointer for further access.
Quick Info
See IMsgStore : IMAPIProp.
HRESULT OpenEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
ULONG ulFlags,
ULONG FAR * lpulObjType,
LPUNKNOWN FAR * lppUnk
);
Parameters
-
cbEntryID
-
[in] Count of bytes in the entry identifier pointed to by the lpEntryID parameter.
-
lpEntryID
-
[in] Pointer to the entry identifier of the object to open, or NULL. If lpEntryID is set to NULL, OpenEntry opens the root folder for the message store.
-
lpInterface
-
[in] Pointer to the interface identifier (IID) representing the interface to be used to access the opened object. Passing NULL results in the object's standard interface being returned which is IMAPIFolder for folders and IMessage for messages.
-
ulFlags
-
[in] Bitmask of flags that controls how the object is opened. The following flags can be used:
-
MAPI_BEST_ACCESS
-
Requests that the object be opened with the maximum network permissions allowed for the user and the maximum client application access. For example, if the client has read/write access, the object should be opened with read/write access; if the client has read-only access, the object should be opened with read-only access.
-
MAPI_DEFERRED_ERRORS
-
Allows OpenEntry to return successfully, possibly before the object is fully accessible to the calling client. If the object is not accessible, making a subsequent object call can result in an error.
-
MAPI_MODIFY
-
Requests read/write access. By default, objects are opened with read-only access, and clients should not work on the assumption that read/write access has been granted.
-
lpulObjType
-
[out] Pointer to the type of the opened object.
-
lppUnk
-
[out] Pointer to a pointer to the opened object.
Return Values
-
S_OK
-
The call succeeded and has returned the expected value or values.
-
MAPI_E_NO_ACCESS
-
An attempt was made to modify a read-only object or to access an object for which the user has insufficient permissions.
Remarks
The IMsgStore::OpenEntry method opens a folder or message and returns a pointer to an interface that can be used for further access.
Notes to Callers
Folders and messages are automatically opened with read-only access, unless you set the MAPI_MODIFY or MAPI_BEST_ACCESS flag in the ulFlags parameter. Setting one of these flags does not guarantee a particular type of access; the permissions that you are granted depends on the message store provider, your access level, and the object. To determine the access level of the opened object, retrieve its PR_ACCESS_LEVEL property.
Although IMsgStore::OpenEntry can be used to open any folder or message, it is usually faster to use IMAPIContainer::OpenEntry if you have access to the folder containing the folder or message to be opened.
Check the value returned in the lpulObjType parameter to determine that the object type returned is what you expected. If the object type is not the expected type, cast the pointer from the lppUnk parameter to a pointer of the appropriate type. For example, if you are opening a folder, cast lppUnk to a pointer of type LPMAPIFOLDER.
See Also
IMAPIContainer::OpenEntry