|
PST File Format SDK v0.4
|
Contains the definition of all in memory representations of disk structures. More...
Namespaces | |
| namespace | disk |
| Contains the definition of all structures as persisted to disk. | |
Classes | |
| struct | alias_tag |
| Tag structure used to indicate a copy constructed class should be an alias (shallow copy) rather than a deep copy. More... | |
| class | attachment |
| Encapsulates an attachment to a message. More... | |
| class | attachment_transform |
| Defines a transform from a row to an attachment object. More... | |
| class | basic_table |
| Implementation of an ANSI TC (64k rows) and a unicode TC. More... | |
| class | block |
| The base class of the block class hierarchy. More... | |
| struct | block_info |
| An in memory, database format agnostic version of disk::bbt_leaf_entry. More... | |
| class | bt_leaf_page |
| Contains the actual key value pairs of the btree. More... | |
| class | bt_nonleaf_page |
| Contains references to other bt_pages. More... | |
| class | bt_page |
| class | bth_leaf_node |
| Contains the actual key value pairs of the BTH. More... | |
| class | bth_node |
| The object which forms the root of the BTH hierarchy. More... | |
| class | bth_nonleaf_node |
| Contains references to other bth_node allocations. More... | |
| struct | btree_iter_impl |
| BTree iterator helper class. More... | |
| class | btree_node |
| A BTree Node. More... | |
| class | btree_node_leaf |
| Represents a leaf node in a BTree structure. More... | |
| class | btree_node_nonleaf |
| Represents a non-leaf node in a BTree structure. More... | |
| class | can_not_resize |
| A block or node can not satisfy a resize request. More... | |
| class | const_btree_node_iter |
| The actual iterator type used by the btree_node class hierarchy. More... | |
| class | const_property_object |
| Property object base class. More... | |
| class | const_table_row |
| An abstraction of a table row. More... | |
| class | const_table_row_iter |
| The iterator type exposed by the table for row iteration. More... | |
| class | crc_fail |
| A CRC of an item failed. More... | |
| class | data_block |
| A block which represents end user data. More... | |
| class | database_corrupt |
| The database is corrupt. More... | |
| class | database_impl |
| PST implementation. More... | |
| class | db_context |
| Database external interface. More... | |
| struct | distribution_list_wrapped_entry_id |
| struct | entry_id_bytebag |
| struct | entry_id_header |
| class | extended_block |
| A data block which refers to other data blocks, in order to extend the physical size limit (8k) to a larger logical size. More... | |
| class | external_block |
| Contains actual data. More... | |
| class | file |
| A generic class to read and write to a file. More... | |
| class | folder |
| A folder in a PST file. More... | |
| class | folder_transform_info |
| Defines a transform from a node_info to a folder. More... | |
| class | folder_transform_row |
| Defines a transform from a row of a hierarchy table to a folder. More... | |
| struct | guid |
| A Win32 GUID structure. More... | |
| class | heap |
| Heap-on-Node implementation. More... | |
| class | heap_impl |
| The HN implementation. More... | |
| class | hid_stream_device |
| Defines a stream device for a heap allocation for use by boost iostream. More... | |
| class | hnid_stream_device |
| Defines a stream device which can wrap one of the two prop sources. More... | |
| class | invalid_format |
| The database was not in the expected format. More... | |
| struct | is_nid_type |
| Functor to determine if an object is of the specified node type. More... | |
| class | key_not_found |
| The requested key was not found. More... | |
| class | message |
| Represents a message in a PST file. More... | |
| class | message_transform_info |
| class | message_transform_row |
| class | name_id_map |
| A named property map abstraction. More... | |
| class | named_prop |
| A named property. More... | |
| class | node |
| An in memory representation of the "node" concept in a PST data file. More... | |
| class | node_impl |
| The node implementation. More... | |
| struct | node_info |
| An in memory, database format agnostic version of disk::nbt_leaf_entry. More... | |
| class | node_stream_device |
| Defines a stream device for a node for use by boost iostream. More... | |
| class | not_implemented |
| This function or method has not been implemented. More... | |
| class | page |
| Generic base class for all page typesA page which forms a node in the NBT or BBT. More... | |
| struct | page_info |
| An in memory, database format agnostic version of disk::block_reference used specifically for the page class hierarchy. More... | |
| class | property_bag |
| Property Context (PC) Implementation. More... | |
| class | pst |
| A PST file. More... | |
| class | recipient |
| A recipient of a message. More... | |
| struct | recipient_oneoff_entry_id |
| One-off recipient EntryID [MS-OXCDATA] 2.2.5.1. More... | |
| struct | recipient_transform |
| Defines a transform from a row to a recipient object. More... | |
| class | search_folder |
| Search Folder object. More... | |
| class | search_folder_transform_row |
| Defines a transform from a row of a hierarchy table to a search_folder. More... | |
| class | sig_mismatch |
| An unexpected signature was encountered. More... | |
| class | subnode_block |
| A block which contains information about subnodes. More... | |
| struct | subnode_info |
| An in memory, database format agnostic version of disk::sub_leaf_entry. More... | |
| class | subnode_leaf_block |
| Contains the actual subnode information. More... | |
| class | subnode_nonleaf_block |
| Contains references to subnode_leaf_blocks. More... | |
| class | subnode_transform_info |
| Defines a transform from a subnode_info to an actual node object. More... | |
| class | table |
| The actual table object that clients reference. More... | |
| class | table_impl |
| Table implementation. More... | |
| class | unexpected_block |
| An unexpected block or block type was encountered. More... | |
| class | unexpected_page |
| An unexpected page or page type was encountered. More... | |
| class | write_error |
| An error occured writing to the file. More... | |
Enumerations | |
| enum class | distribution_list_entry_id_type { one_off = 0 , contact = 3 , personal_distribution_list = 4 , mail_user_gal = 5 , distribution_list_gal = 6 } |
| enum | nid_type { nid_type_none = 0x00 , nid_type_internal = 0x01 , nid_type_folder = 0x02 , nid_type_search_folder = 0x03 , nid_type_message = 0x04 , nid_type_attachment = 0x05 , nid_type_search_update_queue = 0x06 , nid_type_search_criteria_object = 0x07 , nid_type_associated_message = 0x08 , nid_type_storage = 0x09 , nid_type_contents_table_index = 0x0A , nid_type_receive_folder_table = 0x0B , nid_type_outgoing_queue_table = 0x0C , nid_type_hierarchy_table = 0x0D , nid_type_contents_table = 0x0E , nid_type_associated_contents_table = 0x0F , nid_type_search_contents_table = 0x10 , nid_type_attachment_table = 0x11 , nid_type_recipient_table = 0x12 , nid_type_search_table_index = 0x13 , nid_type_contents_smp = 0x14 , nid_type_associated_contents_smp = 0x15 , nid_type_change_history_table = 0x16 , nid_type_tombstone_table = 0x17 , nid_type_tombstone_date_table = 0x18 , nid_type_lrep_dups_table = 0x19 , nid_type_folder_path_tombstone_table = 0x1A , nid_type_ltp = 0x1F , nid_type_max = 0x20 } |
| Different node types found in a PST file. More... | |
| enum | predefined_nid { nid_message_store = make_nid(nid_type_internal, 0x1) , nid_name_id_map = make_nid(nid_type_internal, 0x3) , nid_normal_folder_template = make_nid(nid_type_folder, 0x6) , nid_search_folder_template = make_nid(nid_type_search_folder, 0x7) , nid_root_folder = make_nid(nid_type_folder, 0x9) , nid_search_management_queue = make_nid(nid_type_internal, 0xF) , nid_search_activity_list = make_nid(nid_type_internal, 0x10) , nid_search_domain_alternative = make_nid(nid_type_internal, 0x12) , nid_search_domain_object = make_nid(nid_type_internal, 0x13) , nid_search_gatherer_queue = make_nid(nid_type_internal, 0x14) , nid_search_gatherer_descriptor = make_nid(nid_type_internal, 0x15) , nid_table_rebuild_queue = make_nid(nid_type_internal, 0x17) , nid_junk_mail_pihsl = make_nid(nid_type_internal, 0x18) , nid_search_gatherer_folder_queue = make_nid(nid_type_internal, 0x19) , nid_tc_sub_props = make_nid(nid_type_internal, 0x27) , nid_index_template = 0x30 , nid_hierarchy_table_template = make_nid(nid_type_hierarchy_table, nid_index_template) , nid_contents_table_template = make_nid(nid_type_contents_table, nid_index_template) , nid_associated_contents_table_template = make_nid(nid_type_associated_contents_table, nid_index_template) , nid_search_contents_table_template = make_nid(nid_type_search_contents_table, nid_index_template) , nid_smp_template = make_nid(nid_type_contents_smp, nid_index_template) , nid_tombstone_table_template = make_nid(nid_type_tombstone_table, nid_index_template) , nid_lrep_dups_table_template = make_nid(nid_type_lrep_dups_table, nid_index_template) , nid_receive_folders = make_nid(nid_type_receive_folder_table, 0x31) , nid_outgoing_queue = make_nid(nid_type_outgoing_queue_table, 0x32) , nid_attachment_table = make_nid(nid_type_attachment_table, 0x33) , nid_recipient_table = make_nid(nid_type_recipient_table, 0x34) , nid_change_history_table = make_nid(nid_type_change_history_table, 0x35) , nid_tombstone_table = make_nid(nid_type_tombstone_table, 0x36) , nid_tombstone_date_table = make_nid(nid_type_tombstone_date_table, 0x37) , nid_all_message_search_folder = make_nid(nid_type_search_folder, 0x39) , nid_all_message_search_contents = make_nid(nid_type_search_contents_table, 0x39) , nid_lrep_gmp = make_nid(nid_type_internal, 0x40) , nid_lrep_folders_smp = make_nid(nid_type_internal, 0x41) , nid_lrep_folders_table = make_nid(nid_type_internal, 0x42) , nid_folder_path_tombstone_table = make_nid(nid_type_internal, 0x43) , nid_hst_hmp = make_nid(nid_type_internal, 0x60) , nid_index_prv_pub_base = 0x100 , nid_pub_root_folder = make_prv_pub_nid(0) , nid_prv_root_folder = make_prv_pub_nid(5) , nid_criterr_notification = make_nid(nid_type_internal, 0x3FD) , nid_object_notification = make_nid(nid_type_internal, 0x3FE) , nid_newemail_notification = make_nid(nid_type_internal, 0x3FF) , nid_extended_notification = make_nid(nid_type_internal, 0x400) , nid_indexing_notification = make_nid(nid_type_internal, 0x401) } |
| The predefined nodes in a PST/OST file. More... | |
| enum | prop_type { prop_type_unspecified = 0 , prop_type_null = 1 , prop_type_short = 2 , prop_type_mv_short = 4098 , prop_type_long = 3 , prop_type_mv_long = 4099 , prop_type_float = 4 , prop_type_mv_float = 4100 , prop_type_double = 5 , prop_type_mv_double = 4101 , prop_type_currency = 6 , prop_type_mv_currency = 4102 , prop_type_apptime = 7 , prop_type_mv_apptime = 4103 , prop_type_error = 10 , prop_type_boolean = 11 , prop_type_object = 13 , prop_type_longlong = 20 , prop_type_mv_longlong = 4116 , prop_type_string = 30 , prop_type_mv_string = 4126 , prop_type_wstring = 31 , prop_type_mv_wstring = 4127 , prop_type_systime = 64 , prop_type_mv_systime = 4160 , prop_type_guid = 72 , prop_type_mv_guid = 4168 , prop_type_binary = 258 , prop_type_mv_binary = 4354 } |
| The different property types as defined by MAPI. More... | |
| enum | recipient_type { mapi_to = 1 , mapi_cc = 2 , mapi_bcc = 3 } |
| The different recipient types as defined by MAPI. More... | |
Functions | |
| template<> | |
| std::vector< byte > | const_property_object::read_prop< std::vector< byte > > (prop_id id) const |
| template<> | |
| std::vector< std::vector< byte > > | const_property_object::read_prop_array< std::vector< byte > > (prop_id id) const |
| template<> | |
| std::wstring | const_property_object::read_prop< std::wstring > (prop_id id) const |
| template<> | |
| std::vector< std::wstring > | const_property_object::read_prop_array< std::wstring > (prop_id id) const |
| template<> | |
| std::string | const_property_object::read_prop< std::string > (prop_id id) const |
| template<> | |
| std::vector< std::string > | const_property_object::read_prop_array< std::string > (prop_id id) const |
| table_ptr | open_table (const node &n) |
| Open the specified node as a table. | |
| table_ptr | open_table (const node &, alias_tag) |
| Open the specified node as a table. | |
| shared_db_ptr | open_database (const std::wstring &filename) |
| Open a db_context for the given file. | |
| shared_db_ptr | open_database (std::shared_ptr< file > file) |
| Open a db_context for the given file instance. | |
| shared_db_ptr | open_database (const shared_db_ptr &other_database) |
| Open a db_context by copying the in-memory header and file handle from another db_context. | |
| std::shared_ptr< small_pst > | open_small_pst (const std::wstring &filename) |
| Try to open the given file as an ANSI store. | |
| std::shared_ptr< small_pst > | open_small_pst (std::shared_ptr< file > file) |
| Try to open the given file as an ANSI store with custom file instance. | |
| std::shared_ptr< large_pst > | open_large_pst (const std::wstring &filename) |
| Try to open the given file as a Unicode store. | |
| std::shared_ptr< large_pst > | open_large_pst (std::shared_ptr< file > file) |
| Try to open the given file as a Unicode store with custom file instance. | |
| std::ostream & | operator<< (std::ostream &out, const attachment &attach) |
| operator<< overload for writing an attachment to an ostream | |
| nid_type | get_nid_type (node_id id) |
| Get a node type from a node id. | |
| ulong | get_nid_index (node_id id) |
| Get a node index from a node id. | |
| ulong | get_heap_page (heap_id id) |
| Get the heap page from the heap id. | |
| ulong | get_heap_index (heap_id id) |
| Get the index from the heap id. | |
| heap_id | make_heap_id (ulong page, ulong index) |
| Create a heap_id from a page and an index. | |
| bool | 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 | is_subnode_id (heapnode_id id) |
| Inspects a heapnode_id (also known as a HNID) to determine if it is a node_id (NID) | |
| bool | guid_eq (const guid &l, const guid &r) |
| time_t | filetime_to_time_t (ulonglong filetime) |
| Convert from a filetime to time_t. | |
| ulonglong | time_t_to_filetime (time_t time) |
| Convert from a time_t to filetime. | |
| time_t | vt_date_to_time_t (double vt_time) |
| Convert from a VT_DATE to a time_t. | |
| double | time_t_to_vt_date (time_t time) |
| Convert from a time_t to a VT_DATE. | |
| bool | test_bit (const byte *pbytes, ulong bit) |
| Test to see if the specified bit in the buffer is set. | |
| std::string | bytes_to_string (const std::vector< byte > &bytes) |
| Convert an array of bytes to a std::wstring. | |
| std::wstring | bytes_to_wstring (const std::vector< byte > &bytes) |
| Convert an array of bytes to a std::wstring. | |
| std::vector< byte > | wstring_to_bytes (const std::wstring &wstr) |
| Convert a std::wstring to an array of bytes. | |
Variables | |
| const ulong | nid_type_mask = 0x1FL |
| The portion of a node_id reserved for the type. | |
| const byte | message_subject_prefix_lead_byte = 0x01 |
| A sentinel byte which indicates the message subject contains a prefix. | |
| const guid | ps_none = { 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 } } |
| The NULL guid. | |
| const guid | ps_mapi = { 0x20328, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
| The PS_MAPI guid. | |
| const guid | ps_public_strings = { 0x20329, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
| The PS_PUBLIC_STRINGS guid. | |
| const guid | ps_appointment = {0x62002, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
| The PS_APPOINTMENT guid. | |
| const guid | ps_task = {0x62003, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
| The PS_TASK guid. | |
| const guid | ps_common = {0x62008, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
| The PS_COMMON guid. | |
| const guid | ps_address = {0x62004, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
| The PSETID_Address guid. | |
| const guid | ps_meeting = {0x6ED8DA90, 0x450B, 0x101B, { 0x98, 0xDA, 0x00, 0xAA, 0x00, 0x3F, 0x13, 0x05 } } |
| The PSETID_Meeting guid. | |
| const guid | ps_internet_headers = {0x20386, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
| The PS_INTERNET_HEADERS guid. | |
| const guid | ps_sharing = {0x62040, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
| The PSETID_Sharing guid. | |
| const guid | ps_log = {0x6200A, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
| The PSETID_Log guid. | |
| const guid | ps_postrss = {0x62041, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
| The PSETID_PostRss guid. | |
| const guid | ps_note = {0x6200E, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
| The PSETID_Note guid. | |
| const guid | ps_calendarassistant = {0x11000E07, 0xB51B, 0x40D6, { 0xAF, 0x21, 0xCA, 0xA8, 0x5E, 0xDA, 0xB1, 0xD0 } } |
| The PSETID_CalendarAssistant guid. | |
| const guid | ps_remote = {0x62014, 0, 0, { 0xc0, 0, 0, 0, 0, 0, 0, 0x46 } } |
| The PSETID_Remote guid. | |
| const guid | provider_uid_wrapped_entry_id = {0xD3AD91C0, 0x9D51, 0x11CF, { 0xA4, 0xA9, 0x00, 0xAA, 0x00, 0x47, 0xFA, 0xA4 } } |
| The ProviderUID for WrappedEntryId. | |
| const guid | provider_uid_recipient_oneoff = {0xA41F2B81, 0xA3BE, 0x1910, { 0x9D, 0x6E, 0x00, 0xDD, 0x01, 0x0F, 0x54, 0x02 } } |
| The ProviderUID for Recipient One-Off EntryID. | |
Contains the definition of all in memory representations of disk structures.
Definition at line 76 of file database_iface.h.
Definition at line 71 of file database_iface.h.
Definition at line 66 of file database_iface.h.
Definition at line 85 of file database_iface.h.
Definition at line 83 of file database_iface.h.
Definition at line 84 of file database_iface.h.
| typedef std::shared_ptr<const table_impl> pstsdk::const_table_ptr |
| typedef std::shared_ptr<heap_impl> pstsdk::heap_ptr |
Definition at line 32 of file database.h.
Definition at line 75 of file database_iface.h.
Definition at line 70 of file database_iface.h.
Definition at line 65 of file database_iface.h.
| typedef std::shared_ptr<db_context> pstsdk::shared_db_ptr |
Definition at line 100 of file database_iface.h.
Definition at line 33 of file database.h.
| typedef std::shared_ptr<table_impl> pstsdk::table_ptr |
| typedef std::weak_ptr<db_context> pstsdk::weak_db_ptr |
Definition at line 101 of file database_iface.h.
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
Definition at line 360 of file primitives.h.
| const guid pstsdk::provider_uid_recipient_oneoff = {0xA41F2B81, 0xA3BE, 0x1910, { 0x9D, 0x6E, 0x00, 0xDD, 0x01, 0x0F, 0x54, 0x02 } } |
The ProviderUID for Recipient One-Off EntryID.
Definition at line 427 of file primitives.h.
| const guid pstsdk::provider_uid_wrapped_entry_id = {0xD3AD91C0, 0x9D51, 0x11CF, { 0xA4, 0xA9, 0x00, 0xAA, 0x00, 0x47, 0xFA, 0xA4 } } |
The ProviderUID for WrappedEntryId.
Definition at line 422 of file primitives.h.
The PSETID_Address guid.
Definition at line 394 of file primitives.h.
The PS_APPOINTMENT guid.
Definition at line 385 of file primitives.h.
| const guid pstsdk::ps_calendarassistant = {0x11000E07, 0xB51B, 0x40D6, { 0xAF, 0x21, 0xCA, 0xA8, 0x5E, 0xDA, 0xB1, 0xD0 } } |
The PSETID_CalendarAssistant guid.
Definition at line 415 of file primitives.h.
The PS_COMMON guid.
Definition at line 391 of file primitives.h.
The PS_INTERNET_HEADERS guid.
Definition at line 400 of file primitives.h.
The PSETID_Log guid.
Definition at line 406 of file primitives.h.
| const guid pstsdk::ps_meeting = {0x6ED8DA90, 0x450B, 0x101B, { 0x98, 0xDA, 0x00, 0xAA, 0x00, 0x3F, 0x13, 0x05 } } |
The PSETID_Meeting guid.
Definition at line 397 of file primitives.h.
The PSETID_Note guid.
Definition at line 412 of file primitives.h.
The PSETID_PostRss guid.
Definition at line 409 of file primitives.h.
The PSETID_Remote guid.
Definition at line 418 of file primitives.h.
The PSETID_Sharing guid.
Definition at line 403 of file primitives.h.
The PS_TASK guid.
Definition at line 388 of file primitives.h.