---
name: "libmsiecf"
section: "3"
platform: "linux"
package: "libmsiecf-dev"
version: "20181227-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/libmsiecf"
---

# libmsiecf(3)

Library to access the MSIE Cache File (index.dat) format

## NAME

**libmsiecf.h** – Library to access the MSIE Cache File (index.dat) format

## LIBRARY

library “libmsiecf”

## SYNOPSIS

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

Support functions

*const* *char* *\**\

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

*int*\

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

*int*\

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

*int*\

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

*int*\

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

Available when compiled with wide character string support:

*int*\

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

Available when compiled with libbfio support:

*int*\

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

Notify functions

*void*\

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

*int*\

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

*int*\

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

*int*\

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

Error functions

*void*\

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

*int*\

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

*int*\

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

*int*\

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

*int*\

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

File functions

*int*\

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

*int*\

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

*int*\

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

*int*\

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

*int*\

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

*int*\

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

*int*\

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

*int*\

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

*int*\

**libmsiecf\_file\_get\_format\_version**(*libmsiecf\_file\_t \*file, uint8\_t \*major\_version, uint8\_t \*minor\_version, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_file\_get\_number\_of\_unallocated\_blocks**(*libmsiecf\_file\_t \*file, int \*number\_of\_unallocated\_blocks, libmsiecf\_error\_t \*\*error*);

*int*\

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

*int*\

**libmsiecf\_file\_get\_number\_of\_cache\_directories**(*libmsiecf\_file\_t \*file, int \*number\_of\_cache\_directories, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_file\_get\_cache\_directory\_name**(*libmsiecf\_file\_t \*file, int cache\_directory\_index, char \*string, size\_t string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

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

*int*\

**libmsiecf\_file\_get\_item\_by\_index**(*libmsiecf\_file\_t \*file, int item\_index, libmsiecf\_item\_t \*\*item, libmsiecf\_error\_t \*\*error*);

*int*\

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

*int*\

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

Available when compiled with wide character string support:

*int*\

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

Available when compiled with libbfio support:

*int*\

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

Item functions

*int*\

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

*int*\

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

*int*\

**libmsiecf\_item\_get\_flags**(*libmsiecf\_item\_t \*item, uint8\_t \*item\_flags, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_item\_get\_offset**(*libmsiecf\_item\_t \*item, off64\_t \*offset, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_item\_get\_offset\_range**(*libmsiecf\_item\_t \*item, off64\_t \*offset, size64\_t \*size, libmsiecf\_error\_t \*\*error*);

URL item functions

*int*\

**libmsiecf\_url\_get\_type**(*libmsiecf\_item\_t \*url, uint8\_t \*url\_item\_type, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_primary\_time**(*libmsiecf\_item\_t \*url, uint64\_t \*filetime, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_secondary\_time**(*libmsiecf\_item\_t \*url, uint64\_t \*filetime, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_expiration\_time**(*libmsiecf\_item\_t \*url, uint64\_t \*expiration\_time, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_last\_checked\_time**(*libmsiecf\_item\_t \*url, uint32\_t \*fat\_date\_time, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_cached\_file\_size**(*libmsiecf\_item\_t \*url, uint64\_t \*cached\_file\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_cache\_directory\_index**(*libmsiecf\_item\_t \*url, uint8\_t \*cache\_directory\_index, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_number\_of\_hits**(*libmsiecf\_item\_t \*url, uint32\_t \*number\_of\_hits, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_location\_size**(*libmsiecf\_item\_t \*url, size\_t \*string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_location**(*libmsiecf\_item\_t \*url, char \*string, size\_t string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_utf8\_location\_size**(*libmsiecf\_item\_t \*url, size\_t \*utf8\_string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_utf8\_location**(*libmsiecf\_item\_t \*url, uint8\_t \*utf8\_string, size\_t utf8\_string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_utf16\_location\_size**(*libmsiecf\_item\_t \*url, size\_t \*utf16\_string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_utf16\_location**(*libmsiecf\_item\_t \*url, uint16\_t \*utf16\_string, size\_t utf16\_string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_filename\_size**(*libmsiecf\_item\_t \*url, size\_t \*string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_filename**(*libmsiecf\_item\_t \*url, char \*string, size\_t string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_utf8\_filename\_size**(*libmsiecf\_item\_t \*url, size\_t \*utf8\_string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_utf8\_filename**(*libmsiecf\_item\_t \*url, uint8\_t \*utf8\_string, size\_t utf8\_string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_utf16\_filename\_size**(*libmsiecf\_item\_t \*url, size\_t \*utf16\_string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_utf16\_filename**(*libmsiecf\_item\_t \*url, uint16\_t \*utf16\_string, size\_t utf16\_string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_data\_size**(*libmsiecf\_item\_t \*url, size\_t \*data\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_url\_get\_data**(*libmsiecf\_item\_t \*url, uint8\_t \*data, size\_t data\_size, libmsiecf\_error\_t \*\*error*);

Redirected item functions

*int*\

**libmsiecf\_redirected\_get\_location\_size**(*libmsiecf\_item\_t \*redirected, size\_t \*string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_redirected\_get\_location**(*libmsiecf\_item\_t \*redirected, char \*string, size\_t string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_redirected\_get\_utf8\_location\_size**(*libmsiecf\_item\_t \*redirected, size\_t \*utf8\_string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_redirected\_get\_utf8\_location**(*libmsiecf\_item\_t \*redirected, uint8\_t \*utf8\_string, size\_t utf8\_string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_redirected\_get\_utf16\_location\_size**(*libmsiecf\_item\_t \*redirected, size\_t \*utf16\_string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_redirected\_get\_utf16\_location**(*libmsiecf\_item\_t \*redirected, uint16\_t \*utf16\_string, size\_t utf16\_string\_size, libmsiecf\_error\_t \*\*error*);

Leak item functions

*int*\

**libmsiecf\_leak\_get\_cached\_file\_size**(*libmsiecf\_item\_t \*leak, uint64\_t \*cached\_file\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_leak\_get\_cache\_directory\_index**(*libmsiecf\_item\_t \*leak, uint8\_t \*cache\_directory\_index, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_leak\_get\_filename\_size**(*libmsiecf\_item\_t \*leak, size\_t \*string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_leak\_get\_filename**(*libmsiecf\_item\_t \*leak, char \*string, size\_t string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_leak\_get\_utf8\_filename\_size**(*libmsiecf\_item\_t \*leak, size\_t \*utf8\_string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_leak\_get\_utf8\_filename**(*libmsiecf\_item\_t \*leak, uint8\_t \*utf8\_string, size\_t utf8\_string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_leak\_get\_utf16\_filename\_size**(*libmsiecf\_item\_t \*leak, size\_t \*utf16\_string\_size, libmsiecf\_error\_t \*\*error*);

*int*\

**libmsiecf\_leak\_get\_utf16\_filename**(*libmsiecf\_item\_t \*leak, uint16\_t \*utf16\_string, size\_t utf16\_string\_size, libmsiecf\_error\_t \*\*error*);

## DESCRIPTION

The **libmsiecf\_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 "libmsiecf.h".

## ENVIRONMENT

None

## FILES

None

## NOTES

libmsiecf allows to be compiled with wide character support (wchar\_t).

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

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

## BUGS

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

## AUTHOR

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

## COPYRIGHT

Copyright (C) 2009-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 libmsiecf.h include file
