Fairport  v1.0.38
Primitive Types
+ Collaboration diagram for Primitive Types:

Classes

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

Defines

#define FAIRPORT_VALIDATION_LEVEL_WEAK
 Global Validation Settings.
#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.

Define Documentation

#define FAIRPORT_VALIDATION_LEVEL_WEAK

Global Validation Settings.

You may optionally define one of the following values before including any Fairport header:

  • FAIRPORT_VALIDATION_LEVEL_NONE, no validation - except some type checks
  • FAIRPORT_VALIDATION_LEVEL_WEAK, involves fast checks such as signature matching, param validation, etc
  • FAIRPORT_VALIDATION_LEVEL_FULL, includes all weak checks plus crc validation and any other "expensive" checks

Weak validation is the default.

Definition at line 35 of file primitives.h.

#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.

See also:
[MS-PST] 2.2.2.1

Definition at line 142 of file primitives.h.

#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.

Definition at line 146 of file primitives.h.


Typedef Documentation

typedef ulonglong fairport::block_id

Definition at line 83 of file primitives.h.

typedef boost::uint8_t fairport::byte

Definition at line 68 of file primitives.h.

typedef ulong fairport::heap_id

Definition at line 86 of file primitives.h.

typedef ulong fairport::heapnode_id

Definition at line 87 of file primitives.h.

typedef ulong fairport::node_id

Definition at line 82 of file primitives.h.

typedef block_id fairport::page_id

Definition at line 84 of file primitives.h.

typedef ushort fairport::prop_id

Definition at line 89 of file primitives.h.

typedef ulong fairport::row_id

Definition at line 91 of file primitives.h.

typedef boost::int32_t fairport::slong

Definition at line 65 of file primitives.h.

typedef boost::int64_t fairport::slonglong

Definition at line 67 of file primitives.h.

typedef boost::uint32_t fairport::uint

Definition at line 63 of file primitives.h.

typedef boost::uint32_t fairport::ulong

Definition at line 64 of file primitives.h.

typedef boost::uint64_t fairport::ulonglong

Definition at line 66 of file primitives.h.

typedef boost::uint16_t fairport::ushort

Definition at line 69 of file primitives.h.


Enumeration Type Documentation

Different node types found in a PST file.

See also:
[MS-PST] 2.2.2.1/nidType
Enumerator:
nid_type_none 
nid_type_internal 
nid_type_folder 
nid_type_search_folder 
nid_type_message 
nid_type_attachment 
nid_type_search_update_queue 
nid_type_search_criteria_object 
nid_type_associated_message 
nid_type_storage 
nid_type_contents_table_index 
nid_type_receive_folder_table 
nid_type_outgoing_queue_table 
nid_type_hierarchy_table 
nid_type_contents_table 
nid_type_associated_contents_table 
nid_type_search_contents_table 
nid_type_attachment_table 
nid_type_recipient_table 
nid_type_search_table_index 
nid_type_contents_smp 
nid_type_associated_contents_smp 
nid_type_change_history_table 
nid_type_tombstone_table 
nid_type_tombstone_date_table 
nid_type_lrep_dups_table 
nid_type_folder_path_tombstone_table 
nid_type_ltp 
nid_type_max 

Definition at line 101 of file primitives.h.

The predefined nodes in a PST/OST file.

See also:
[MS-PST] 2.4.1
Enumerator:
nid_message_store 

The property bag for this file.

nid_name_id_map 

Contains the named prop mappings.

nid_normal_folder_template 
nid_search_folder_template 
nid_root_folder 

Root folder of the store.

nid_search_management_queue 
nid_search_activity_list 
nid_search_domain_alternative 
nid_search_domain_object 
nid_search_gatherer_queue 
nid_search_gatherer_descriptor 
nid_table_rebuild_queue 
nid_junk_mail_pihsl 
nid_search_gatherer_folder_queue 
nid_tc_sub_props 
nid_index_template 
nid_hierarchy_table_template 
nid_contents_table_template 
nid_associated_contents_table_template 
nid_search_contents_table_template 
nid_smp_template 
nid_tombstone_table_template 
nid_lrep_dups_table_template 
nid_receive_folders 
nid_outgoing_queue 
nid_attachment_table 
nid_recipient_table 
nid_change_history_table 
nid_tombstone_table 
nid_tombstone_date_table 
nid_all_message_search_folder 
Deprecated:
The GUST
nid_all_message_search_contents 
nid_lrep_gmp 
nid_lrep_folders_smp 
nid_lrep_folders_table 
nid_folder_path_tombstone_table 
nid_hst_hmp 
nid_index_prv_pub_base 
nid_pub_root_folder 
nid_prv_root_folder 
nid_criterr_notification 
nid_object_notification 
nid_newemail_notification 
nid_extended_notification 
nid_indexing_notification 

