op_MAPI_SetSearchCriteria = 0x30,
op_MAPI_GetSearchCriteria = 0x31,
op_MAPI_SubmitMessage = 0x32,
- op_MAPI_CopyMessages = 0x33,
+ op_MAPI_CopyMessages = 0x33,
op_MAPI_QueryColumns = 0x37,
op_MAPI_CopyToStream = 0x3a,
op_MAPI_GetTable = 0x3e,
/**************************/
/* EcDoRpc Function 0x4 */
+ typedef [bitmap8bit] bitmap {
+ TableFlags_Depth = 0x4,
+ TableFlags_DeferredErrors = 0x8,
+ TableFlags_NoNotifications = 0x10,
+ TableFlags_SoftDeletes = 0x20,
+ TableFlags_UseUnicode = 0x40,
+ TableFlags_SuppressNotifications = 0x80
+ } TableFlags;
+
typedef [flag(NDR_NOALIGN)] struct {
uint8 handle_idx;
- uint8 unknown;
+ TableFlags TableFlags;
} GetHierarchyTable_req;
typedef [flag(NDR_NOALIGN)] struct {
- uint16 cn_rows;
- uint16 unknown;
+ uint32 RowCount;
} GetHierarchyTable_repl;
/**************************/
/* EcDoRpc Function 0x5 */
typedef [flag(NDR_NOALIGN)] struct {
uint8 handle_idx;
- uint8 unknown;
+ TableFlags TableFlags;
} GetContentsTable_req;
typedef [flag(NDR_NOALIGN)] struct {
- uint16 cn_rows;
- uint16 unknown;
+ uint32 RowCount;
} GetContentsTable_repl;
/**************************/
uint8 handle_idx;
uint16 count;
hyper message_id[count];
- uint16 row_nb;
+ uint16 row_nb;
} CopyMessages_req;
typedef [flag(NDR_NOALIGN)] struct {
- uint8 unknown;
+ boolean8 PartialCompletion;
} CopyMessages_repl;
/*************************/
\param obj_container the object to get the contents of
\param obj_table the resulting table containing the container's
contents.
+ \param TableFlags flags controlling the type of table
+ \param RowCount the number of rows in the hierarchy table
+
+ TableFlags possible values:
+
+ - TableFlags_Depth (0x4): Fills the hierarchy table with containers
+ from all levels. If this flag is not set, the hierarchy table
+ contains only the container's immediate child containers.
+
+ - TableFlags_DeferredErrors (0x8): The call response can return immediately,
+ possibly before the call execution is complete and in this case the
+ ReturnValue as well the RowCount fields in the return buffer might
+ not be accurate. Only retval reporting failure can be considered
+ valid in this case.
+
+ - TableFlags_NoNotifications (0x10): Disables all notifications on .this Table
+ object.
+
+ - TableFlags_SoftDeletes (0x20): Enables the client to get a list of the soft
+ deleted folders.
+
+ - TableFlags_UseUnicode (0x40): Requests that the columns that contain string
+ data be returned in Unicode format.
+
+ - TableFlags_SuppressNotifications (0x80): Suppresses notifications generated
+ by this client’s actions on this Table object.
+
+ Developers can either set RowCount to a valid pointer on uint32_t
+ or set it to NULL. In this last case, GetHierarchyTable won't
+ return any value to the calling function.
\return MAPI_E_SUCCESS on success, otherwise -1.
\sa OpenFolder, GetHierarchyTable, GetLastError
*/
-_PUBLIC_ enum MAPISTATUS GetContentsTable(mapi_object_t *obj_container, mapi_object_t *obj_table)
+_PUBLIC_ enum MAPISTATUS GetContentsTable(mapi_object_t *obj_container, mapi_object_t *obj_table,
+ uint8_t TableFlags, uint32_t *RowCount)
{
struct mapi_request *mapi_request;
struct mapi_response *mapi_response;
/* Fill the GetContentsTable operation */
request.handle_idx = 0x1;
- request.unknown = 0x0;
+ request.TableFlags = TableFlags;
size += 2;
/* Fill the MAPI_REQ request */
/* set handle */
mapi_object_set_handle(obj_table, mapi_response->handles[1]);
+
+ /* Retrieve RowCount if a valid pointer was set */
+ if (RowCount) {
+ *RowCount = mapi_response->mapi_repl->u.mapi_GetContentsTable.RowCount;
+ }
/* new table */
mapi_object_table_init(obj_table);
\param obj_container the object to get the contents of
\param obj_table the resulting table containing the container's
hierarchy
+ \param TableFlags flags controlling the type of table
+ \param RowCount the number of rows in the hierarchy table
+
+ TableFlags possible values:
+
+ - TableFlags_Depth (0x4): Fills the hierarchy table with containers
+ from all levels. If this flag is not set, the hierarchy table
+ contains only the container's immediate child containers.
+
+ - TableFlags_DeferredErrors (0x8): The call response can return immediately,
+ possibly before the call execution is complete and in this case the
+ ReturnValue as well the RowCount fields in the return buffer might
+ not be accurate. Only retval reporting failure can be considered
+ valid in this case.
+
+ - TableFlags_NoNotifications (0x10): Disables all notifications on .this Table
+ object.
+
+ - TableFlags_SoftDeletes (0x20): Enables the client to get a list of the soft
+ deleted folders.
+
+ - TableFlags_UseUnicode (0x40): Requests that the columns that contain string
+ data be returned in Unicode format.
+
+ - TableFlags_SuppressNotifications (0x80): Suppresses notifications generated
+ by this client’s actions on this Table object.
+
+ Developers can either set RowCount to a valid pointer on uint32_t
+ or set it to NULL. In this last case, GetHierarchyTable won't
+ return any value to the calling function.
\return MAPI_E_SUCCESS on success, otherwise -1.
\sa OpenFolder, GetContentsTable, GetLastError
*/
-_PUBLIC_ enum MAPISTATUS GetHierarchyTable(mapi_object_t *obj_container, mapi_object_t *obj_table)
+_PUBLIC_ enum MAPISTATUS GetHierarchyTable(mapi_object_t *obj_container, mapi_object_t *obj_table,
+ uint8_t TableFlags, uint32_t *RowCount)
{
struct mapi_request *mapi_request;
struct mapi_response *mapi_response;
/* Fill the GetHierarchyTable operation */
request.handle_idx = 0x1;
- request.unknown = 0x0;
+ request.TableFlags = TableFlags;
size += 2;
/* Fill the MAPI_REQ request */
/* set handle */
mapi_object_set_handle(obj_table, mapi_response->handles[1]);
+ /* Retrieve RowCount if a valid pointer was set */
+ if (RowCount) {
+ *RowCount = mapi_response->mapi_repl->u.mapi_GetHierarchyTable.RowCount;
+ }
+
/* new table */
mapi_object_table_init(obj_table);
if (retval != MAPI_E_SUCCESS) return false;
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(&obj_folder, &obj_htable);
+ retval = GetHierarchyTable(&obj_folder, &obj_htable, 0, NULL);
if (retval != MAPI_E_SUCCESS) return false;
SPropTagArray = set_SPropTagArray(mem_ctx, 0x1, PR_FID);
/* Retrieve the Contents Table */
mapi_object_init(&obj_ctable);
- retval = GetContentsTable(&obj_folder, &obj_ctable);
+ retval = GetContentsTable(&obj_folder, &obj_ctable, 0, &count);
mapi_errstr("GetContentsTable", GetLastError());
if (retval != MAPI_E_SUCCESS) return false;
mapi_errstr("SetColumns", GetLastError());
if (retval != MAPI_E_SUCCESS) return false;
- /* Count the total number of rows in the table */
- retval = GetRowCount(&obj_ctable, &count);
- mapi_errstr("GetRowCount", GetLastError());
- if (retval != MAPI_E_SUCCESS) return false;
-
halfcount = count / 2;
/* Position the cursor at the desired position */
if (retval != MAPI_E_SUCCESS) return false;
- retval = GetContentsTable(&obj_dir_src, &obj_table);
+ retval = GetContentsTable(&obj_dir_src, &obj_table, 0, NULL);
mapi_errstr("GetContentsTable", GetLastError());
if (retval != MAPI_E_SUCCESS) return false;
while ((retval = QueryRows(&obj_table, 0xa, TBL_ADVANCE, &rowset)) != MAPI_E_NOT_FOUND && rowset.cRows) {
for (i = 0; i < rowset.cRows; i++) {
- retval = CopyMessages(&obj_dir_src, &obj_dir_dst, rowset.aRow[i].lpProps[1].value.d);
- mapi_errstr("CopyMessages", GetLastError());
+ retval = MoveCopyMessages(&obj_dir_src, &obj_dir_dst, rowset.aRow[i].lpProps[1].value.d);
+ mapi_errstr("MoveCopyMessages", GetLastError());
if (retval != MAPI_E_SUCCESS) return false;
}
}
mapi_object_debug(&obj_inbox);
/* table = inbox->GetContentsTable() */
- retval = GetContentsTable(&obj_inbox, &obj_table);
+ retval = GetContentsTable(&obj_inbox, &obj_table, 0, NULL);
mapi_errstr("GetContentsTable", GetLastError());
if (retval != MAPI_E_SUCCESS) return false;
mapi_object_debug(&obj_table);
if (retval != MAPI_E_SUCCESS) return false;
/* Operations on the calendar folder */
- retval = GetContentsTable(&obj_calendar, &obj_cal_table);
+ retval = GetContentsTable(&obj_calendar, &obj_cal_table, 0, NULL);
if (retval != MAPI_E_SUCCESS) return false;
SPropTagArray = set_SPropTagArray(mem_ctx, 0x8,
if (retval != MAPI_E_SUCCESS) return false;
/* table = inbox->GetContentsTable() */
- retval = GetContentsTable(&obj_inbox, &obj_tb_contents);
+ retval = GetContentsTable(&obj_inbox, &obj_tb_contents, 0, NULL);
mapi_errstr("GetContentsTable", GetLastError());
if (retval != MAPI_E_SUCCESS) return false;
if (retval != MAPI_E_SUCCESS) return false;
/* Operations on the contacts folder */
- retval = GetContentsTable(&obj_contacts, &obj_table);
+ retval = GetContentsTable(&obj_contacts, &obj_table, 0, NULL);
if (retval != MAPI_E_SUCCESS) return false;
SPropTagArray = set_SPropTagArray(mem_ctx, 0x8,
/* table = inbox->GetContentsTable()
*/
- retval = GetContentsTable(&obj_inbox, &obj_table);
+ retval = GetContentsTable(&obj_inbox, &obj_table, 0, &count);
mapi_errstr("GetContentsTable", GetLastError());
if (retval != MAPI_E_SUCCESS) return false;
mapi_errstr("SetColumns", GetLastError());
if (retval != MAPI_E_SUCCESS) return false;
- /* Iterate through messages
- */
- retval = GetRowCount(&obj_table, &count);
- mapi_errstr("GetRowCount", GetLastError());
-
printf("Inbox: Total(%d) Unread(%d)\n", total, unread);
while ((retval = QueryRows(&obj_table, 0xa, TBL_ADVANCE, &rowset)) != MAPI_E_NOT_FOUND && rowset.cRows) {
if (retval != MAPI_E_SUCCESS) return false;
/* Operations on the tasks folder */
- retval = GetContentsTable(&obj_tasks, &obj_tasks_table);
+ retval = GetContentsTable(&obj_tasks, &obj_tasks_table, 0, NULL);
if (retval != MAPI_E_SUCCESS) return false;
SPropTagArray = set_SPropTagArray(mem_ctx, 0x8,
/* Retrieve the folder contents */
mapi_object_init(&obj_table);
- retval = GetContentsTable(&obj_folder, &obj_table);
+ retval = GetContentsTable(&obj_folder, &obj_table, 0, NULL);
if (retval != MAPI_E_SUCCESS) return false;
SPropTagArray = set_SPropTagArray(mem_ctx, 0x8,
/* Get Contents Table */
mapi_object_init(&obj_table);
- retval = GetContentsTable(&obj_inbox, &obj_table);
+ retval = GetContentsTable(&obj_inbox, &obj_table, 0, &count);
mapi_errstr("GetContentsTable", GetLastError());
if (retval != MAPI_E_SUCCESS) return false;
mapi_errstr("SetColumns", GetLastError());
if (retval != MAPI_E_SUCCESS) return false;
- /* Get total number of messages */
- retval = GetRowCount(&obj_table, &count);
- mapi_errstr("GetRowCount", GetLastError());
-
while (((retval = QueryRows(&obj_table, count, TBL_ADVANCE, &SRowSet)) != MAPI_E_NOT_FOUND) && SRowSet.cRows) {
count -= SRowSet.cRows;
for (i = 0; i < SRowSet.cRows; i++) {
}
/* Get Contents Table */
- retval = GetContentsTable(&obj_testdir, &obj_table);
+ retval = GetContentsTable(&obj_testdir, &obj_table, 0, &total);
if (retval != MAPI_E_SUCCESS) return false;
+ DEBUG(0, ("Total number of mails = %d\n", total));
+
/* Filter contents table on subject */
SPropTagArray = set_SPropTagArray(mem_ctx, 0x6,
PR_FID,
MAPIFreeBuffer(SPropTagArray);
if (retval != MAPI_E_SUCCESS) return false;
- retval = GetRowCount(&obj_table, &total);
- if (retval != MAPI_E_SUCCESS) return false;
-
- DEBUG(0, ("Total number of mails = %d\n", total));
-
DEBUG(0, ("\nStep 1. Test Restrict MAPI call\n"));
DEBUG(0, ("===============================\n"));
/* Retrieve the Contents Table */
mapi_object_init(&obj_ctable);
- retval = GetContentsTable(&obj_folder, &obj_ctable);
+ retval = GetContentsTable(&obj_folder, &obj_ctable, 0, &count);
mapi_errstr("GetContentsTable", GetLastError());
if (retval != MAPI_E_SUCCESS) return false;
mapi_errstr("SetColumns", GetLastError());
if (retval != MAPI_E_SUCCESS) return false;
- /* Count the total number of rows in the table */
- retval = GetRowCount(&obj_ctable, &count);
- mapi_errstr("GetRowCount", GetLastError());
- if (retval != MAPI_E_SUCCESS) return false;
-
/* Browse and print table content */
printf("\nBefore SortTable ASCENDING:\n");
while (((retval = QueryRows(&obj_ctable, count, TBL_ADVANCE, &SRowSet)) != MAPI_E_NOT_FOUND) &&
/* Get Contents Table */
mapi_object_init(&obj_ctable);
- retval = GetContentsTable(obj_folder, &obj_ctable);
+ retval = GetContentsTable(obj_folder, &obj_ctable, 0, &count);
MAPI_RETVAL_IF(retval, GetLastError(), NULL);
/* Customize the table view */
MAPIFreeBuffer(SPropTagArray);
MAPI_RETVAL_IF(retval, GetLastError(), NULL);
- /* Walk through the table */
- retval = GetRowCount(&obj_ctable, &count);
- MAPI_RETVAL_IF(retval, GetLastError(), NULL);
-
while ((retval = QueryRows(&obj_ctable, count, TBL_ADVANCE, &rowset)) != MAPI_E_NOT_FOUND && rowset.cRows) {
for (i = 0; i < rowset.cRows; i++) {
mapi_object_init(&obj_message);
if (child_folder && *child_folder >= 1) {
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(&obj_folder, &obj_htable);
+ retval = GetHierarchyTable(&obj_folder, &obj_htable, 0, &rcount);
MAPI_RETVAL_IF(retval, GetLastError(), NULL);
SPropTagArray = set_SPropTagArray(mem_ctx, 0x3,
MAPIFreeBuffer(SPropTagArray);
MAPI_RETVAL_IF(retval, GetLastError(), NULL);
- retval = GetRowCount(&obj_htable, &rcount);
- MAPI_RETVAL_IF(retval, GetLastError(), NULL);
-
while ((retval = QueryRows(&obj_htable, rcount, TBL_ADVANCE, &rowset) != MAPI_E_NOT_FOUND) && rowset.cRows) {
for (i = 0; i < rowset.cRows; i++) {
fid = (const uint64_t *)find_SPropValue_data(&rowset.aRow[i], PR_FID);
if (retval != MAPI_E_SUCCESS) return false;
mapi_object_init(&obj_table);
- retval = GetContentsTable(&obj_inbox, &obj_table);
+ retval = GetContentsTable(&obj_inbox, &obj_table, 0, NULL);
if (retval != MAPI_E_SUCCESS) return false;
SPropTagArray = set_SPropTagArray(mem_ctx, 0x3,
MAPI_RETVAL_IF(retval, retval, mem_ctx);
mapi_object_init(&obj_table);
- retval = GetContentsTable(&obj_inbox, &obj_table);
+ retval = GetContentsTable(&obj_inbox, &obj_table, 0, &count);
MAPI_RETVAL_IF(retval, retval, mem_ctx);
SPropTagArray = set_SPropTagArray(mem_ctx, 0x5,
MAPIFreeBuffer(SPropTagArray);
MAPI_RETVAL_IF(retval, retval, mem_ctx);
- retval = GetRowCount(&obj_table, &count);
- MAPI_RETVAL_IF(retval, retval, mem_ctx);
-
while ((retval = QueryRows(&obj_table, 0xa, TBL_ADVANCE, &rowset)) != MAPI_E_NOT_FOUND && rowset.cRows) {
for (i = 0; i < rowset.cRows; i++) {
mapi_object_init(&obj_message);
/* Retrieve the contents table */
mapi_object_init(&obj_ctable);
- retval = GetContentsTable(obj_folder, &obj_ctable);
+ retval = GetContentsTable(obj_folder, &obj_ctable, 0, &count);
mapitest_print(mt, "* %-35s: 0x%.8x\n", "GetContentsTable", GetLastError());
if (GetLastError() != MAPI_E_SUCCESS) {
return false;
return false;
}
- /* Count the total number of rows */
- retval = GetRowCount(&obj_ctable, &count);
- mapitest_print(mt, "* %-35s: 0x%.8x\n", "GetRowCount", GetLastError());
- if (GetLastError() != MAPI_E_SUCCESS) {
- return false;
- }
-
/* Position the table at the latest know position */
retval = SeekRow(&obj_ctable, BOOKMARK_BEGINNING, *index, &count2);
mapitest_print(mt, "* %-35s: 0x%.8x\n", "SeekRow", GetLastError());
mapi_object_t obj_folder;
mapi_object_t obj_htable;
mapi_id_t id_folder;
+ uint32_t RowCount;
/* Step 1. Logon */
mapi_object_init(&obj_store);
/* Step 3. Get the Hierarchy Table */
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(&obj_folder, &obj_htable);
- mapitest_print(mt, "* %-35s: 0x%.8x\n", "GetHierarchyTable", GetLastError());
+ retval = GetHierarchyTable(&obj_folder, &obj_htable, 0, &RowCount);
+ mapitest_print(mt, "* %-35s: (%d rows) 0x%.8x\n", "GetHierarchyTable", RowCount, GetLastError());
if (GetLastError() != MAPI_E_SUCCESS) {
return false;
}
mapi_object_t obj_folder;
mapi_object_t obj_ctable;
mapi_id_t id_folder;
+ uint32_t RowCount;
/* Step 1. Logon */
mapi_object_init(&obj_store);
/* Step 3. Get the Contents Table */
mapi_object_init(&obj_ctable);
- retval = GetContentsTable(&obj_folder, &obj_ctable);
- mapitest_print(mt, "* %-35s: 0x%.8x\n", "GetContentsTable", GetLastError());
+ retval = GetContentsTable(&obj_folder, &obj_ctable, 0, &RowCount);
+ mapitest_print(mt, "* %-35s: (%d rows) 0x%.8x\n", "GetContentsTable", RowCount, GetLastError());
if (GetLastError() != MAPI_E_SUCCESS) {
return false;
}
/* Step 5. Get outbox contents table */
mapi_object_init(&obj_ctable);
- retval = GetContentsTable(&obj_folder, &obj_ctable);
+ retval = GetContentsTable(&obj_folder, &obj_ctable, 0, &count);
if (GetLastError() != MAPI_E_SUCCESS) {
return false;
}
return false;
}
- retval = GetRowCount(&obj_ctable, &count);
- if (GetLastError() != MAPI_E_SUCCESS) {
- return false;
- }
-
/* Step 6. Get Message Status */
while (((retval = QueryRows(&obj_ctable, count, TBL_ADVANCE, &SRowSet)) != MAPI_E_NOT_FOUND) &&
SRowSet.cRows) {
/* Step 5. Get outbox contents table */
mapi_object_init(&obj_ctable);
- retval = GetContentsTable(&obj_folder, &obj_ctable);
+ retval = GetContentsTable(&obj_folder, &obj_ctable, 0, &count);
if (GetLastError() != MAPI_E_SUCCESS) {
return false;
}
return false;
}
- retval = GetRowCount(&obj_ctable, &count);
- if (GetLastError() != MAPI_E_SUCCESS) {
- return false;
- }
-
/* Fetch the first email */
retval = QueryRows(&obj_ctable, 1, TBL_NOADVANCE, &SRowSet);
if (GetLastError() != MAPI_E_SUCCESS) {
/* Step 3. GetHierarchyTable */
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(&obj_folder, &obj_htable);
+ retval = GetHierarchyTable(&obj_folder, &obj_htable, 0, NULL);
if (GetLastError() != MAPI_E_SUCCESS) {
return false;
}
/* Step 3. GetHierarchyTable */
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(&obj_folder, &obj_htable);
+ retval = GetHierarchyTable(&obj_folder, &obj_htable, 0, NULL);
if (GetLastError() != MAPI_E_SUCCESS) {
return false;
}
/* Step 3. GetHierarchyTable */
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(&obj_folder, &obj_htable);
+ retval = GetHierarchyTable(&obj_folder, &obj_htable, 0, &count);
if (GetLastError() != MAPI_E_SUCCESS) {
return false;
}
- /* Step 4. Get row count */
- retval = GetRowCount(&obj_htable, &count);
- mapitest_print(mt, "* %-35s: 0x%.8x\n", "GetRowCount", GetLastError());
- if (GetLastError() != MAPI_E_SUCCESS) {
- return false;
- }
-
- /* Step 5. Set Table Columns */
+ /* Step 4. Set Table Columns */
SPropTagArray = set_SPropTagArray(mt->mem_ctx, 0x3,
PR_DISPLAY_NAME,
PR_FID,
/* Step 3. GetHierarchyTable */
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(&obj_folder, &obj_htable);
+ retval = GetHierarchyTable(&obj_folder, &obj_htable, 0, NULL);
if (GetLastError() != MAPI_E_SUCCESS) {
return false;
}
/* Step 3. GetHierarchyTable */
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(&obj_folder, &obj_htable);
+ retval = GetHierarchyTable(&obj_folder, &obj_htable, 0, NULL);
if (GetLastError() != MAPI_E_SUCCESS) {
return false;
}
/* Step 3. GetHierarchyTable */
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(&obj_folder, &obj_htable);
+ retval = GetHierarchyTable(&obj_folder, &obj_htable, 0, NULL);
if (GetLastError() != MAPI_E_SUCCESS) {
return false;
}
/* Step 3. GetHierarchyTable */
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(&obj_folder, &obj_htable);
+ retval = GetHierarchyTable(&obj_folder, &obj_htable, 0, &count);
if (GetLastError() != MAPI_E_SUCCESS) {
return false;
}
return false;
}
- /* Step 5. Get the total number of rows */
- retval = GetRowCount(&obj_htable, &count);
- if (GetLastError() != MAPI_E_SUCCESS) {
- return false;
- }
-
- /* Step 6. Create Bookmarks */
+ /* Step 5. Create Bookmarks */
bkPosition = talloc_array(mt->mem_ctx, uint32_t, 1);
while (((retval = QueryRows(&obj_htable, count, TBL_ADVANCE, &SRowSet)) != MAPI_E_NOT_FOUND) &&
SRowSet.cRows) {
retval = mapi_object_bookmark_get_count(&obj_htable, &count);
- /* Step 7. Free Bookmarks */
+ /* Step 6. Free Bookmarks */
for (i = 0; i < count; i++) {
retval = FreeBookmark(&obj_htable, bkPosition[i]);
mapitest_print(mt, "* %-35s (%.2d): 0x%.8x\n", "FreeBookmark", i, GetLastError());
/* Step 3. GetHierarchyTable */
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(&obj_folder, &obj_htable);
+ retval = GetHierarchyTable(&obj_folder, &obj_htable, 0, &count);
if (GetLastError() != MAPI_E_SUCCESS) {
return false;
}
return false;
}
- /* Step 5. Get the total number of rows */
- retval = GetRowCount(&obj_htable, &count);
- if (GetLastError() != MAPI_E_SUCCESS) {
- return false;
- }
-
- /* Step 6. Create Bookmarks */
+ /* Step 5. Create Bookmarks */
bkPosition = talloc_array(mt->mem_ctx, uint32_t, 1);
while (((retval = QueryRows(&obj_htable, count, TBL_ADVANCE, &SRowSet)) != MAPI_E_NOT_FOUND) &&
SRowSet.cRows) {
retval = mapi_object_bookmark_get_count(&obj_htable, &count);
- /* Step 7. SeekRowBookmark */
+ /* Step 6. SeekRowBookmark */
for (i = 0; i < count; i++) {
retval = SeekRowBookmark(&obj_htable, bkPosition[i], 0, &row);
mapitest_print(mt, "%-35s (%.2d): 0x%.8x\n", "SeekRowBookmark", i, GetLastError());
uint32_t index;
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(obj_container, &obj_htable);
+ retval = GetHierarchyTable(obj_container, &obj_htable, 0, NULL);
MAPI_RETVAL_IF(retval, GetLastError(), NULL);
SPropTagArray = set_SPropTagArray(mem_ctx, 0x2,
MAPI_RETVAL_IF(retval, retval, mem_ctx);
}
- retval = GetContentsTable(&obj_inbox, &obj_table);
+ retval = GetContentsTable(&obj_inbox, &obj_table, 0, &count);
MAPI_RETVAL_IF(retval, retval, mem_ctx);
+ printf("MAILBOX (%d messages)\n", count);
+
SPropTagArray = set_SPropTagArray(mem_ctx, 0x5,
PR_FID,
PR_MID,
MAPIFreeBuffer(SPropTagArray);
MAPI_RETVAL_IF(retval, retval, mem_ctx);
- retval = GetRowCount(&obj_table, &count);
- MAPI_RETVAL_IF(retval, retval, mem_ctx);
-
- printf("MAILBOX (%d messages)\n", count);
-
while ((retval = QueryRows(&obj_table, count, TBL_ADVANCE, &rowset)) != MAPI_E_NOT_FOUND && rowset.cRows) {
count -= rowset.cRows;
for (i = 0; i < rowset.cRows; i++) {
if (retval != MAPI_E_SUCCESS) return false;
}
- retval = GetContentsTable(&obj_inbox, &obj_table);
+ retval = GetContentsTable(&obj_inbox, &obj_table, 0, NULL);
if (retval != MAPI_E_SUCCESS) return false;
SPropTagArray = set_SPropTagArray(mem_ctx, 0x5,
if (retval != MAPI_E_SUCCESS) return false;
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(&obj_folder, &obj_htable);
+ retval = GetHierarchyTable(&obj_folder, &obj_htable, 0, NULL);
if (retval != MAPI_E_SUCCESS) return false;
SPropTagArray = set_SPropTagArray(mem_ctx, 0x6,
if (retval != MAPI_E_SUCCESS) return false;
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(&obj_folder, &obj_htable);
+ retval = GetHierarchyTable(&obj_folder, &obj_htable, 0, NULL);
if (retval != MAPI_E_SUCCESS) return false;
SPropTagArray = set_SPropTagArray(mem_ctx, 0x3,
/* Operations on the folder */
mapi_object_init(&obj_table);
- retval = GetContentsTable(&obj_folder, &obj_table);
+ retval = GetContentsTable(&obj_folder, &obj_table, 0, &count);
if (retval != MAPI_E_SUCCESS) return false;
+ printf("MAILBOX (%d messages)\n", count);
+
SPropTagArray = set_SPropTagArray(mem_ctx, 0x8,
PR_FID,
PR_MID,
MAPIFreeBuffer(SPropTagArray);
if (retval != MAPI_E_SUCCESS) return false;
- retval = GetRowCount(&obj_table, &count);
- MAPI_RETVAL_IF(retval, retval, mem_ctx);
-
- printf("MAILBOX (%d messages)\n", count);
-
while ((retval = QueryRows(&obj_table, count, TBL_ADVANCE, &SRowSet)) != MAPI_E_NOT_FOUND && SRowSet.cRows) {
count -= SRowSet.cRows;
for (i = 0; i < SRowSet.cRows; i++) {
if (retval != MAPI_E_SUCCESS) return false;
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(&obj_folder, &obj_htable);
+ retval = GetHierarchyTable(&obj_folder, &obj_htable, 0, NULL);
if (retval != MAPI_E_SUCCESS) return false;
SPropTagArray = set_SPropTagArray(mem_ctx, 0x1, PR_FID);
const uint64_t *mid;
mapi_object_init(&obj_htable);
- retval = GetContentsTable(obj_folder, &obj_htable);
+ retval = GetContentsTable(obj_folder, &obj_htable, 0, NULL);
if (retval != MAPI_E_SUCCESS) return false;
SPropTagArray = set_SPropTagArray(mem_ctx, 0x2, PR_FID, PR_MID);
/* Retrieve contents table */
mapi_object_init(&obj_table);
- retval = GetContentsTable(&obj_inbox, &obj_table);
+ retval = GetContentsTable(&obj_inbox, &obj_table, 0, &count);
MAPI_RETVAL_IF(retval, GetLastError(), mem_ctx);
SPropTagArray = set_SPropTagArray(mem_ctx, 0x2,
MAPIFreeBuffer(SPropTagArray);
MAPI_RETVAL_IF(retval, GetLastError(), mem_ctx);
- retval = GetRowCount(&obj_table, &count);
- MAPI_RETVAL_IF(retval, GetLastError(), mem_ctx);
-
while ((retval = QueryRows(&obj_table, 0xa, TBL_ADVANCE, &SRowSet)) != MAPI_E_NOT_FOUND && SRowSet.cRows) {
for (i = 0; i < SRowSet.cRows; i++) {
lpProp = get_SPropValue_SRowSet(&SRowSet, PR_MID);
if (retval != MAPI_E_SUCCESS) return false;
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(&obj_folder, &obj_htable);
+ retval = GetHierarchyTable(&obj_folder, &obj_htable, 0, NULL);
if (retval != MAPI_E_SUCCESS) return false;
SPropTagArray = set_SPropTagArray(mem_ctx, 0x3,
uint32_t index;
mapi_object_init(&obj_htable);
- retval = GetHierarchyTable(obj_container, &obj_htable);
+ retval = GetHierarchyTable(obj_container, &obj_htable, 0, NULL);
MAPI_RETVAL_IF(retval, GetLastError(), NULL);
SPropTagArray = set_SPropTagArray(mem_ctx, 0x2,