Fairport  v1.0.38
fairport/util/primitives.h File Reference

Primitive structures defined by MS-PST and MAPI. More...

#include <boost/config.hpp>
#include <boost/cstdint.hpp>
#include <string>
+ Include dependency graph for primitives.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  fairport::guid
 A Win32 GUID structure. More...

Namespaces

namespace  fairport
 

Contains the definition of all in memory representations of disk structures.


Defines

#define FAIRPORT_VALIDATION_LEVEL_WEAK
 Global Validation Settings.
#define FAIRPORT_MS_STRUCT
#define FAIRPORT_PACK_2
#define make_nid(nid_type, nid_index)   (((nid_type)&nid_type_mask)|((nid_index) << 5))
 Construct a node_id (NID) from a node type and index.
#define make_prv_pub_nid(nid_index)   (make_nid(nid_type_folder, nid_index_prv_pub_base + (nid_index)))
 Construct a folders node_id for an OST file.

Typedefs

typedef boost::uint32_t fairport::uint
typedef boost::uint32_t fairport::ulong
typedef boost::int32_t fairport::slong
typedef boost::uint64_t fairport::ulonglong
typedef boost::int64_t fairport::slonglong
typedef boost::uint8_t fairport::byte
typedef boost::uint16_t fairport::ushort
typedef ulong fairport::node_id
typedef ulonglong fairport::block_id
typedef block_id fairport::page_id
typedef ulong fairport::heap_id
typedef ulong fairport::heapnode_id
typedef ushort fairport::prop_id
typedef ulong fairport::row_id

Enumerations

enum  fairport::nid_type {
  fairport::nid_type_none = 0x00, fairport::nid_type_internal = 0x01, fairport::nid_type_folder = 0x02, fairport::nid_type_search_folder = 0x03,
  fairport::nid_type_message = 0x04, fairport::nid_type_attachment = 0x05, fairport::nid_type_search_update_queue = 0x06, fairport::nid_type_search_criteria_object = 0x07,
  fairport::nid_type_associated_message = 0x08, fairport::nid_type_storage = 0x09, fairport::nid_type_contents_table_index = 0x0A, fairport::nid_type_receive_folder_table = 0x0B,
  fairport::nid_type_outgoing_queue_table = 0x0C, fairport::nid_type_hierarchy_table = 0x0D, fairport::nid_type_contents_table = 0x0E, fairport::nid_type_associated_contents_table = 0x0F,
  fairport::nid_type_search_contents_table = 0x10, fairport::nid_type_attachment_table = 0x11, fairport::nid_type_recipient_table = 0x12, fairport::nid_type_search_table_index = 0x13,
  fairport::nid_type_contents_smp = 0x14, fairport::nid_type_associated_contents_smp = 0x15, fairport::nid_type_change_history_table = 0x16, fairport::nid_type_tombstone_table = 0x17,
  fairport::nid_type_tombstone_date_table = 0x18, fairport::nid_type_lrep_dups_table = 0x19, fairport::nid_type_folder_path_tombstone_table = 0x1A, fairport::nid_type_ltp = 0x1F,
  fairport::nid_type_max = 0x20
}
 Different node types found in a PST file. More...
enum  fairport::predefined_nid {
  fairport::nid_message_store = make_nid(nid_type_internal, 0x1), fairport::nid_name_id_map = make_nid(nid_type_internal, 0x3), fairport::nid_normal_folder_template = make_nid(nid_type_folder, 0x6), fairport::nid_search_folder_template = make_nid(nid_type_search_folder, 0x7),
  fairport::nid_root_folder = make_nid(nid_type_folder, 0x9), fairport::nid_search_management_queue = make_nid(nid_type_internal, 0xF), fairport::nid_search_activity_list = make_nid(nid_type_internal, 0x10), fairport::nid_search_domain_alternative = make_nid(nid_type_internal, 0x12),
  fairport::nid_search_domain_object = make_nid(nid_type_internal, 0x13), fairport::nid_search_gatherer_queue = make_nid(nid_type_internal, 0x14), fairport::nid_search_gatherer_descriptor = make_nid(nid_type_internal, 0x15), fairport::nid_table_rebuild_queue = make_nid(nid_type_internal, 0x17),
  fairport::nid_junk_mail_pihsl = make_nid(nid_type_internal, 0x18), fairport::nid_search_gatherer_folder_queue = make_nid(nid_type_internal, 0x19), fairport::nid_tc_sub_props = make_nid(nid_type_internal, 0x27), fairport::nid_index_template = 0x30,
  fairport::nid_hierarchy_table_template = make_nid(nid_type_hierarchy_table, nid_index_template), fairport::nid_contents_table_template = make_nid(nid_type_contents_table, nid_index_template), fairport::nid_associated_contents_table_template = make_nid(nid_type_associated_contents_table, nid_index_template), fairport::nid_search_contents_table_template = make_nid(nid_type_search_contents_table, nid_index_template),
  fairport::nid_smp_template = make_nid(nid_type_contents_smp, nid_index_template), fairport::nid_tombstone_table_template = make_nid(nid_type_tombstone_table, nid_index_template), fairport::nid_lrep_dups_table_template = make_nid(nid_type_lrep_dups_table, nid_index_template), fairport::nid_receive_folders = make_nid(nid_type_receive_folder_table, 0x31),
  fairport::nid_outgoing_queue = make_nid(nid_type_outgoing_queue_table, 0x32), fairport::nid_attachment_table = make_nid(nid_type_attachment_table, 0x33), fairport::nid_recipient_table = make_nid(nid_type_recipient_table, 0x34), fairport::nid_change_history_table = make_nid(nid_type_change_history_table, 0x35),
  fairport::nid_tombstone_table = make_nid(nid_type_tombstone_table, 0x36), fairport::nid_tombstone_date_table = make_nid(nid_type_tombstone_date_table, 0x37), fairport::nid_all_message_search_folder = make_nid(nid_type_search_folder, 0x39), fairport::nid_all_message_search_contents = make_nid(nid_type_search_contents_table, 0x39),
  fairport::nid_lrep_gmp = make_nid(nid_type_internal, 0x40), fairport::nid_lrep_folders_smp = make_nid(nid_type_internal, 0x41), fairport::nid_lrep_folders_table = make_nid(nid_type_internal, 0x42), fairport::nid_folder_path_tombstone_table = make_nid(nid_type_internal, 0x43),
  fairport::nid_hst_hmp = make_nid(nid_type_internal, 0x60), fairport::nid_index_prv_pub_base = 0x100, fairport::nid_pub_root_folder = make_prv_pub_nid(0), fairport::nid_prv_root_folder = make_prv_pub_nid(5),
  fairport::nid_criterr_notification = make_nid(nid_type_internal, 0x3FD), fairport::nid_object_notification = make_nid(nid_type_internal, 0x3FE), fairport::nid_newemail_notification = make_nid(nid_type_internal, 0x3FF), fairport::nid_extended_notification = make_nid(nid_type_internal, 0x400),
  fairport::nid_indexing_notification = make_nid(nid_type_internal, 0x401)
}
 The predefined nodes in a PST/OST file. More...
