<html> <head> <title>MAPIClientLibraries 0.8 API Documentation</title> <link href="doxygen.css" rel="stylesheet" type="text/css"/> <link href="apidocs.css" rel="stylesheet" type="text/css"/> </head> <body> <div id="website"> <div class="header"></div> <div id="middle_side"> <div id="right_side_home"> <!-- Generated by Doxygen 1.5.9 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> </div> <div class="contents"> <h1>libmapi/emsmdb.c File Reference</h1>EMSMDB stack functions. <a href="#_details">More...</a> <p> <code>#include <libmapi/libmapi.h></code><br> <table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct mapi_notify_ctx * </td><td class="memItemRight" valign="bottom"><a class="el" href="emsmdb_8c.html#3ceb606e3d9b8d34e0f243b19d6a8373">emsmdb_bind_notification</a> (TALLOC_CTX *mem_ctx)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct emsmdb_context * </td><td class="memItemRight" valign="bottom"><a class="el" href="emsmdb_8c.html#4e098a9f68087942d1a701ed470de51e">emsmdb_connect</a> (TALLOC_CTX *parent_mem_ctx, struct mapi_session *session, struct dcerpc_pipe *p, struct cli_credentials *cred)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">enum MAPISTATUS </td><td class="memItemRight" valign="bottom"><a class="el" href="emsmdb_8c.html#1b48f67a8136e0bceb930511b026d379">emsmdb_disconnect</a> (struct emsmdb_context *emsmdb_ctx)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="emsmdb_8c.html#4e73dc1cd7f2e88547ccfaed7fe1fa0f">emsmdb_disconnect_dtor</a> (void *data)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">_PUBLIC_ struct emsmdb_info * </td><td class="memItemRight" valign="bottom"><a class="el" href="emsmdb_8c.html#30a51feb44a4df3bbefca6256e3b426d">emsmdb_get_info</a> (struct mapi_session *session)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">enum MAPISTATUS </td><td class="memItemRight" valign="bottom"><a class="el" href="emsmdb_8c.html#da6d4bd3a6c9fe47d33a40c3212c8cb1">emsmdb_get_SPropValue</a> (TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, DATA_BLOB *content, struct SPropTagArray *tags, struct SPropValue **propvals, uint32_t *cn_propvals, uint8_t flag)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="emsmdb_8c.html#63a938e21037ec27d8103e517193c5d0">emsmdb_get_SRow</a> (TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, struct SRow *aRow, struct SPropTagArray *proptags, uint16_t propcount, DATA_BLOB *content, uint8_t flag, uint8_t align)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">_PUBLIC_ void </td><td class="memItemRight" valign="bottom"><a class="el" href="emsmdb_8c.html#5c64d3e12759fe8427b37cc1a56ed06b">emsmdb_get_SRowSet</a> (TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, struct SRowSet *rowset, struct SPropTagArray *proptags, DATA_BLOB *content)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">NTSTATUS </td><td class="memItemRight" valign="bottom"><a class="el" href="emsmdb_8c.html#500b279eff945d3ee9ef15d2f5d53cf2">emsmdb_register_notification</a> (struct NOTIFKEY *notifkey, uint16_t ulEventMask)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">_PUBLIC_ NTSTATUS </td><td class="memItemRight" valign="bottom"><a class="el" href="emsmdb_8c.html#a24c6e837ad69c724900573381d0c52a">emsmdb_transaction</a> (struct emsmdb_context *emsmdb_ctx, struct mapi_request *req, struct mapi_response **repl)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">_PUBLIC_ NTSTATUS </td><td class="memItemRight" valign="bottom"><a class="el" href="emsmdb_8c.html#7f4dfd76879dea2bf003f52d8bce38d3">emsmdb_transaction_null</a> (struct emsmdb_context *emsmdb_ctx, struct mapi_response **res)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const void * </td><td class="memItemRight" valign="bottom"><a class="el" href="emsmdb_8c.html#9af10327453a0da639fd14cd5670ea95">pull_emsmdb_property</a> (TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, uint32_t *offset, enum MAPITAGS tag, DATA_BLOB *data)</td></tr> </table> <hr><h2>Detailed Description</h2> EMSMDB stack functions. <p> <hr><h2>Function Documentation</h2> <a class="anchor" name="3ceb606e3d9b8d34e0f243b19d6a8373"></a><!-- doxytag: member="emsmdb.c::emsmdb_bind_notification" ref="3ceb606e3d9b8d34e0f243b19d6a8373" args="(TALLOC_CTX *mem_ctx)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct mapi_notify_ctx* emsmdb_bind_notification </td> <td>(</td> <td class="paramtype">TALLOC_CTX * </td> <td class="paramname"> <em>mem_ctx</em> </td> <td> ) </td> <td><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Initialize the notify context structure and bind a local UDP port to receive notifications from the server<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mem_ctx</em> </td><td>pointer to the memory context</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>an allocated mapi_notify_ctx structure on success, otherwise NULL </dd></dl> <p>Referenced by <a class="el" href="IMSProvider_8c_source.html#l00305">RegisterNotification()</a>.</p> </div> </div><p> <a class="anchor" name="4e098a9f68087942d1a701ed470de51e"></a><!-- doxytag: member="emsmdb.c::emsmdb_connect" ref="4e098a9f68087942d1a701ed470de51e" args="(TALLOC_CTX *parent_mem_ctx, struct mapi_session *session, struct dcerpc_pipe *p, struct cli_credentials *cred)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct emsmdb_context* emsmdb_connect </td> <td>(</td> <td class="paramtype">TALLOC_CTX * </td> <td class="paramname"> <em>parent_mem_ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct mapi_session * </td> <td class="paramname"> <em>session</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct dcerpc_pipe * </td> <td class="paramname"> <em>p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct cli_credentials * </td> <td class="paramname"> <em>cred</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Establishes a new Session Context with the server on the exchange_emsmdb pipe<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>parent_mem_ctx</em> </td><td>pointer to the memory context </td></tr> <tr><td valign="top"></td><td valign="top"><em>session</em> </td><td>pointer to the MAPI session context </td></tr> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>pointer to the DCERPC pipe </td></tr> <tr><td valign="top"></td><td valign="top"><em>cred</em> </td><td>pointer to the user credentials</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>an allocated emsmdb_context on success, otherwise NULL </dd></dl> </div> </div><p> <a class="anchor" name="1b48f67a8136e0bceb930511b026d379"></a><!-- doxytag: member="emsmdb.c::emsmdb_disconnect" ref="1b48f67a8136e0bceb930511b026d379" args="(struct emsmdb_context *emsmdb_ctx)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum MAPISTATUS emsmdb_disconnect </td> <td>(</td> <td class="paramtype">struct emsmdb_context * </td> <td class="paramname"> <em>emsmdb_ctx</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Destroy the EMSMDB context handle<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>emsmdb_ctx</em> </td><td>pointer to the EMSMDB context</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>MAPI_E_SUCCESS on success, otherwise MAPI error </dd></dl> <p>Referenced by <a class="el" href="emsmdb_8c_source.html#l00156">emsmdb_disconnect_dtor()</a>.</p> </div> </div><p> <a class="anchor" name="4e73dc1cd7f2e88547ccfaed7fe1fa0f"></a><!-- doxytag: member="emsmdb.c::emsmdb_disconnect_dtor" ref="4e73dc1cd7f2e88547ccfaed7fe1fa0f" args="(void *data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int emsmdb_disconnect_dtor </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"> <em>data</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Destructor for the EMSMDB context. Call the EcDoDisconnect function.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>generic pointer to data with mapi_provider information</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>MAPI_E_SUCCESS on success, otherwise -1 </dd></dl> <p>References <a class="el" href="emsmdb_8c_source.html#l00185">emsmdb_disconnect()</a>.</p> <p>Referenced by <a class="el" href="cdo__mapi_8c_source.html#l00107">MapiLogonProvider()</a>.</p> </div> </div><p> <a class="anchor" name="30a51feb44a4df3bbefca6256e3b426d"></a><!-- doxytag: member="emsmdb.c::emsmdb_get_info" ref="30a51feb44a4df3bbefca6256e3b426d" args="(struct mapi_session *session)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_PUBLIC_ struct emsmdb_info* emsmdb_get_info </td> <td>(</td> <td class="paramtype">struct mapi_session * </td> <td class="paramname"> <em>session</em> </td> <td> ) </td> <td><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Retrieves the EMSMDB context server information structure<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>session</em> </td><td>pointer to the MAPI session context</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>the server info structure on success, otherwise NULL </dd></dl> </div> </div><p> <a class="anchor" name="da6d4bd3a6c9fe47d33a40c3212c8cb1"></a><!-- doxytag: member="emsmdb.c::emsmdb_get_SPropValue" ref="da6d4bd3a6c9fe47d33a40c3212c8cb1" args="(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, DATA_BLOB *content, struct SPropTagArray *tags, struct SPropValue **propvals, uint32_t *cn_propvals, uint8_t flag)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum MAPISTATUS emsmdb_get_SPropValue </td> <td>(</td> <td class="paramtype">TALLOC_CTX * </td> <td class="paramname"> <em>mem_ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct loadparm_context * </td> <td class="paramname"> <em>lp_ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">DATA_BLOB * </td> <td class="paramname"> <em>content</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct SPropTagArray * </td> <td class="paramname"> <em>tags</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct SPropValue ** </td> <td class="paramname"> <em>propvals</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint32_t * </td> <td class="paramname"> <em>cn_propvals</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint8_t </td> <td class="paramname"> <em>flag</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Get a SPropValue array from a DATA blob<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mem_ctx</em> </td><td>pointer to the memory context </td></tr> <tr><td valign="top"></td><td valign="top"><em>lp_ctx</em> </td><td>pointer to the loadparm context </td></tr> <tr><td valign="top"></td><td valign="top"><em>content</em> </td><td>pointer to the DATA blob content </td></tr> <tr><td valign="top"></td><td valign="top"><em>tags</em> </td><td>pointer to a list of property tags to lookup </td></tr> <tr><td valign="top"></td><td valign="top"><em>propvals</em> </td><td>pointer on pointer to the returned SPropValues </td></tr> <tr><td valign="top"></td><td valign="top"><em>cn_propvals</em> </td><td>pointer to the number of propvals </td></tr> <tr><td valign="top"></td><td valign="top"><em>flag</em> </td><td>describes the type data</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>MAPI_E_SUCCESS on success </dd></dl> <p>References <a class="el" href="emsmdb_8c_source.html#l00520">pull_emsmdb_property()</a>.</p> <p>Referenced by <a class="el" href="IMAPIProp_8c_source.html#l00059">GetProps()</a>.</p> </div> </div><p> <a class="anchor" name="63a938e21037ec27d8103e517193c5d0"></a><!-- doxytag: member="emsmdb.c::emsmdb_get_SRow" ref="63a938e21037ec27d8103e517193c5d0" args="(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, struct SRow *aRow, struct SPropTagArray *proptags, uint16_t propcount, DATA_BLOB *content, uint8_t flag, uint8_t align)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void emsmdb_get_SRow </td> <td>(</td> <td class="paramtype">TALLOC_CTX * </td> <td class="paramname"> <em>mem_ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct loadparm_context * </td> <td class="paramname"> <em>lp_ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct SRow * </td> <td class="paramname"> <em>aRow</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct SPropTagArray * </td> <td class="paramname"> <em>proptags</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint16_t </td> <td class="paramname"> <em>propcount</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">DATA_BLOB * </td> <td class="paramname"> <em>content</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint8_t </td> <td class="paramname"> <em>flag</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint8_t </td> <td class="paramname"> <em>align</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Get a SRow from a DATA blob<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mem_ctx</em> </td><td>pointer on the memory context </td></tr> <tr><td valign="top"></td><td valign="top"><em>lp_ctx</em> </td><td>pointer on the loadparm context </td></tr> <tr><td valign="top"></td><td valign="top"><em>aRow</em> </td><td>pointer on the returned SRow </td></tr> <tr><td valign="top"></td><td valign="top"><em>proptags</em> </td><td>pointer on a list of property tags to lookup </td></tr> <tr><td valign="top"></td><td valign="top"><em>propcount</em> </td><td>number of SPropValue entries in aRow </td></tr> <tr><td valign="top"></td><td valign="top"><em>content</em> </td><td>pointer on the DATA blob content </td></tr> <tr><td valign="top"></td><td valign="top"><em>flag</em> </td><td>the type data </td></tr> <tr><td valign="top"></td><td valign="top"><em>align</em> </td><td>alignment pad</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>MAPI_E_SUCCESS on success</dd></dl> <dl class="note" compact><dt><b>Note:</b></dt><dd>TODO: We shouldn't have any alignment pad here </dd></dl> <p>References <a class="el" href="emsmdb_8c_source.html#l00520">pull_emsmdb_property()</a>.</p> <p>Referenced by <a class="el" href="IMessage_8c_source.html#l01408">OpenEmbeddedMessage()</a>, and <a class="el" href="IStoreFolder_8c_source.html#l00061">OpenMessage()</a>.</p> </div> </div><p> <a class="anchor" name="5c64d3e12759fe8427b37cc1a56ed06b"></a><!-- doxytag: member="emsmdb.c::emsmdb_get_SRowSet" ref="5c64d3e12759fe8427b37cc1a56ed06b" args="(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, struct SRowSet *rowset, struct SPropTagArray *proptags, DATA_BLOB *content)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_PUBLIC_ void emsmdb_get_SRowSet </td> <td>(</td> <td class="paramtype">TALLOC_CTX * </td> <td class="paramname"> <em>mem_ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct loadparm_context * </td> <td class="paramname"> <em>lp_ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct SRowSet * </td> <td class="paramname"> <em>rowset</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct SPropTagArray * </td> <td class="paramname"> <em>proptags</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">DATA_BLOB * </td> <td class="paramname"> <em>content</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Get a SRowSet from a DATA blob<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mem_ctx</em> </td><td>pointer on the memory context </td></tr> <tr><td valign="top"></td><td valign="top"><em>lp_ctx</em> </td><td>pointer on the loadparm context </td></tr> <tr><td valign="top"></td><td valign="top"><em>rowset</em> </td><td>pointer on the returned SRowSe </td></tr> <tr><td valign="top"></td><td valign="top"><em>proptags</em> </td><td>pointer on a list of property tags to lookup </td></tr> <tr><td valign="top"></td><td valign="top"><em>content</em> </td><td>pointer on the DATA blob content</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>MAPI_E_SUCCESS on success</dd></dl> <dl class="note" compact><dt><b>Note:</b></dt><dd>TODO: this doesn't yet handle the TypedPropertyValue and FlaggedPropertyValueWithTypeSpecified variants </dd></dl> <p>References <a class="el" href="emsmdb_8c_source.html#l00520">pull_emsmdb_property()</a>.</p> <p>Referenced by <a class="el" href="IMAPITable_8c_source.html#l01505">ExpandRow()</a>, <a class="el" href="IMAPITable_8c_source.html#l01215">FindRow()</a>, and <a class="el" href="IMAPITable_8c_source.html#l00233">QueryRows()</a>.</p> </div> </div><p> <a class="anchor" name="500b279eff945d3ee9ef15d2f5d53cf2"></a><!-- doxytag: member="emsmdb.c::emsmdb_register_notification" ref="500b279eff945d3ee9ef15d2f5d53cf2" args="(struct NOTIFKEY *notifkey, uint16_t ulEventMask)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">NTSTATUS emsmdb_register_notification </td> <td>(</td> <td class="paramtype">struct NOTIFKEY * </td> <td class="paramname"> <em>notifkey</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint16_t </td> <td class="paramname"> <em>ulEventMask</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Register for notifications on the server<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>notifkey</em> </td><td>The opaque client-generated context data </td></tr> <tr><td valign="top"></td><td valign="top"><em>ulEventMask</em> </td><td>Notification flags. Exchange completely ignores this value and it should be set to 0</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>NTSTATUS_OK on success, otherwise NT status error </dd></dl> <p>Referenced by <a class="el" href="IMSProvider_8c_source.html#l00305">RegisterNotification()</a>.</p> </div> </div><p> <a class="anchor" name="a24c6e837ad69c724900573381d0c52a"></a><!-- doxytag: member="emsmdb.c::emsmdb_transaction" ref="a24c6e837ad69c724900573381d0c52a" args="(struct emsmdb_context *emsmdb_ctx, struct mapi_request *req, struct mapi_response **repl)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_PUBLIC_ NTSTATUS emsmdb_transaction </td> <td>(</td> <td class="paramtype">struct emsmdb_context * </td> <td class="paramname"> <em>emsmdb_ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct mapi_request * </td> <td class="paramname"> <em>req</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct mapi_response ** </td> <td class="paramname"> <em>repl</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Make a EMSMDB transaction.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>emsmdb_ctx</em> </td><td>pointer to the EMSMDB connection context </td></tr> <tr><td valign="top"></td><td valign="top"><em>req</em> </td><td>pointer to the MAPI request to send </td></tr> <tr><td valign="top"></td><td valign="top"><em>repl</em> </td><td>pointer on pointer to the MAPI reply returned by the server</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>NT_STATUS_OK on success, otherwise NT status error </dd></dl> <p>Referenced by <a class="el" href="IMAPITable_8c_source.html#l01410">Abort()</a>, <a class="el" href="IMessage_8c_source.html#l00994">AbortSubmit()</a>, <a class="el" href="IXPLogon_8c_source.html#l00050">AddressTypes()</a>, <a class="el" href="IStream_8c_source.html#l00902">CloneStream()</a>, <a class="el" href="IMAPITable_8c_source.html#l01609">CollapseRow()</a>, <a class="el" href="IStream_8c_source.html#l00340">CommitStream()</a>, <a class="el" href="IMAPIFolder_8c_source.html#l01020">CopyFolder()</a>, <a class="el" href="IMAPIProp_8c_source.html#l01144">CopyProps()</a>, <a class="el" href="IMAPIProp_8c_source.html#l01260">CopyTo()</a>, <a class="el" href="IStream_8c_source.html#l00650">CopyToStream()</a>, <a class="el" href="IMessage_8c_source.html#l00077">CreateAttach()</a>, <a class="el" href="IMAPITable_8c_source.html#l00689">CreateBookmark()</a>, <a class="el" href="IMAPIFolder_8c_source.html#l00597">CreateFolder()</a>, <a class="el" href="IMAPIFolder_8c_source.html#l00048">CreateMessage()</a>, <a class="el" href="IMessage_8c_source.html#l00162">DeleteAttach()</a>, <a class="el" href="IMAPIFolder_8c_source.html#l00824">DeleteFolder()</a>, <a class="el" href="IMAPIFolder_8c_source.html#l00139">DeleteMessage()</a>, <a class="el" href="IMAPIProp_8c_source.html#l00734">DeletePropertiesNoReplicate()</a>, <a class="el" href="IMAPIProp_8c_source.html#l00544">DeleteProps()</a>, <a class="el" href="IMAPIFolder_8c_source.html#l00739">EmptyFolder()</a>, <a class="el" href="IMAPITable_8c_source.html#l01505">ExpandRow()</a>, <a class="el" href="IMAPITable_8c_source.html#l01215">FindRow()</a>, <a class="el" href="IMAPITable_8c_source.html#l00782">FreeBookmark()</a>, <a class="el" href="IMessage_8c_source.html#l00234">GetAttachmentTable()</a>, <a class="el" href="IMAPITable_8c_source.html#l01700">GetCollapseState()</a>, <a class="el" href="IMAPIContainer_8c_source.html#l00081">GetContentsTable()</a>, <a class="el" href="IMAPIContainer_8c_source.html#l00207">GetHierarchyTable()</a>, <a class="el" href="IUnknown_8c_source.html#l00276">GetIdFromLongTermId()</a>, <a class="el" href="IMAPIProp_8c_source.html#l00922">GetIDsFromNames()</a>, <a class="el" href="FXICS_8c_source.html#l00051">GetLocalReplicaIds()</a>, <a class="el" href="IUnknown_8c_source.html#l00192">GetLongTermIdFromId()</a>, <a class="el" href="IMAPIFolder_8c_source.html#l00303">GetMessageStatus()</a>, <a class="el" href="IMAPIProp_8c_source.html#l00818">GetNamesFromIDs()</a>, <a class="el" href="IMsgStore_8c_source.html#l00661">GetOwningServers()</a>, <a class="el" href="IMAPIProp_8c_source.html#l00379">GetPropList()</a>, <a class="el" href="IMAPIProp_8c_source.html#l00059">GetProps()</a>, <a class="el" href="IMAPIProp_8c_source.html#l00464">GetPropsAll()</a>, <a class="el" href="IMsgStore_8c_source.html#l00396">GetReceiveFolder()</a>, <a class="el" href="IMsgStore_8c_source.html#l00483">GetReceiveFolderTable()</a>, <a class="el" href="IMAPIContainer_8c_source.html#l00395">GetRulesTable()</a>, <a class="el" href="IMAPIContainer_8c_source.html#l00704">GetSearchCriteria()</a>, <a class="el" href="IMAPITable_8c_source.html#l01337">GetStatus()</a>, <a class="el" href="IMsgStore_8c_source.html#l00768">GetStoreState()</a>, <a class="el" href="IStream_8c_source.html#l00408">GetStreamSize()</a>, <a class="el" href="IMAPIContainer_8c_source.html#l00303">GetTable()</a>, <a class="el" href="IMsgStore_8c_source.html#l00582">GetTransportFolder()</a>, <a class="el" href="IMAPIFolder_8c_source.html#l00223">HardDeleteMessage()</a>, <a class="el" href="IMAPIFolder_8c_source.html#l01222">HardDeleteMessagesAndSubfolders()</a>, <a class="el" href="IStream_8c_source.html#l00748">LockRegionStream()</a>, <a class="el" href="IMessage_8c_source.html#l00529">ModifyRecipients()</a>, <a class="el" href="IMAPIContainer_8c_source.html#l00493">ModifyTable()</a>, <a class="el" href="IMAPIFolder_8c_source.html#l00489">MoveCopyMessages()</a>, <a class="el" href="IMAPIFolder_8c_source.html#l00912">MoveFolder()</a>, <a class="el" href="IMessage_8c_source.html#l00324">OpenAttach()</a>, <a class="el" href="IMessage_8c_source.html#l01408">OpenEmbeddedMessage()</a>, <a class="el" href="IMsgStore_8c_source.html#l00048">OpenFolder()</a>, <a class="el" href="IStoreFolder_8c_source.html#l00061">OpenMessage()</a>, <a class="el" href="IMAPISession_8c_source.html#l00142">OpenPublicFolder()</a>, <a class="el" href="IMsgStore_8c_source.html#l00219">OpenPublicFolderByName()</a>, <a class="el" href="IStream_8c_source.html#l00063">OpenStream()</a>, <a class="el" href="IMAPISession_8c_source.html#l00306">OpenUserMailbox()</a>, <a class="el" href="IMsgStore_8c_source.html#l00133">PublicFolderIsGhosted()</a>, <a class="el" href="IMAPITable_8c_source.html#l00325">QueryColumns()</a>, <a class="el" href="IMAPIProp_8c_source.html#l01035">QueryNamedProperties()</a>, <a class="el" href="IMAPITable_8c_source.html#l00147">QueryPosition()</a>, <a class="el" href="IMAPITable_8c_source.html#l00233">QueryRows()</a>, <a class="el" href="IMessage_8c_source.html#l00753">ReadRecipients()</a>, <a class="el" href="IStream_8c_source.html#l00164">ReadStream()</a>, <a class="el" href="IUnknown_8c_source.html#l00112">Release()</a>, <a class="el" href="IMessage_8c_source.html#l00836">RemoveAllRecipients()</a>, <a class="el" href="IMAPITable_8c_source.html#l01026">Reset()</a>, <a class="el" href="IMAPITable_8c_source.html#l01111">Restrict()</a>, <a class="el" href="IMAPIProp_8c_source.html#l00295">SaveChangesAttachment()</a>, <a class="el" href="IMessage_8c_source.html#l01084">SaveChangesMessage()</a>, <a class="el" href="IMAPITable_8c_source.html#l00414">SeekRow()</a>, <a class="el" href="IMAPITable_8c_source.html#l00609">SeekRowApprox()</a>, <a class="el" href="IMAPITable_8c_source.html#l00504">SeekRowBookmark()</a>, <a class="el" href="IStream_8c_source.html#l00489">SeekStream()</a>, <a class="el" href="IMAPITable_8c_source.html#l01791">SetCollapseState()</a>, <a class="el" href="IMAPITable_8c_source.html#l00051">SetColumns()</a>, <a class="el" href="IMessage_8c_source.html#l01276">SetMessageReadFlag()</a>, <a class="el" href="IMAPIFolder_8c_source.html#l00397">SetMessageStatus()</a>, <a class="el" href="IMAPIProp_8c_source.html#l00627">SetPropertiesNoReplicate()</a>, <a class="el" href="IMAPIProp_8c_source.html#l00181">SetProps()</a>, <a class="el" href="IMAPIFolder_8c_source.html#l01136">SetReadFlags()</a>, <a class="el" href="IMsgStore_8c_source.html#l00310">SetReceiveFolder()</a>, <a class="el" href="IMAPIContainer_8c_source.html#l00605">SetSearchCriteria()</a>, <a class="el" href="IXPLogon_8c_source.html#l00125">SetSpooler()</a>, <a class="el" href="IStream_8c_source.html#l00570">SetStreamSize()</a>, <a class="el" href="IMAPITable_8c_source.html#l00880">SortTable()</a>, <a class="el" href="IXPLogon_8c_source.html#l00199">SpoolerLockMessage()</a>, <a class="el" href="IMessage_8c_source.html#l00913">SubmitMessage()</a>, <a class="el" href="IMAPISupport_8c_source.html#l00073">Subscribe()</a>, <a class="el" href="IMsgStore_8c_source.html#l00876">TransportNewMail()</a>, <a class="el" href="IMessage_8c_source.html#l01159">TransportSend()</a>, <a class="el" href="IStream_8c_source.html#l00827">UnlockRegionStream()</a>, <a class="el" href="IStream_8c_source.html#l00994">WriteAndCommitStream()</a>, and <a class="el" href="IStream_8c_source.html#l00260">WriteStream()</a>.</p> </div> </div><p> <a class="anchor" name="7f4dfd76879dea2bf003f52d8bce38d3"></a><!-- doxytag: member="emsmdb.c::emsmdb_transaction_null" ref="7f4dfd76879dea2bf003f52d8bce38d3" args="(struct emsmdb_context *emsmdb_ctx, struct mapi_response **res)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_PUBLIC_ NTSTATUS emsmdb_transaction_null </td> <td>(</td> <td class="paramtype">struct emsmdb_context * </td> <td class="paramname"> <em>emsmdb_ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct mapi_response ** </td> <td class="paramname"> <em>res</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Send an empty MAPI packet - useful to keep connection up or force notifications.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>emsmdb_ctx</em> </td><td>pointer to the EMSMDB connection context </td></tr> <tr><td valign="top"></td><td valign="top"><em>res</em> </td><td>pointer on pointer to a MAPI response structure</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>NT_STATUS_OK on success, otherwise NT status error </dd></dl> <p>Referenced by <a class="el" href="IMAPISupport_8c_source.html#l00340">DispatchNotifications()</a>, and <a class="el" href="IMAPISupport_8c_source.html#l00387">MonitorNotification()</a>.</p> </div> </div><p> <a class="anchor" name="9af10327453a0da639fd14cd5670ea95"></a><!-- doxytag: member="emsmdb.c::pull_emsmdb_property" ref="9af10327453a0da639fd14cd5670ea95" args="(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, uint32_t *offset, enum MAPITAGS tag, DATA_BLOB *data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const void* pull_emsmdb_property </td> <td>(</td> <td class="paramtype">TALLOC_CTX * </td> <td class="paramname"> <em>mem_ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct loadparm_context * </td> <td class="paramname"> <em>lp_ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">uint32_t * </td> <td class="paramname"> <em>offset</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">enum MAPITAGS </td> <td class="paramname"> <em>tag</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">DATA_BLOB * </td> <td class="paramname"> <em>data</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Retrieves a property value from a DATA blob<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>mem_ctx</em> </td><td>pointer to the memory context </td></tr> <tr><td valign="top"></td><td valign="top"><em>lp_ctx</em> </td><td>pointer to the loadparm context </td></tr> <tr><td valign="top"></td><td valign="top"><em>offset</em> </td><td>pointer on pointer to the current offset </td></tr> <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>the property tag which value is to be retrieved </td></tr> <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>pointer to the data</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>pointer on constant generic data on success, otherwise NULL </dd></dl> <p>Referenced by <a class="el" href="emsmdb_8c_source.html#l00665">emsmdb_get_SPropValue()</a>, <a class="el" href="emsmdb_8c_source.html#l00811">emsmdb_get_SRow()</a>, and <a class="el" href="emsmdb_8c_source.html#l00725">emsmdb_get_SRowSet()</a>.</p> </div> </div><p> </div> </div> <br/> <table style="clear:both; margin: 0.5em auto; width:80%; text-align: center; background-color:#f8f8f8; border:2px solid #e0e0e0; padding:5px;"> <tr> <td> <img alt="Creative Commons License" src="CC_SomeRightsReserved.png" width="90" height="30" border="0" /><br /> <img alt="Creative Commons Attribution icon" src="24px-Cc-by_white.svg.png" width="24" height="24" border="0" /> <img alt="Creative Commons Share Alike icon" src="24px-Cc-sa_white.svg.png" width="24" height="24" border="0" /> </td> <td> <i><strong class="selflink">This content</strong> is licensed under the Creative Commons<br /> Attribution ShareAlike License v. 3.0:<br /> <a href="http://creativecommons.org/licenses/by-sa/3.0/" class="external free" title="http://creativecommons.org/licenses/by-sa/3.0/" rel="nofollow">http://creativecommons.org/licenses/by-sa/3.0/</a></i> </td></tr></table> <br/> </div> </div> </body> </html>