Server-side specific objects init/release routines. More...
#include <ctype.h>
#include "mapiproxy/dcesrv_mapiproxy.h"
#include "mapiproxy/libmapiproxy/libmapiproxy.h"
#include "mapiproxy/libmapiproxy/fault_util.h"
#include "mapiproxy/libmapiserver/libmapiserver.h"
#include "mapiproxy/libmapistore/mapistore_nameid.h"
#include "libmapi/property_tags.h"
#include "libmapi/property_altnames.h"
#include "dcesrv_exchange_emsmdb.h"
Functions | |
_PUBLIC_ enum mapistore_error | emsmdbp_folder_delete (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent_folder, uint64_t fid, uint8_t flags) |
_PUBLIC_ enum mapistore_error | emsmdbp_folder_delete_indexing_records (struct mapistore_context *mstore_ctx, uint32_t context_id, char *username, uint64_t fid, uint64_t *deleted_fmids, uint32_t deleted_fmids_count, uint8_t flags) |
enum MAPISTATUS | emsmdbp_folder_get_recursive_folder_count (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *folder, uint32_t *row_countp) |
_PUBLIC_ uint32_t | emsmdbp_get_contextID (struct emsmdbp_object *object) |
char * | emsmdbp_get_owner (struct emsmdbp_object *object) |
bool | emsmdbp_is_mailboxstore (struct emsmdbp_object *object) |
bool | emsmdbp_is_mapistore (struct emsmdbp_object *object) |
_PUBLIC_ enum MAPISTATUS | emsmdbp_object_attach_sharing_metadata_XML_file (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *sharing_object) |
_PUBLIC_ struct emsmdbp_object * | emsmdbp_object_attachment_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, uint64_t messageID, struct emsmdbp_object *parent) |
_PUBLIC_ int | emsmdbp_object_copy_properties (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *source_object, struct emsmdbp_object *target_object, struct SPropTagArray *excluded_properties, bool deep_copy) |
_PUBLIC_ enum MAPISTATUS | emsmdbp_object_create_folder (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent_folder, TALLOC_CTX *mem_ctx, uint64_t fid, struct SRow *rowp, bool force_container_class, struct emsmdbp_object **new_folderp) |
static int | emsmdbp_object_destructor (void *data) |
_PUBLIC_ struct emsmdbp_object * | emsmdbp_object_folder_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, uint64_t folderID, struct emsmdbp_object *parent_object) |
_PUBLIC_ struct emsmdbp_object * | emsmdbp_object_ftcontext_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent) |
_PUBLIC_ struct emsmdbp_object * | emsmdbp_object_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent_object) |
_PUBLIC_ struct emsmdbp_object * | emsmdbp_object_mailbox_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, const char *essDN, bool mailboxstore) |
_PUBLIC_ struct emsmdbp_object * | emsmdbp_object_message_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, uint64_t messageID, struct emsmdbp_object *parent) |
_PUBLIC_ enum MAPISTATUS | emsmdbp_object_open_folder_by_fid (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *context_object, uint64_t fid, struct emsmdbp_object **folder_object_p) |
static enum MAPISTATUS | emsmdbp_object_sharing_metadata_property (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *sharing_object, struct Binary_r **attach_bin, TALLOC_CTX *mem_ctx) |
static enum MAPISTATUS | emsmdbp_object_sharing_metadata_providers_node (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *sharing_object, char *remote_uid, char *remote_store_uid, char *target_recipients, char **providers_node, TALLOC_CTX *mem_ctx) |
static enum MAPISTATUS | emsmdbp_object_sharing_metadata_recipients_attr (struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *sharing_object, char **target_recipients_attr, TALLOC_CTX *mem_ctx) |
_PUBLIC_ struct emsmdbp_object * | emsmdbp_object_stream_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent) |
_PUBLIC_ struct emsmdbp_object * | emsmdbp_object_synccontext_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent_object) |
_PUBLIC_ enum MAPISTATUS | emsmdbp_object_table_get_recursive_row_props (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *context_object, DATA_BLOB *datablob, struct SPropTagArray *properties, uint64_t current_fid, int64_t *remaining, uint32_t *count) |
_PUBLIC_ struct emsmdbp_object * | emsmdbp_object_table_init (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct emsmdbp_object *parent) |
static void * | get_emsmdbp_data (enum MAPITAGS ul_prop_tag, struct SPropTagArray *s_prop_tag_array, void **data_pointers, enum MAPISTATUS *retvals) |
Server-side specific objects init/release routines.
_PUBLIC_ enum mapistore_error emsmdbp_folder_delete | ( | struct emsmdbp_context * | emsmdbp_ctx, |
struct emsmdbp_object * | parent_folder, | ||
uint64_t | fid, | ||
uint8_t | flags | ||
) |
Delete a folder.
emsmdbp_ctx | pointer to the emsmdbp context |
parent_folder | the parent folder |
fid | the folder identifier to delete from parent_folder |
flags | the delete flags. |
Possible values for flags are:
References emsmdbp_folder_delete_indexing_records(), emsmdbp_get_contextID(), emsmdbp_get_owner(), emsmdbp_is_mailboxstore(), emsmdbp_is_mapistore(), openchangedb_delete_folder(), openchangedb_get_mapistoreURI(), and oxosfld_is_special_folder().
Referenced by EcDoRpc_RopDeleteFolder(), and EcDoRpc_RopSyncImportDeletes().
_PUBLIC_ enum mapistore_error emsmdbp_folder_delete_indexing_records | ( | struct mapistore_context * | mstore_ctx, |
uint32_t | context_id, | ||
char * | username, | ||
uint64_t | fid, | ||
uint64_t * | deleted_fmids, | ||
uint32_t | deleted_fmids_count, | ||
uint8_t | flags | ||
) |
Delete the fmids from a folder in the indexing database.
mstore_ctx | pointer to the mapistore context |
context_id | the context identifier |
username | the owner of the folder to delete its entries |
fid | the folder identifier |
deleted_fmid | the array of child fmids from the folder |
deleted_fmid_count | the number of deleted_fmids |
flags | the delete flags. See emsmdbp_folder_delete for details. |
Referenced by emsmdbp_folder_delete().
enum MAPISTATUS emsmdbp_folder_get_recursive_folder_count | ( | struct emsmdbp_context * | emsmdbp_ctx, |
struct emsmdbp_object * | folder, | ||
uint32_t * | row_countp | ||
) |
Return the full number of folders within specified folder's hierarchy
emsmdbp_ctx | pointer to the emsmdbp context |
folder | pointer to the emsmdb folder to start the count from |
row_countp | pointer on the number of folders to return |
References emsmdbp_get_contextID(), emsmdbp_object_open_folder_by_fid(), mapi_handles_add(), and mapi_handles_delete().
Referenced by EcDoRpc_RopGetHierarchyTable().
_PUBLIC_ uint32_t emsmdbp_get_contextID | ( | struct emsmdbp_object * | object | ) |
Return the contextID associated to a handle
object | pointer to the emsmdp object |
Referenced by EcDoRpc_RopCopyFolder(), EcDoRpc_RopCreateAttach(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopDeleteMessages(), EcDoRpc_RopFindRow(), EcDoRpc_RopModifyPermissions(), EcDoRpc_RopModifyRecipients(), EcDoRpc_RopOpenAttach(), EcDoRpc_RopOpenEmbeddedMessage(), EcDoRpc_RopReloadCachedInformation(), EcDoRpc_RopRemoveAllRecipients(), EcDoRpc_RopResetTable(), EcDoRpc_RopRestrict(), EcDoRpc_RopSaveChangesMessage(), EcDoRpc_RopSetColumns(), EcDoRpc_RopSetMessageReadFlag(), EcDoRpc_RopSortTable(), EcDoRpc_RopSubmitMessage(), EcDoRpc_RopSyncImportDeletes(), EcDoRpc_RopSyncImportMessageChange(), EcDoRpc_RopSyncImportMessageMove(), EcDoRpc_RopSyncImportReadStateChanges(), EcDoRpc_RopTransportSend(), emsmdbp_folder_delete(), emsmdbp_folder_get_recursive_folder_count(), emsmdbp_object_attach_sharing_metadata_XML_file(), emsmdbp_object_create_folder(), emsmdbp_object_destructor(), emsmdbp_object_sharing_metadata_recipients_attr(), emsmdbp_object_table_get_recursive_row_props(), oxcfxics_push_folderChange(), and oxcfxics_push_messageChange().
char* emsmdbp_get_owner | ( | struct emsmdbp_object * | object | ) |
Convenience function to determine the owner of an object
object | pointer to the emsmdp object |
Referenced by EcDoRpc_RopDeleteMessages(), EcDoRpc_RopSaveChangesMessage(), EcDoRpc_RopSubmitMessage(), EcDoRpc_RopSyncGetTransferState(), EcDoRpc_RopSyncImportDeletes(), EcDoRpc_RopSyncImportHierarchyChange(), EcDoRpc_RopSyncImportMessageChange(), EcDoRpc_RopSyncImportMessageMove(), EcDoRpc_RopSyncImportReadStateChanges(), and emsmdbp_folder_delete().
bool emsmdbp_is_mailboxstore | ( | struct emsmdbp_object * | object | ) |
Convenient function to determine whether specified mapi_handles refers to object within mailbox or public folders store.
object | pointer to the emsmdp object |
Referenced by emsmdbp_folder_delete().
bool emsmdbp_is_mapistore | ( | struct emsmdbp_object * | object | ) |
Convenient function to determine whether specified object is using mapistore or not
object | pointer to the emsmdp object |
Referenced by EcDoRpc_RopCopyFolder(), EcDoRpc_RopCreateAttach(), EcDoRpc_RopCreateFolder(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopDeleteMessages(), EcDoRpc_RopEmptyFolder(), EcDoRpc_RopFindRow(), EcDoRpc_RopGetMessageStatus(), EcDoRpc_RopGetPermissionsTable(), EcDoRpc_RopModifyPermissions(), EcDoRpc_RopModifyRecipients(), EcDoRpc_RopOpenAttach(), EcDoRpc_RopOpenEmbeddedMessage(), EcDoRpc_RopReloadCachedInformation(), EcDoRpc_RopRemoveAllRecipients(), EcDoRpc_RopResetTable(), EcDoRpc_RopRestrict(), EcDoRpc_RopSaveChangesMessage(), EcDoRpc_RopSetColumns(), EcDoRpc_RopSetMessageReadFlag(), EcDoRpc_RopSortTable(), EcDoRpc_RopSubmitMessage(), EcDoRpc_RopSyncImportDeletes(), EcDoRpc_RopSyncImportMessageChange(), EcDoRpc_RopSyncImportMessageMove(), EcDoRpc_RopSyncImportReadStateChanges(), EcDoRpc_RopTransportSend(), emsmdbp_folder_delete(), emsmdbp_object_attach_sharing_metadata_XML_file(), emsmdbp_object_copy_properties(), emsmdbp_object_create_folder(), emsmdbp_object_destructor(), oxcfxics_push_folderChange(), and oxcfxics_push_messageChange().
_PUBLIC_ enum MAPISTATUS emsmdbp_object_attach_sharing_metadata_XML_file | ( | struct emsmdbp_context * | emsmdbp_ctx, |
struct emsmdbp_object * | sharing_object | ||
) |
Create a sharing metadata XML file for folder sharing invitation, request and response and store it as attachment in the sharing object. See [MS-OXSHARE] for this kind of messages and [MS-OXSHRMSG] for the XML format.
emsmdbp_ctx | pointer to the emsmdb provider context |
sharing_object | the original sharing message object to dump the XML data from |
References emsmdbp_get_contextID(), emsmdbp_is_mapistore(), emsmdbp_object_attachment_init(), and emsmdbp_object_sharing_metadata_property().
Referenced by EcDoRpc_RopTransportSend().
_PUBLIC_ struct emsmdbp_object* emsmdbp_object_attachment_init | ( | TALLOC_CTX * | mem_ctx, |
struct emsmdbp_context * | emsmdbp_ctx, | ||
uint64_t | messageID, | ||
struct emsmdbp_object * | parent | ||
) |
Initialize a attachment object
mem_ctx | pointer to the memory context |
emsmdbp_ctx | pointer to the emsmdb provider cotnext |
folderID | the folder identifier |
messageID | the message identifier |
parent | emsmdbp object of the parent |
References emsmdbp_object_init().
Referenced by EcDoRpc_RopCreateAttach(), EcDoRpc_RopOpenAttach(), and emsmdbp_object_attach_sharing_metadata_XML_file().
_PUBLIC_ int emsmdbp_object_copy_properties | ( | struct emsmdbp_context * | emsmdbp_ctx, |
struct emsmdbp_object * | source_object, | ||
struct emsmdbp_object * | target_object, | ||
struct SPropTagArray * | excluded_properties, | ||
bool | deep_copy | ||
) |
Copy properties from an object to another object
emsmdbp_ctx | pointer to the emsmdb provider context |
source_object | pointer to the source object |
target_object | pointer to the target object |
excluded_properties | pointer to a SPropTagArray listing properties that must not be copied |
deep_copy | indicates whether subobjects must be copied |
References emsmdbp_is_mapistore().
Referenced by EcDoRpc_RopCopyTo().
_PUBLIC_ enum MAPISTATUS emsmdbp_object_create_folder | ( | struct emsmdbp_context * | emsmdbp_ctx, |
struct emsmdbp_object * | parent_folder, | ||
TALLOC_CTX * | mem_ctx, | ||
uint64_t | fid, | ||
struct SRow * | rowp, | ||
bool | force_container_class, | ||
struct emsmdbp_object ** | new_folderp | ||
) |
Create a folder
emsmdbp_ctx | pointer to the emsmdbp context | |
parent_folder | pointer to parent folder where to create the new folder | |
mem_ctx | pointer to the memory context | |
fid | Folder Identifier to assign the new folder object | |
rowp | the properties to set to the new folder | |
force_container_class | force the usage of Fallback role if we are creating a mapistore root folder and the container class is not available at rowp parameter | |
[out] | new_folderp | location to store new emsmdbp object on success |
References emsmdbp_get_contextID(), emsmdbp_is_mapistore(), emsmdbp_object_folder_init(), and openchangedb_get_fid_by_name().
Referenced by EcDoRpc_RopCreateFolder(), and EcDoRpc_RopSyncImportHierarchyChange().
|
static |
talloc destructor for emsmdbp_objects
data | generic pointer on data |
References emsmdbp_get_contextID(), and emsmdbp_is_mapistore().
Referenced by emsmdbp_object_init().
_PUBLIC_ struct emsmdbp_object* emsmdbp_object_folder_init | ( | TALLOC_CTX * | mem_ctx, |
struct emsmdbp_context * | emsmdbp_ctx, | ||
uint64_t | folderID, | ||
struct emsmdbp_object * | parent_object | ||
) |
Initialize a folder object
mem_ctx | pointer to the memory context |
emsmdbp_ctx | pointer to the emsmdb provider context |
folderID | the folder identifier |
parent | emsmdbp object of the parent folder for this folder |
References emsmdbp_object_init().
Referenced by emsmdbp_object_create_folder(), and emsmdbp_object_open_folder_by_fid().
_PUBLIC_ struct emsmdbp_object* emsmdbp_object_ftcontext_init | ( | TALLOC_CTX * | mem_ctx, |
struct emsmdbp_context * | emsmdbp_ctx, | ||
struct emsmdbp_object * | parent | ||
) |
Initialize a ftcontext object
mem_ctx | pointer to the memory context |
emsmdbp_ctx | pointer to the emsmdb provider cotnext |
whole_store | whether the subscription applies to the specified change on the entire store or stricly on the specified folder/message |
folderID | the folder identifier |
messageID | the message identifier |
parent | emsmdbp object of the parent |
References emsmdbp_object_init().
Referenced by EcDoRpc_RopFastTransferSourceCopyTo(), and EcDoRpc_RopSyncGetTransferState().
_PUBLIC_ struct emsmdbp_object* emsmdbp_object_init | ( | TALLOC_CTX * | mem_ctx, |
struct emsmdbp_context * | emsmdbp_ctx, | ||
struct emsmdbp_object * | parent_object | ||
) |
Initialize an emsmdbp_object
mem_ctx | pointer to the memory context |
emsmdbp_ctx | pointer to the emsmdb provider context |
References emsmdbp_object_destructor().
Referenced by emsmdbp_object_attachment_init(), emsmdbp_object_folder_init(), emsmdbp_object_ftcontext_init(), emsmdbp_object_mailbox_init(), emsmdbp_object_message_init(), emsmdbp_object_stream_init(), emsmdbp_object_synccontext_init(), and emsmdbp_object_table_init().
_PUBLIC_ struct emsmdbp_object* emsmdbp_object_mailbox_init | ( | TALLOC_CTX * | mem_ctx, |
struct emsmdbp_context * | emsmdbp_ctx, | ||
const char * | essDN, | ||
bool | mailboxstore | ||
) |
Initialize a mailbox object
mem_ctx | pointer to the memory context |
emsmdbp_ctx | pointer to the emsmdb provider context |
request | pointer to the Logon MAPI request |
mailboxstore | boolean which specifies whether the mailbox object is a PF store or a private mailbox store |
References emsmdbp_object_init(), openchangedb_get_PublicFolderID(), and openchangedb_get_SystemFolderID().
Referenced by EcDoRpc_RopLogon().
_PUBLIC_ struct emsmdbp_object* emsmdbp_object_message_init | ( | TALLOC_CTX * | mem_ctx, |
struct emsmdbp_context * | emsmdbp_ctx, | ||
uint64_t | messageID, | ||
struct emsmdbp_object * | parent | ||
) |
Initialize a message object
mem_ctx | pointer to the memory context |
emsmdbp_ctx | pointer to the emsmdb provider context |
messageID | the message identifier |
parent | emsmdbp object of the parent |
References emsmdbp_object_init().
Referenced by EcDoRpc_RopCreateMessage(), EcDoRpc_RopOpenEmbeddedMessage(), and EcDoRpc_RopSyncImportMessageChange().
_PUBLIC_ enum MAPISTATUS emsmdbp_object_open_folder_by_fid | ( | TALLOC_CTX * | mem_ctx, |
struct emsmdbp_context * | emsmdbp_ctx, | ||
struct emsmdbp_object * | context_object, | ||
uint64_t | fid, | ||
struct emsmdbp_object ** | folder_object_p | ||
) |
Return the folder object associated to specified folder identified
mem_ctx | pointer to the memory context | |
emsmdbp_ctx | pointer to the emsmdbp context | |
context_object | pointer to current context object | |
fid | pointer to the Folder Identifier to lookup | |
[out] | folder_object_p | location to store emsmdbp object on success |
References emsmdbp_object_folder_init().
Referenced by EcDoRpc_RopCreateFolder(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopOpenFolder(), EcDoRpc_RopSyncImportHierarchyChange(), EcDoRpc_RopSyncImportMessageMove(), emsmdbp_folder_get_recursive_folder_count(), and emsmdbp_object_table_get_recursive_row_props().
|
static |
Create the XML file from the sharing message object and store it as binary property in attach_bin out parameter.
emsmdbp_ctx | pointer to the emsmdb provider cotnext | |
sharing_object | the sharing message object to get the XML data from | |
[out] | attach_bin | pointer to Binary_r property value pointer where the XML data is stored |
mem_ctx | pointer to memory context where the attach_bin is created |
References emsmdbp_object_sharing_metadata_providers_node(), emsmdbp_object_sharing_metadata_recipients_attr(), and get_emsmdbp_data().
Referenced by emsmdbp_object_attach_sharing_metadata_XML_file().
|
static |
Store the Providers node into providers_node out parameter.
emsmdbp_ctx | pointer to the emsmdb provider cotnext | |
sharing_object | the sharing message object to get the XML data from | |
remote_uid | string with the folder id to share, NULL when no required | |
remote_store_uid | string with the mailbox id where the folder belongs to, NULL when non-required | |
target_recipients | the string where the recipients' email addresses separated by semi colons are stored | |
[out] | providers_node | pointer to string where the Providers XML node is stored |
mem_ctx | pointer to memory context where the providers_node is created |
Referenced by emsmdbp_object_sharing_metadata_property().
|
static |
Store the target recipients attribute in out parameter.
emsmdbp_ctx | pointer to the emsmdb provider cotnext | |
sharing_object | the sharing message object to get the XML data from | |
[out] | pointer | to string where the TargetRecipients XML attribute is stored |
mem_ctx | pointer to memory context where the target_recipients_attr is created |
References emsmdbp_get_contextID().
Referenced by emsmdbp_object_sharing_metadata_property().
_PUBLIC_ struct emsmdbp_object* emsmdbp_object_stream_init | ( | TALLOC_CTX * | mem_ctx, |
struct emsmdbp_context * | emsmdbp_ctx, | ||
struct emsmdbp_object * | parent | ||
) |
Initialize a stream object
mem_ctx | pointer to the memory context |
emsmdbp_ctx | pointer to the emsmdb provider cotnext |
property | the stream property identifier |
parent | emsmdbp object of the parent |
References emsmdbp_object_init().
Referenced by EcDoRpc_RopOpenStream().
_PUBLIC_ struct emsmdbp_object* emsmdbp_object_synccontext_init | ( | TALLOC_CTX * | mem_ctx, |
struct emsmdbp_context * | emsmdbp_ctx, | ||
struct emsmdbp_object * | parent_object | ||
) |
Initialize a synccontext object
mem_ctx | pointer to the memory context |
emsmdbp_ctx | pointer to the emsmdb provider cotnext |
whole_store | whether the subscription applies to the specified change on the entire store or stricly on the specified folder/message |
folderID | the folder identifier |
messageID | the message identifier |
parent | emsmdbp object of the parent |
References emsmdbp_object_init(), and openchangedb_get_MailboxReplica().
Referenced by EcDoRpc_RopSyncConfigure(), and EcDoRpc_RopSyncOpenCollector().
_PUBLIC_ enum MAPISTATUS emsmdbp_object_table_get_recursive_row_props | ( | TALLOC_CTX * | mem_ctx, |
struct emsmdbp_context * | emsmdbp_ctx, | ||
struct emsmdbp_object * | context_object, | ||
DATA_BLOB * | datablob, | ||
struct SPropTagArray * | properties, | ||
uint64_t | current_fid, | ||
int64_t * | remaining, | ||
uint32_t * | count | ||
) |
This function process the hierarchy of folders recursively and fill requested rows.
mem_ctx | pointer to the memory context |
emsmdbp_ctx | pointer to the emsmdb context |
context_object | pointer to the context object |
datablob | pointer to the DATA blob to fill |
properties | pointer to the array of properties used to fill a row of the table |
current_fid | the FolderID of the folder to open and process |
remaining | pointer on the remaining rows to process |
count | pointer on the number of rows processed to return |
We currently rely on Outlook asking for 4096 rows to fill this buffer in one operation.
References emsmdbp_get_contextID(), emsmdbp_object_open_folder_by_fid(), mapi_handles_add(), and mapi_handles_delete().
Referenced by EcDoRpc_RopQueryRows().
_PUBLIC_ struct emsmdbp_object* emsmdbp_object_table_init | ( | TALLOC_CTX * | mem_ctx, |
struct emsmdbp_context * | emsmdbp_ctx, | ||
struct emsmdbp_object * | parent | ||
) |
Initialize a table object
mem_ctx | pointer to the memory context |
emsmdbp_ctx | pointer to the emsmdb provider context |
parent | emsmdbp object of the parent |
References emsmdbp_object_init().
Referenced by EcDoRpc_RopGetPermissionsTable(), and EcDoRpc_RopGetRulesTable().
|
static |
Convenience function to extract values from data_pointers safely.
ulPropTag | MAPI property tag |
SPropTagArray | array of property tags |
data_pointers | array with the property values that matches the previous SPropTagArray |
retvals | array of returned value result of getting the property |
Referenced by emsmdbp_object_sharing_metadata_property().
![]() ![]() ![]() |
This content is licensed under the Creative Commons Attribution ShareAlike License v. 3.0: http://creativecommons.org/licenses/by-sa/3.0/ |