Definition at line 151 of file primitives.h.

The different property types as defined by MAPI.

See also:
[MS-OXCDATA] 2.12.1
Enumerator:
prop_type_unspecified 
prop_type_null 
prop_type_short 
prop_type_mv_short 
prop_type_long 
prop_type_mv_long 
prop_type_float 
prop_type_mv_float 
prop_type_double 
prop_type_mv_double 
prop_type_currency 
prop_type_mv_currency 
prop_type_apptime 

VT_DATE.

prop_type_mv_apptime 
prop_type_error 
prop_type_boolean 
prop_type_object 
prop_type_longlong 
prop_type_mv_longlong 
prop_type_string 
prop_type_mv_string 
prop_type_wstring 
prop_type_mv_wstring 
prop_type_systime 

Win32 FILETIME.

prop_type_mv_systime 
prop_type_guid 
prop_type_mv_guid 
prop_type_binary 
prop_type_mv_binary 

Definition at line 273 of file primitives.h.

The different recipient types as defined by MAPI.

Enumerator:
mapi_to 
mapi_cc 
mapi_bcc 

Definition at line 312 of file primitives.h.


Function Documentation

ulong fairport::get_heap_index ( heap_id  id) [inline]

Get the index from the heap id.

Parameters:
[in]idThe heap id
Returns:
The index
See also:
[MS-PST] 2.3.1.1/hidIndex

Definition at line 233 of file primitives.h.

ulong fairport::get_heap_page ( heap_id  id) [inline]

Get the heap page from the heap id.

Parameters:
[in]idThe heap id
Returns:
The heap page
See also:
[MS-PST] 2.3.1.1/hidBlockIndex

Definition at line 225 of file primitives.h.

ulong fairport::get_nid_index ( node_id  id) [inline]

Get a node index from a node id.

Parameters:
[in]idThe node id
Returns:
The node index
See also:
[MS-PST] 2.2.2.1/nidIndex

Definition at line 213 of file primitives.h.

nid_type fairport::get_nid_type ( node_id  id) [inline]

Get a node type from a node id.

Parameters:
[in]idThe node id
Returns:
The node type
See also:
[MS-PST] 2.2.2.1/nidType

Definition at line 205 of file primitives.h.

bool fairport::is_heap_id ( heapnode_id  id) [inline]

Inspects a heapnode_id (also known as a HNID) to determine if it is a heap_id (HID)

Parameters:
[in]idThe heapnode_id
Returns:
true if this is a heap_id
See also:
[MS-PST] 2.3.3.2

Definition at line 254 of file primitives.h.

bool fairport::is_subnode_id ( heapnode_id  id) [inline]

Inspects a heapnode_id (also known as a HNID) to determine if it is a node_id (NID)

Parameters:
[in]idThe heapnode_id
Returns:
true if this is a node_id of a subnode
See also:
[MS-PST] 2.3.3.2

Definition at line 263 of file primitives.h.

heap_id fairport::make_heap_id ( ulong  page,
ulong  index 
) [inline]

Create a heap_id from a page and an index.

Parameters:
[in]pageThe page
[in]indexThe index
See also:
[MS-PST 2.3.1.1

Definition at line 241 of file primitives.h.


Variable Documentation

const std::wstring fairport::contact_class = "IPM.Contact"

Message class for Contact Items.

Definition at line 375 of file primitives.h.

A sentinel byte which indicates the message subject contains a prefix.

See also:
[MS-PST] 2.5.3.1.1.1

Definition at line 326 of file primitives.h.

const ulong fairport::nid_type_mask = 0x1FL

The portion of a node_id reserved for the type.

See also:
[MS-PST] 2.2.2.1/nidType

Definition at line 137 of file primitives.h.

const guid fairport::ps_contact = { 0x62004, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } }

The PSETID_Address guid.

See also:
[MS-OXPROPS] 1.3.2

Definition at line 367 of file primitives.h.

const guid fairport::ps_mapi = { 0x20328, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } }

The PS_MAPI guid.

See also:
[MS-OXPROPS] 1.3.2

Definition at line 352 of file primitives.h.

const guid fairport::ps_none = { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 } }

The NULL guid.

Definition at line 347 of file primitives.h.

const guid fairport::ps_public_strings = { 0x20329, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } }

The PS_PUBLIC_STRINGS guid.

See also:
[MS-OXPROPS] 1.3.2

Definition at line 357 of file primitives.h.

const guid fairport::ps_task = { 0x62003, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } }

The PSETID_Task guid.

See also:
[MS-OXPROPS] 1.3.2

Definition at line 362 of file primitives.h.

const std::wstring fairport::task_class = "IPM.Task"

Message class for Task Items.

Definition at line 371 of file primitives.h.