enum  fairport::prop_type {
  fairport::prop_type_unspecified = 0, fairport::prop_type_null = 1, fairport::prop_type_short = 2, fairport::prop_type_mv_short = 4098,
  fairport::prop_type_long = 3, fairport::prop_type_mv_long = 4099, fairport::prop_type_float = 4, fairport::prop_type_mv_float = 4100,
  fairport::prop_type_double = 5, fairport::prop_type_mv_double = 4101, fairport::prop_type_currency = 6, fairport::prop_type_mv_currency = 4102,
  fairport::prop_type_apptime = 7, fairport::prop_type_mv_apptime = 4103, fairport::prop_type_error = 10, fairport::prop_type_boolean = 11,
  fairport::prop_type_object = 13, fairport::prop_type_longlong = 20, fairport::prop_type_mv_longlong = 4116, fairport::prop_type_string = 30,
  fairport::prop_type_mv_string = 4126, fairport::prop_type_wstring = 31, fairport::prop_type_mv_wstring = 4127, fairport::prop_type_systime = 64,
  fairport::prop_type_mv_systime = 4160, fairport::prop_type_guid = 72, fairport::prop_type_mv_guid = 4168, fairport::prop_type_binary = 258,
  fairport::prop_type_mv_binary = 4354
}
 The different property types as defined by MAPI. More...
enum  fairport::recipient_type { fairport::mapi_to = 1, fairport::mapi_cc = 2, fairport::mapi_bcc = 3 }
 The different recipient types as defined by MAPI. More...

Functions

nid_type fairport::get_nid_type (node_id id)
 Get a node type from a node id.
ulong fairport::get_nid_index (node_id id)
 Get a node index from a node id.
ulong fairport::get_heap_page (heap_id id)
 Get the heap page from the heap id.
ulong fairport::get_heap_index (heap_id id)
 Get the index from the heap id.
heap_id fairport::make_heap_id (ulong page, ulong index)
 Create a heap_id from a page and an index.
bool fairport::is_heap_id (heapnode_id id)
 Inspects a heapnode_id (also known as a HNID) to determine if it is a heap_id (HID)
bool fairport::is_subnode_id (heapnode_id id)
 Inspects a heapnode_id (also known as a HNID) to determine if it is a node_id (NID)

Variables

const ulong fairport::nid_type_mask = 0x1FL
 The portion of a node_id reserved for the type.
const byte fairport::message_subject_prefix_lead_byte = 0x01
 A sentinel byte which indicates the message subject contains a prefix.
const guid fairport::ps_none = { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 } }
 The NULL guid.
const guid fairport::ps_mapi = { 0x20328, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } }
 The PS_MAPI guid.
const guid fairport::ps_public_strings = { 0x20329, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } }
 The PS_PUBLIC_STRINGS guid.
const guid fairport::ps_task = { 0x62003, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } }
 The PSETID_Task guid.
const guid fairport::ps_contact = { 0x62004, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } }
 The PSETID_Address guid.
const std::wstring fairport::task_class = "IPM.Task"
 Message class for Task Items.
const std::wstring fairport::contact_class = "IPM.Contact"
 Message class for Contact Items.

Detailed Description

Primitive structures defined by MS-PST and MAPI.

Author:
Terry Mahaffey

Definition in file primitives.h.


Define Documentation

#define FAIRPORT_MS_STRUCT

Definition at line 53 of file primitives.h.

#define FAIRPORT_PACK_2

Definition at line 54 of file primitives.h.