---
name: "libpff"
section: "3"
platform: "linux"
package: "libpff-dev"
version: "20180714-3.1+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/libpff"
---

# libpff(3)

Library to access the Personal Folder File (OST, PAB and PST) format

## NAME

**libpff.h** – Library to access the Personal Folder File (OST, PAB and PST) format

## SYNOPSIS

**#include \<libpff.h\>**

Support functions

*const* *char* *\**\

**libpff\_get\_version**(*void*);

*int*\

**libpff\_get\_access\_flags\_read**(*void*);

*int*\

**libpff\_get\_codepage**(*int \*codepage*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_set\_codepage**(*int codepage*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_check\_file\_signature**(*const char \*filename*, *libpff\_error\_t \*\*error*);

Available when compiled with wide character string support:

*int*\

**libpff\_check\_file\_signature\_wide**(*const wchar\_t \*filename*, *libpff\_error\_t \*\*error*);

Available when compiled with libbfio support:

*int*\

**libpff\_check\_file\_signature\_file\_io\_handle**(*libbfio\_handle\_t \*file\_io\_handle*, *libpff\_error\_t \*\*error*);

Notify functions

*void*\

**libpff\_notify\_set\_verbose**(*int verbose*);

*int*\

**libpff\_notify\_set\_stream**(*FILE \*stream*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_notify\_stream\_open**(*const char \*filename*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_notify\_stream\_close**(*libpff\_error\_t \*\*error*);

Error functions

*void*\

**libpff\_error\_free**(*libpff\_error\_t \*\*error*);

*int*\

**libpff\_error\_fprint**(*libpff\_error\_t \*error*, *FILE \*stream*);

*int*\

**libpff\_error\_sprint**(*libpff\_error\_t \*error*, *char \*string*, *size\_t size*);

*int*\

**libpff\_error\_backtrace\_fprint**(*libpff\_error\_t \*error*, *FILE \*stream*);

*int*\

**libpff\_error\_backtrace\_sprint**(*libpff\_error\_t \*error*, *char \*string*, *size\_t size*);

File functions

*int*\

**libpff\_file\_initialize**(*libpff\_file\_t \*\*file*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_free**(*libpff\_file\_t \*\*file*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_signal\_abort**(*libpff\_file\_t \*file*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_open**(*libpff\_file\_t \*file*, *const char \*filename*, *int access\_flags*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_close**(*libpff\_file\_t \*file*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_is\_corrupted**(*libpff\_file\_t \*file*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_recover\_items**(*libpff\_file\_t \*file*, *uint8\_t recovery\_flags*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_size**(*libpff\_file\_t \*file*, *size64\_t \*size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_content\_type**(*libpff\_file\_t \*file*, *uint8\_t \*content\_type*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_type**(*libpff\_file\_t \*file*, *uint8\_t \*type*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_encryption\_type**(*libpff\_file\_t \*file*, *uint8\_t \*encryption\_type*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_ascii\_codepage**(*libpff\_file\_t \*file*, *int \*ascii\_codepage*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_set\_ascii\_codepage**(*libpff\_file\_t \*file*, *int ascii\_codepage*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_number\_of\_unallocated\_blocks**(*libpff\_file\_t \*file*, *int unallocated\_block\_type*, *int \*number\_of\_unallocated\_blocks*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_unallocated\_block**(*libpff\_file\_t \*file*, *int unallocated\_block\_type*, *int unallocated\_block\_index*, *off64\_t \*offset*, *size64\_t \*size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_root\_item**(*libpff\_file\_t \*file*, *libpff\_item\_t \*\*root\_item*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_message\_store**(*libpff\_file\_t \*file*, *libpff\_item\_t \*\*message\_store*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_name\_to\_id\_map**(*libpff\_file\_t \*file*, *libpff\_item\_t \*\*name\_to\_id\_map*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_root\_folder**(*libpff\_file\_t \*file*, *libpff\_item\_t \*\*root\_folder*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_item\_by\_identifier**(*libpff\_file\_t \*file*, *uint32\_t item\_identifier*, *libpff\_item\_t \*\*item*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_number\_of\_orphan\_items**(*libpff\_file\_t \*file*, *int \*number\_of\_orphan\_items*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_orphan\_item\_by\_index**(*libpff\_file\_t \*file*, *int orphan\_item\_index*, *libpff\_item\_t \*\*orphan\_item*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_number\_of\_recovered\_items**(*libpff\_file\_t \*file*, *int \*number\_of\_recovered\_items*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_file\_get\_recovered\_item\_by\_index**(*libpff\_file\_t \*file*, *int recovered\_item\_index*, *libpff\_item\_t \*\*recovered\_item*, *libpff\_error\_t \*\*error*);

Available when compiled with wide character string support:

*int*\

**libpff\_file\_open\_wide**(*libpff\_file\_t \*file*, *const wchar\_t \*filename*, *int access\_flags*, *libpff\_error\_t \*\*error*);

Available when compiled with libbfio support:

*int*\

**libpff\_file\_open\_file\_io\_handle**(*libpff\_file\_t \*file*, *libbfio\_handle\_t \*file\_io\_handle*, *int access\_flags*, *libpff\_error\_t \*\*error*);

Item functions

*int*\

**libpff\_item\_clone**(*libpff\_item\_t \*\*destination\_item*, *libpff\_item\_t \*source\_item*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_item\_free**(*libpff\_item\_t \*\*item*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_item\_get\_identifier**(*libpff\_item\_t \*item*, *uint32\_t \*identifier*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_item\_get\_number\_of\_record\_sets**(*libpff\_item\_t \*item*, *int \*number\_of\_record\_sets*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_item\_get\_record\_set\_by\_index**(*libpff\_item\_t \*item*, *int record\_set\_index*, *libpff\_record\_set\_t \*\*record\_set*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_item\_get\_number\_of\_entries**(*libpff\_item\_t \*item*, *uint32\_t \*number\_of\_entries*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_item\_get\_type**(*libpff\_item\_t \*item*, *uint8\_t \*item\_type*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_item\_get\_number\_of\_sub\_items**(*libpff\_item\_t \*item*, *int \*number\_of\_sub\_items*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_item\_get\_sub\_item**(*libpff\_item\_t \*item*, *int sub\_item\_index*, *libpff\_item\_t \*\*sub\_item*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_item\_get\_sub\_item\_by\_identifier**(*libpff\_item\_t \*item*, *uint32\_t sub\_item\_identifier*, *libpff\_item\_t \*\*sub\_item*, *libpff\_error\_t \*\*error*);

Name to ID map entry functions

*int*\

**libpff\_name\_to\_id\_map\_entry\_get\_type**(*libpff\_name\_to\_id\_map\_entry\_t \*name\_to\_id\_map\_entry*, *uint8\_t \*entry\_type*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_name\_to\_id\_map\_entry\_get\_number**(*libpff\_name\_to\_id\_map\_entry\_t \*name\_to\_id\_map\_entry*, *uint32\_t \*number*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_name\_to\_id\_map\_entry\_get\_utf8\_string\_size**(*libpff\_name\_to\_id\_map\_entry\_t \*name\_to\_id\_map\_entry*, *size\_t \*utf8\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_name\_to\_id\_map\_entry\_get\_utf8\_string**(*libpff\_name\_to\_id\_map\_entry\_t \*name\_to\_id\_map\_entry*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_name\_to\_id\_map\_entry\_get\_utf16\_string\_size**(*libpff\_name\_to\_id\_map\_entry\_t \*name\_to\_id\_map\_entry*, *size\_t \*utf16\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_name\_to\_id\_map\_entry\_get\_utf16\_string**(*libpff\_name\_to\_id\_map\_entry\_t \*name\_to\_id\_map\_entry*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_name\_to\_id\_map\_entry\_get\_guid**(*libpff\_name\_to\_id\_map\_entry\_t \*name\_to\_id\_map\_entry*, *uint8\_t \*guid*, *size\_t size*, *libpff\_error\_t \*\*error*);

Record set functions

*int*\

**libpff\_record\_set\_free**(*libpff\_record\_set\_t \*\*record\_set*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_set\_get\_number\_of\_entries**(*libpff\_record\_set\_t \*record\_set*, *int \*number\_of\_entries*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_set\_get\_entry\_by\_index**(*libpff\_record\_set\_t \*record\_set*, *int record\_entry\_index*, *libpff\_record\_entry\_t \*\*record\_entry*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_set\_get\_entry\_by\_type**(*libpff\_record\_set\_t \*record\_set*, *uint32\_t entry\_type*, *uint32\_t value\_type*, *libpff\_record\_entry\_t \*\*record\_entry*, *uint8\_t flags*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_set\_get\_entry\_by\_utf8\_name**(*libpff\_record\_set\_t \*record\_set*, *const uint8\_t \*utf8\_string*, *size\_t utf8\_string\_length*, *uint32\_t value\_type*, *libpff\_record\_entry\_t \*\*record\_entry*, *uint8\_t flags*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_set\_get\_entry\_by\_utf16\_name**(*libpff\_record\_set\_t \*record\_set*, *const uint16\_t \*utf16\_string*, *size\_t utf16\_string\_length*, *uint32\_t value\_type*, *libpff\_record\_entry\_t \*\*record\_entry*, *uint8\_t flags*, *libpff\_error\_t \*\*error*);

Record entry functions

*int*\

**libpff\_record\_entry\_free**(*libpff\_record\_entry\_t \*\*record\_entry*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_entry\_type**(*libpff\_record\_entry\_t \*record\_entry*, *uint32\_t \*entry\_type*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_value\_type**(*libpff\_record\_entry\_t \*record\_entry*, *uint32\_t \*value\_type*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_name\_to\_id\_map\_entry**(*libpff\_record\_entry\_t \*record\_entry*, *libpff\_name\_to\_id\_map\_entry\_t \*\*name\_to\_id\_map\_entry*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_data\_size**(*libpff\_record\_entry\_t \*record\_entry*, *size\_t \*data\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_data**(*libpff\_record\_entry\_t \*record\_entry*, *uint8\_t \*data*, *size\_t data\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_data\_as\_boolean**(*libpff\_record\_entry\_t \*record\_entry*, *uint8\_t \*value\_boolean*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_data\_as\_16bit\_integer**(*libpff\_record\_entry\_t \*record\_entry*, *uint16\_t \*value\_16bit*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_data\_as\_32bit\_integer**(*libpff\_record\_entry\_t \*record\_entry*, *uint32\_t \*value\_32bit*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_data\_as\_64bit\_integer**(*libpff\_record\_entry\_t \*record\_entry*, *uint64\_t \*value\_64bit*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_data\_as\_filetime**(*libpff\_record\_entry\_t \*record\_entry*, *uint64\_t \*filetime*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_data\_as\_floatingtime**(*libpff\_record\_entry\_t \*record\_entry*, *uint64\_t \*floatingtime*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_data\_as\_size**(*libpff\_record\_entry\_t \*record\_entry*, *size64\_t \*value\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_data\_as\_floating\_point**(*libpff\_record\_entry\_t \*record\_entry*, *double \*value\_floating\_point*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_data\_as\_utf8\_string\_size**(*libpff\_record\_entry\_t \*record\_entry*, *size\_t \*utf8\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_data\_as\_utf8\_string**(*libpff\_record\_entry\_t \*record\_entry*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_data\_as\_utf16\_string\_size**(*libpff\_record\_entry\_t \*record\_entry*, *size\_t \*utf16\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_data\_as\_utf16\_string**(*libpff\_record\_entry\_t \*record\_entry*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_data\_as\_guid**(*libpff\_record\_entry\_t \*record\_entry*, *uint8\_t \*guid\_data*, *size\_t guid\_data\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_record\_entry\_get\_multi\_value**(*libpff\_record\_entry\_t \*record\_entry*, *libpff\_multi\_value\_t \*\*multi\_value*, *libpff\_error\_t \*\*error*);

*ssize\_t*\

**libpff\_record\_entry\_read\_buffer**(*libpff\_record\_entry\_t \*record\_entry*, *uint8\_t \*buffer*, *size\_t buffer\_size*, *libpff\_error\_t \*\*error*);

*off64\_t*\

**libpff\_record\_entry\_seek\_offset**(*libpff\_record\_entry\_t \*record\_entry*, *off64\_t offset*, *int whence*, *libpff\_error\_t \*\*error*);

Multi value functions

*int*\

**libpff\_multi\_value\_free**(*libpff\_multi\_value\_t \*\*multi\_value*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_multi\_value\_get\_number\_of\_values**(*libpff\_multi\_value\_t \*multi\_value*, *int \*number\_of\_values*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_multi\_value\_get\_value**(*libpff\_multi\_value\_t \*multi\_value*, *int value\_index*, *uint32\_t \*value\_type*, *uint8\_t \*\*value\_data*, *size\_t \*value\_data\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_multi\_value\_get\_value\_32bit**(*libpff\_multi\_value\_t \*multi\_value*, *int value\_index*, *uint32\_t \*value\_32bit*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_multi\_value\_get\_value\_64bit**(*libpff\_multi\_value\_t \*multi\_value*, *int value\_index*, *uint64\_t \*value\_64bit*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_multi\_value\_get\_value\_filetime**(*libpff\_multi\_value\_t \*multi\_value*, *int value\_index*, *uint64\_t \*value\_64bit*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_multi\_value\_get\_value\_utf8\_string\_size**(*libpff\_multi\_value\_t \*multi\_value*, *int value\_index*, *size\_t \*utf8\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_multi\_value\_get\_value\_utf8\_string**(*libpff\_multi\_value\_t \*multi\_value*, *int value\_index*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_multi\_value\_get\_value\_utf16\_string\_size**(*libpff\_multi\_value\_t \*multi\_value*, *int value\_index*, *size\_t \*utf16\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_multi\_value\_get\_value\_utf16\_string**(*libpff\_multi\_value\_t \*multi\_value*, *int value\_index*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_multi\_value\_get\_value\_binary\_data\_size**(*libpff\_multi\_value\_t \*multi\_value*, *int value\_index*, *size\_t \*size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_multi\_value\_get\_value\_binary\_data**(*libpff\_multi\_value\_t \*multi\_value*, *int value\_index*, *uint8\_t \*binary\_data*, *size\_t size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_multi\_value\_get\_value\_guid**(*libpff\_multi\_value\_t \*multi\_value*, *int value\_index*, *uint8\_t \*guid*, *size\_t size*, *libpff\_error\_t \*\*error*);

Folder item functions

*int*\

**libpff\_folder\_get\_type**(*libpff\_item\_t \*folder*, *uint8\_t \*type*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_utf8\_name\_size**(*libpff\_item\_t \*folder*, *size\_t \*utf8\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_utf8\_name**(*libpff\_item\_t \*folder*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_utf16\_name\_size**(*libpff\_item\_t \*folder*, *size\_t \*utf16\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_utf16\_name**(*libpff\_item\_t \*folder*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_number\_of\_sub\_folders**(*libpff\_item\_t \*folder*, *int \*number\_of\_sub\_folders*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_sub\_folder**(*libpff\_item\_t \*folder*, *int sub\_folder\_index*, *libpff\_item\_t \*\*sub\_folder*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_sub\_folder\_by\_utf8\_name**(*libpff\_item\_t \*folder*, *uint8\_t \*utf8\_sub\_folder\_name*, *size\_t utf8\_sub\_folder\_name\_size*, *libpff\_item\_t \*\*sub\_folder*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_sub\_folder\_by\_utf16\_name**(*libpff\_item\_t \*folder*, *uint16\_t \*utf16\_sub\_folder\_name*, *size\_t utf16\_sub\_folder\_name\_size*, *libpff\_item\_t \*\*sub\_folder*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_sub\_folders**(*libpff\_item\_t \*folder*, *libpff\_item\_t \*\*sub\_folders*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_number\_of\_sub\_messages**(*libpff\_item\_t \*folder*, *int \*number\_of\_sub\_messages*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_sub\_message**(*libpff\_item\_t \*folder*, *int sub\_message\_index*, *libpff\_item\_t \*\*sub\_message*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_sub\_message\_by\_utf8\_name**(*libpff\_item\_t \*folder*, *uint8\_t \*utf8\_sub\_message\_name*, *size\_t utf8\_sub\_message\_name\_size*, *libpff\_item\_t \*\*sub\_message*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_sub\_message\_by\_utf16\_name**(*libpff\_item\_t \*folder*, *uint16\_t \*utf16\_sub\_message\_name*, *size\_t utf16\_sub\_message\_name\_size*, *libpff\_item\_t \*\*sub\_message*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_sub\_messages**(*libpff\_item\_t \*folder*, *libpff\_item\_t \*\*sub\_messages*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_number\_of\_sub\_associated\_contents**(*libpff\_item\_t \*folder*, *int \*number\_of\_sub\_associated\_contents*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_sub\_associated\_content**(*libpff\_item\_t \*folder*, *int sub\_associated\_content\_index*, *libpff\_item\_t \*\*sub\_associated\_content*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_sub\_associated\_contents**(*libpff\_item\_t \*folder*, *libpff\_item\_t \*\*sub\_associated\_contents*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_folder\_get\_unknowns**(*libpff\_item\_t \*folder*, *libpff\_item\_t \*\*unknowns*, *libpff\_error\_t \*\*error*);

Message item functions

*int*\

**libpff\_message\_get\_entry\_value\_utf8\_string\_size**(*libpff\_item\_t \*message*, *uint32\_t entry\_type*, *size\_t \*utf8\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_entry\_value\_utf8\_string**(*libpff\_item\_t \*message*, *uint32\_t entry\_type*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_entry\_value\_utf16\_string\_size**(*libpff\_item\_t \*message*, *uint32\_t entry\_type*, *size\_t \*utf16\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_entry\_value\_utf16\_string**(*libpff\_item\_t \*message*, *uint32\_t entry\_type*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_client\_submit\_time**(*libpff\_item\_t \*message*, *uint64\_t \*filetime*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_delivery\_time**(*libpff\_item\_t \*message*, *uint64\_t \*filetime*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_creation\_time**(*libpff\_item\_t \*message*, *uint64\_t \*filetime*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_modification\_time**(*libpff\_item\_t \*message*, *uint64\_t \*filetime*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_number\_of\_attachments**(*libpff\_item\_t \*message*, *int \*number\_of\_attachments*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_attachment**(*libpff\_item\_t \*message*, *int attachment\_index*, *libpff\_item\_t \*\*attachment*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_attachments**(*libpff\_item\_t \*message*, *libpff\_item\_t \*\*attachments*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_recipients**(*libpff\_item\_t \*message*, *libpff\_item\_t \*\*recipients*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_plain\_text\_body\_size**(*libpff\_item\_t \*message*, *size\_t \*size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_plain\_text\_body**(*libpff\_item\_t \*message*, *uint8\_t \*message\_body*, *size\_t size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_rtf\_body\_size**(*libpff\_item\_t \*message*, *size\_t \*size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_rtf\_body**(*libpff\_item\_t \*message*, *uint8\_t \*message\_body*, *size\_t size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_html\_body\_size**(*libpff\_item\_t \*message*, *size\_t \*size*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_message\_get\_html\_body**(*libpff\_item\_t \*message*, *uint8\_t \*message\_body*, *size\_t size*, *libpff\_error\_t \*\*error*);

Attachment item functions

*int*\

**libpff\_attachment\_get\_type**(*libpff\_item\_t \*attachment*, *int \*attachment\_type*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_attachment\_get\_data\_size**(*libpff\_item\_t \*attachment*, *size64\_t \*size*, *libpff\_error\_t \*\*error*);

*ssize\_t*\

**libpff\_attachment\_data\_read\_buffer**(*libpff\_item\_t \*attachment*, *uint8\_t \*buffer*, *size\_t buffer\_size*, *libpff\_error\_t \*\*error*);

*off64\_t*\

**libpff\_attachment\_data\_seek\_offset**(*libpff\_item\_t \*attachment*, *off64\_t offset*, *int whence*, *libpff\_error\_t \*\*error*);

*int*\

**libpff\_attachment\_get\_item**(*libpff\_item\_t \*attachment*, *libpff\_item\_t \*\*attached\_item*, *libpff\_error\_t \*\*error*);

Available when compiled with libbfio support:

*int*\

**libpff\_attachment\_get\_data\_file\_io\_handle**(*libpff\_item\_t \*attachment*, *libbfio\_handle\_t \*\*file\_io\_handle*, *libpff\_error\_t \*\*error*);

## DESCRIPTION

The **libpff\_get\_version**() function is used to retrieve the library version.

## RETURN VALUES

Most of the functions return NULL or -1 on error, dependent on the return type. For the actual return values see "libpff.h".

## ENVIRONMENT

None

## FILES

None

## NOTES

libpff can be compiled with wide character support (wchar\_t).

To compile libpff with wide character support use: *./configure* *--enable-wide-character-type=yes*\
  or define: *\_UNICODE*\
  or *UNICODE*\
  during compilation.

*LIBPFF\_WIDE\_CHARACTER\_TYPE*\
  in libpff/features.h can be used to determine if libpff was compiled with wide character support.

## BUGS

Please report bugs of any kind on the project issue tracker: https://github.com/libyal/libpff/issues

## AUTHOR

These man pages are generated from "libpff.h".

## COPYRIGHT

Copyright (C) 2008-2018, Joachim Metz \<joachim.metz@gmail.com\>.

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

## SEE ALSO

the libpff.h include file
