---
name: "libphdi"
section: "3"
platform: "linux"
package: "libphdi-dev"
version: "0~20240508-2+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/libphdi"
---

# libphdi(3)

Library to access the Parallels Hard Disk image (PHDI) format

## NAME

**libphdi.h** – Library to access the Parallels Hard Disk image (PHDI) format

## SYNOPSIS

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

Support functions

*const* *char* *\**\

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

*int*\

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

*int*\

**libphdi\_get\_access\_flags\_read\_write**(*void*);

*int*\

**libphdi\_get\_access\_flags\_write**(*void*);

*int*\

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

*int*\

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

*int*\

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

Available when compiled with wide character string support:

*int*\

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

Available when compiled with libbfio support:

*int*\

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

Notify functions

*void*\

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

*int*\

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

*int*\

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

*int*\

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

Error functions

*void*\

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

*int*\

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

*int*\

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

*int*\

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

*int*\

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

Handle functions

*int*\

**libphdi\_handle\_initialize**(*libphdi\_handle\_t \*\*handle*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_free**(*libphdi\_handle\_t \*\*handle*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_signal\_abort**(*libphdi\_handle\_t \*handle*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_open**(*libphdi\_handle\_t \*handle*, *const char \*filename*, *int access\_flags*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_open\_extent\_data\_files**(*libphdi\_handle\_t \*handle*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_close**(*libphdi\_handle\_t \*handle*, *libphdi\_error\_t \*\*error*);

*ssize\_t*\

**libphdi\_handle\_read\_buffer**(*libphdi\_handle\_t \*handle*, *void \*buffer*, *size\_t buffer\_size*, *libphdi\_error\_t \*\*error*);

*ssize\_t*\

**libphdi\_handle\_read\_buffer\_at\_offset**(*libphdi\_handle\_t \*handle*, *void \*buffer*, *size\_t buffer\_size*, *off64\_t offset*, *libphdi\_error\_t \*\*error*);

*off64\_t*\

**libphdi\_handle\_seek\_offset**(*libphdi\_handle\_t \*handle*, *off64\_t offset*, *int whence*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_get\_offset**(*libphdi\_handle\_t \*handle*, *off64\_t \*offset*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_set\_maximum\_number\_of\_open\_handles**(*libphdi\_handle\_t \*handle*, *int maximum\_number\_of\_open\_handles*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_set\_extent\_data\_files\_path**(*libphdi\_handle\_t \*handle*, *const char \*path*, *size\_t path\_length*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_get\_media\_size**(*libphdi\_handle\_t \*handle*, *size64\_t \*media\_size*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_get\_utf8\_name\_size**(*libphdi\_handle\_t \*handle*, *size\_t \*utf8\_string\_size*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_get\_utf8\_name**(*libphdi\_handle\_t \*handle*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_get\_utf16\_name\_size**(*libphdi\_handle\_t \*handle*, *size\_t \*utf16\_string\_size*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_get\_utf16\_name**(*libphdi\_handle\_t \*handle*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_get\_number\_of\_extents**(*libphdi\_handle\_t \*handle*, *int \*number\_of\_extents*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_get\_extent\_descriptor\_by\_index**(*libphdi\_handle\_t \*handle*, *int extent\_index*, *libphdi\_extent\_descriptor\_t \*\*extent\_descriptor*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_get\_number\_of\_snapshots**(*libphdi\_handle\_t \*handle*, *int \*number\_of\_snapshots*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_get\_snapshot\_by\_index**(*libphdi\_handle\_t \*handle*, *int snapshot\_index*, *libphdi\_snapshot\_t \*\*snapshot*, *libphdi\_error\_t \*\*error*);

Available when compiled with wide character string support:

*int*\

**libphdi\_handle\_open\_wide**(*libphdi\_handle\_t \*handle*, *const wchar\_t \*filename*, *int access\_flags*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_handle\_set\_extent\_data\_files\_path\_wide**(*libphdi\_handle\_t \*handle*, *const wchar\_t \*path*, *size\_t path\_length*, *libphdi\_error\_t \*\*error*);

Available when compiled with libbfio support:

*int*\

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

*int*\

**libphdi\_handle\_open\_extent\_data\_files\_file\_io\_pool**(*libphdi\_handle\_t \*handle*, *libbfio\_pool\_t \*file\_io\_pool*, *libphdi\_error\_t \*\*error*);

Extent descriptor functions

*int*\

**libphdi\_extent\_descriptor\_free**(*libphdi\_extent\_descriptor\_t \*\*extent\_descriptor*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_extent\_descriptor\_get\_range**(*libphdi\_extent\_descriptor\_t \*extent\_descriptor*, *off64\_t \*offset*, *size64\_t \*size*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_extent\_descriptor\_get\_number\_of\_images**(*libphdi\_extent\_descriptor\_t \*extent\_descriptor*, *int \*number\_of\_images*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_extent\_descriptor\_get\_image\_descriptor\_by\_index**(*libphdi\_extent\_descriptor\_t \*extent\_descriptor*, *int image\_index*, *libphdi\_image\_descriptor\_t \*\*image\_descriptor*, *libphdi\_error\_t \*\*error*);

Image descriptor functions

*int*\

**libphdi\_image\_descriptor\_free**(*libphdi\_image\_descriptor\_t \*\*image\_descriptor*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_image\_descriptor\_get\_type**(*libphdi\_image\_descriptor\_t \*image\_descriptor*, *int \*type*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_image\_descriptor\_get\_utf8\_filename\_size**(*libphdi\_image\_descriptor\_t \*image\_descriptor*, *size\_t \*utf8\_string\_size*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_image\_descriptor\_get\_utf8\_filename**(*libphdi\_image\_descriptor\_t \*image\_descriptor*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_image\_descriptor\_get\_utf16\_filename\_size**(*libphdi\_image\_descriptor\_t \*image\_descriptor*, *size\_t \*utf16\_string\_size*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_image\_descriptor\_get\_utf16\_filename**(*libphdi\_image\_descriptor\_t \*image\_descriptor*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libphdi\_error\_t \*\*error*);

Snapshot functions

*int*\

**libphdi\_snapshot\_free**(*libphdi\_snapshot\_t \*\*snapshot*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_snapshot\_get\_identifier**(*libphdi\_snapshot\_t \*snapshot*, *uint8\_t \*guid\_data*, *size\_t guid\_data\_size*, *libphdi\_error\_t \*\*error*);

*int*\

**libphdi\_snapshot\_get\_parent\_identifier**(*libphdi\_snapshot\_t \*snapshot*, *uint8\_t \*guid\_data*, *size\_t guid\_data\_size*, *libphdi\_error\_t \*\*error*);

## DESCRIPTION

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

## ENVIRONMENT

None

## FILES

None

## NOTES

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

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

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

## BUGS

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

## AUTHOR

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

## COPYRIGHT

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