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

# libfwsi(3)

Library to access the Windows Shell Item format

## NAME

**libfwsi.h** – Library to access the Windows Shell Item format

## SYNOPSIS

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

Support functions

*const* *char* *\**\

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

Notify functions

*void*\

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

*int*\

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

*int*\

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

*int*\

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

Error functions

*void*\

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

*int*\

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

*int*\

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

*int*\

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

*int*\

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

Item list functions

*int*\

**libfwsi\_item\_list\_initialize**(*libfwsi\_item\_list\_t \*\*item\_list*, *libfwsi\_error\_t \*\*error*);

*int*\

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

*int*\

**libfwsi\_item\_list\_copy\_from\_byte\_stream**(*libfwsi\_item\_list\_t \*item\_list*, *const uint8\_t \*byte\_stream*, *size\_t byte\_stream\_size*, *int ascii\_codepage*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_item\_list\_get\_data\_size**(*libfwsi\_item\_list\_t \*item\_list*, *size\_t \*data\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

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

*int*\

**libfwsi\_item\_list\_get\_item**(*libfwsi\_item\_list\_t \*item\_list*, *int item\_index*, *libfwsi\_item\_t \*\*item*, *libfwsi\_error\_t \*\*error*);

Item functions

*int*\

**libfwsi\_item\_initialize**(*libfwsi\_item\_t \*\*item*, *libfwsi\_error\_t \*\*error*);

*int*\

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

*int*\

**libfwsi\_item\_copy\_from\_byte\_stream**(*libfwsi\_item\_t \*item*, *const uint8\_t \*byte\_stream*, *size\_t byte\_stream\_size*, *int ascii\_codepage*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_item\_get\_type**(*libfwsi\_item\_t \*item*, *int \*type*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_item\_get\_class\_type**(*libfwsi\_item\_t \*item*, *uint8\_t \*class\_type*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_item\_get\_signature**(*libfwsi\_item\_t \*item*, *uint32\_t \*signature*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_item\_get\_data\_size**(*libfwsi\_item\_t \*item*, *size\_t \*data\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_item\_get\_delegate\_folder\_identifier**(*libfwsi\_item\_t \*item*, *uint8\_t \*guid\_data*, *size\_t guid\_data\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_item\_get\_number\_of\_extension\_blocks**(*libfwsi\_item\_t \*item*, *int \*number\_of\_extension\_blocks*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_item\_get\_extension\_block**(*libfwsi\_item\_t \*item*, *int extension\_block\_index*, *libfwsi\_extension\_block\_t \*\*extension\_block*, *libfwsi\_error\_t \*\*error*);

Root folder item functions

*int*\

**libfwsi\_root\_folder\_get\_shell\_folder\_identifier**(*libfwsi\_item\_t \*root\_folder*, *uint8\_t \*guid\_data*, *size\_t guid\_data\_size*, *libfwsi\_error\_t \*\*error*);

Volume item functions

*int*\

**libfwsi\_volume\_get\_utf8\_name\_size**(*libfwsi\_item\_t \*volume*, *size\_t \*utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_volume\_get\_utf8\_name**(*libfwsi\_item\_t \*volume*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_volume\_get\_utf16\_name\_size**(*libfwsi\_item\_t \*volume*, *size\_t \*utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_volume\_get\_utf16\_name**(*libfwsi\_item\_t \*volume*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_volume\_get\_identifier**(*libfwsi\_item\_t \*volume*, *uint8\_t \*guid\_data*, *size\_t guid\_data\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_volume\_get\_shell\_folder\_identifier**(*libfwsi\_item\_t \*volume*, *uint8\_t \*guid\_data*, *size\_t guid\_data\_size*, *libfwsi\_error\_t \*\*error*);

File entry item functions

*int*\

**libfwsi\_file\_entry\_get\_file\_size**(*libfwsi\_item\_t \*file\_entry*, *uint32\_t \*file\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_get\_modification\_time**(*libfwsi\_item\_t \*file\_entry*, *uint32\_t \*fat\_date\_time*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_get\_file\_attribute\_flags**(*libfwsi\_item\_t \*file\_entry*, *uint32\_t \*file\_attribute\_flags*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_get\_utf8\_name\_size**(*libfwsi\_item\_t \*file\_entry*, *size\_t \*utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_get\_utf8\_name**(*libfwsi\_item\_t \*file\_entry*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_get\_utf16\_name\_size**(*libfwsi\_item\_t \*file\_entry*, *size\_t \*utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_get\_utf16\_name**(*libfwsi\_item\_t \*file\_entry*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

Network location item functions

*int*\

**libfwsi\_network\_location\_get\_utf8\_location\_size**(*libfwsi\_item\_t \*network\_location*, *size\_t \*utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_network\_location\_get\_utf8\_location**(*libfwsi\_item\_t \*network\_location*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_network\_location\_get\_utf16\_location\_size**(*libfwsi\_item\_t \*network\_location*, *size\_t \*utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_network\_location\_get\_utf16\_location**(*libfwsi\_item\_t \*network\_location*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_network\_location\_get\_utf8\_description\_size**(*libfwsi\_item\_t \*network\_location*, *size\_t \*utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_network\_location\_get\_utf8\_description**(*libfwsi\_item\_t \*network\_location*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_network\_location\_get\_utf16\_description\_size**(*libfwsi\_item\_t \*network\_location*, *size\_t \*utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_network\_location\_get\_utf16\_description**(*libfwsi\_item\_t \*network\_location*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_network\_location\_get\_utf8\_comments\_size**(*libfwsi\_item\_t \*network\_location*, *size\_t \*utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_network\_location\_get\_utf8\_comments**(*libfwsi\_item\_t \*network\_location*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_network\_location\_get\_utf16\_comments\_size**(*libfwsi\_item\_t \*network\_location*, *size\_t \*utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_network\_location\_get\_utf16\_comments**(*libfwsi\_item\_t \*network\_location*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

Compressed folder functions

*int*\

**libfwsi\_compressed\_folder\_get\_utf8\_name\_size**(*libfwsi\_item\_t \*compressed\_folder*, *size\_t \*utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_compressed\_folder\_get\_utf8\_name**(*libfwsi\_item\_t \*compressed\_folder*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_compressed\_folder\_get\_utf16\_name\_size**(*libfwsi\_item\_t \*compressed\_folder*, *size\_t \*utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_compressed\_folder\_get\_utf16\_name**(*libfwsi\_item\_t \*compressed\_folder*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

Control panel category functions

*int*\

**libfwsi\_control\_panel\_category\_get\_identifier**(*libfwsi\_item\_t \*control\_panel\_category*, *uint32\_t \*identifier*, *libfwsi\_error\_t \*\*error*);

Control panel item functions

*int*\

**libfwsi\_control\_panel\_item\_get\_identifier**(*libfwsi\_item\_t \*control\_panel\_item*, *uint8\_t \*guid\_data*, *size\_t guid\_data\_size*, *libfwsi\_error\_t \*\*error*);

Users property view functions

*int*\

**libfwsi\_users\_property\_view\_get\_known\_folder\_identifier**(*libfwsi\_item\_t \*users\_property\_view*, *uint8\_t \*guid\_data*, *size\_t guid\_data\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_users\_property\_view\_get\_property\_store\_data\_size**(*libfwsi\_item\_t \*users\_property\_view*, *size\_t \*data\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_users\_property\_view\_copy\_property\_store\_data**(*libfwsi\_item\_t \*users\_property\_view*, *uint8\_t \*data*, *size\_t data\_size*, *libfwsi\_error\_t \*\*error*);

Extension block functions

*int*\

**libfwsi\_extension\_block\_free**(*libfwsi\_extension\_block\_t \*\*extension\_block*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_extension\_block\_get\_signature**(*libfwsi\_extension\_block\_t \*extension\_block*, *uint32\_t \*signature*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_extension\_block\_get\_data\_size**(*libfwsi\_extension\_block\_t \*extension\_block*, *size\_t \*data\_size*, *libfwsi\_error\_t \*\*error*);

File entry extension functions

*int*\

**libfwsi\_file\_entry\_extension\_get\_creation\_time**(*libfwsi\_extension\_block\_t \*file\_entry\_extension*, *uint32\_t \*fat\_date\_time*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_extension\_get\_access\_time**(*libfwsi\_extension\_block\_t \*file\_entry\_extension*, *uint32\_t \*fat\_date\_time*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_extension\_get\_file\_reference**(*libfwsi\_extension\_block\_t \*file\_entry\_extension*, *uint64\_t \*file\_reference*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_extension\_get\_utf8\_long\_name\_size**(*libfwsi\_extension\_block\_t \*file\_entry\_extension*, *size\_t \*utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_extension\_get\_utf8\_long\_name**(*libfwsi\_extension\_block\_t \*file\_entry\_extension*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_extension\_get\_utf16\_long\_name\_size**(*libfwsi\_extension\_block\_t \*file\_entry\_extension*, *size\_t \*utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_extension\_get\_utf16\_long\_name**(*libfwsi\_extension\_block\_t \*file\_entry\_extension*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_extension\_get\_utf8\_localized\_name\_size**(*libfwsi\_extension\_block\_t \*file\_entry\_extension*, *size\_t \*utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_extension\_get\_utf8\_localized\_name**(*libfwsi\_extension\_block\_t \*file\_entry\_extension*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_extension\_get\_utf16\_localized\_name\_size**(*libfwsi\_extension\_block\_t \*file\_entry\_extension*, *size\_t \*utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

*int*\

**libfwsi\_file\_entry\_extension\_get\_utf16\_localized\_name**(*libfwsi\_extension\_block\_t \*file\_entry\_extension*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libfwsi\_error\_t \*\*error*);

Shell folder identifier functions

*const* *char* *\**\

**libfwsi\_shell\_folder\_identifier\_get\_name**(*const uint8\_t \*shell\_folder\_identifier*);

## DESCRIPTION

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

## ENVIRONMENT

None

## FILES

None

## BUGS

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

## AUTHOR

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

## COPYRIGHT

Copyright (C) 2010-2024, 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 libfwsi.h include file
