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

# libsmraw(3)

Library to access the storage media (SM) (split) RAW format

## NAME

**libsmraw.h** – Library to access the storage media (SM) (split) RAW format

## SYNOPSIS

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

Support functions

*const* *char* *\**\

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

*int*\

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

*int*\

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

*int*\

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

*int*\

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

*int*\

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

*int*\

**libsmraw\_glob**(*const char \*filename*, *size\_t filename\_length*, *char \*\*filenames\[\]*, *int \*number\_of\_filenames*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_glob\_free**(*char \*filenames\[\]*, *int number\_of\_filenames*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_glob\_wide**(*const wchar\_t \*filename*, *size\_t filename\_length*, *wchar\_t \*\*filenames\[\]*, *int \*number\_of\_filenames*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_glob\_wide\_free**(*wchar\_t \*filenames\[\]*, *int number\_of\_filenames*, *libsmraw\_error\_t \*\*error*);

Notify functions

*void*\

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

*int*\

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

*int*\

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

*int*\

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

Error functions

*void*\

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

*int*\

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

*int*\

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

*int*\

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

*int*\

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

Handle functions

*int*\

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

*int*\

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

*int*\

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

*int*\

**libsmraw\_handle\_open**(*libsmraw\_handle\_t \*handle*, *char \* const filenames\[\]*, *int number\_of\_filenames*, *int access\_flags*, *libsmraw\_error\_t \*\*error*);

*int*\

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

*ssize\_t*\

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

*ssize\_t*\

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

*ssize\_t*\

**libsmraw\_handle\_write\_buffer**(*libsmraw\_handle\_t \*handle*, *const void \*buffer*, *size\_t buffer\_size*, *libsmraw\_error\_t \*\*error*);

*ssize\_t*\

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

*off64\_t*\

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

*int*\

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

*int*\

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

*int*\

**libsmraw\_handle\_get\_segment\_filename\_size**(*libsmraw\_handle\_t \*handle*, *size\_t \*filename\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_segment\_filename**(*libsmraw\_handle\_t \*handle*, *char \*filename*, *size\_t filename\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_set\_segment\_filename**(*libsmraw\_handle\_t \*handle*, *const char \*filename*, *size\_t filename\_length*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_maximum\_segment\_size**(*libsmraw\_handle\_t \*handle*, *size64\_t \*maximum\_segment\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_set\_maximum\_segment\_size**(*libsmraw\_handle\_t \*handle*, *size64\_t maximum\_segment\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_filename\_size**(*libsmraw\_handle\_t \*handle*, *size\_t \*filename\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_filename**(*libsmraw\_handle\_t \*handle*, *char \*filename*, *size\_t filename\_size*, *libsmraw\_error\_t \*\*error*);

Available when compiled with wide character string support:

*int*\

**libsmraw\_handle\_open\_wide**(*libsmraw\_handle\_t \*handle*, *wchar\_t \* const filenames\[\]*, *int number\_of\_filenames*, *int access\_flags*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_segment\_filename\_size\_wide**(*libsmraw\_handle\_t \*handle*, *size\_t \*filename\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_segment\_filename\_wide**(*libsmraw\_handle\_t \*handle*, *wchar\_t \*filename*, *size\_t filename\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_set\_segment\_filename\_wide**(*libsmraw\_handle\_t \*handle*, *const wchar\_t \*filename*, *size\_t filename\_length*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_filename\_size\_wide**(*libsmraw\_handle\_t \*handle*, *size\_t \*filename\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_filename\_wide**(*libsmraw\_handle\_t \*handle*, *wchar\_t \*filename*, *size\_t filename\_size*, *libsmraw\_error\_t \*\*error*);

Available when compiled with libbfio support:

*int*\

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

*int*\

**libsmraw\_handle\_get\_file\_io\_handle**(*libsmraw\_handle\_t \*handle*, *libbfio\_handle\_t \*\*file\_io\_handle*, *libsmraw\_error\_t \*\*error*);

Meta data functions

*int*\

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

*int*\

**libsmraw\_handle\_set\_media\_size**(*libsmraw\_handle\_t \*handle*, *size64\_t media\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_bytes\_per\_sector**(*libsmraw\_handle\_t \*handle*, *uint32\_t \*bytes\_per\_sector*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_set\_bytes\_per\_sector**(*libsmraw\_handle\_t \*handle*, *uint32\_t bytes\_per\_sector*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_media\_type**(*libsmraw\_handle\_t \*handle*, *uint8\_t \*media\_type*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_set\_media\_type**(*libsmraw\_handle\_t \*handle*, *uint8\_t media\_type*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_media\_flags**(*libsmraw\_handle\_t \*handle*, *uint8\_t \*media\_flags*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_set\_media\_flags**(*libsmraw\_handle\_t \*handle*, *uint8\_t media\_flags*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_number\_of\_information\_values**(*libsmraw\_handle\_t \*handle*, *int \*number\_of\_information\_values*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_information\_value\_identifier\_size**(*libsmraw\_handle\_t \*handle*, *int information\_value\_index*, *size\_t \*identifier\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_information\_value\_identifier**(*libsmraw\_handle\_t \*handle*, *int information\_value\_index*, *uint8\_t \*identifier*, *size\_t identifier\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_utf8\_information\_value\_size**(*libsmraw\_handle\_t \*handle*, *const uint8\_t \*identifier*, *size\_t identifier\_length*, *size\_t \*utf8\_string\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_utf8\_information\_value**(*libsmraw\_handle\_t \*handle*, *const uint8\_t \*identifier*, *size\_t identifier\_length*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_set\_utf8\_information\_value**(*libsmraw\_handle\_t \*handle*, *const uint8\_t \*identifier*, *size\_t identifier\_length*, *const uint8\_t \*utf8\_string*, *size\_t utf8\_string\_length*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_utf16\_information\_value\_size**(*libsmraw\_handle\_t \*handle*, *const uint8\_t \*identifier*, *size\_t identifier\_length*, *size\_t \*utf16\_string\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_utf16\_information\_value**(*libsmraw\_handle\_t \*handle*, *const uint8\_t \*identifier*, *size\_t identifier\_length*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_set\_utf16\_information\_value**(*libsmraw\_handle\_t \*handle*, *const uint8\_t \*identifier*, *size\_t identifier\_length*, *const uint16\_t \*utf16\_string*, *size\_t utf16\_string\_length*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_number\_of\_integrity\_hash\_values**(*libsmraw\_handle\_t \*handle*, *int \*number\_of\_integrity\_hash\_values*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_integrity\_hash\_value\_identifier\_size**(*libsmraw\_handle\_t \*handle*, *int integrity\_hash\_value\_index*, *size\_t \*identifier\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_integrity\_hash\_value\_identifier**(*libsmraw\_handle\_t \*handle*, *int integrity\_hash\_value\_index*, *uint8\_t \*identifier*, *size\_t identifier\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_utf8\_integrity\_hash\_value\_size**(*libsmraw\_handle\_t \*handle*, *const uint8\_t \*identifier*, *size\_t identifier\_length*, *size\_t \*utf8\_string\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_utf8\_integrity\_hash\_value**(*libsmraw\_handle\_t \*handle*, *const uint8\_t \*identifier*, *size\_t identifier\_length*, *uint8\_t \*utf8\_string*, *size\_t utf8\_string\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_set\_utf8\_integrity\_hash\_value**(*libsmraw\_handle\_t \*handle*, *const uint8\_t \*identifier*, *size\_t identifier\_length*, *const uint8\_t \*utf8\_string*, *size\_t utf8\_string\_length*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_utf16\_integrity\_hash\_value\_size**(*libsmraw\_handle\_t \*handle*, *const uint8\_t \*identifier*, *size\_t identifier\_length*, *size\_t \*utf16\_string\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_get\_utf16\_integrity\_hash\_value**(*libsmraw\_handle\_t \*handle*, *const uint8\_t \*identifier*, *size\_t identifier\_length*, *uint16\_t \*utf16\_string*, *size\_t utf16\_string\_size*, *libsmraw\_error\_t \*\*error*);

*int*\

**libsmraw\_handle\_set\_utf16\_integrity\_hash\_value**(*libsmraw\_handle\_t \*handle*, *const uint8\_t \*identifier*, *size\_t identifier\_length*, *const uint16\_t \*utf16\_string*, *size\_t utf16\_string\_length*, *libsmraw\_error\_t \*\*error*);

## DESCRIPTION

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

## ENVIRONMENT

None

## FILES

None

## NOTES

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

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

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

## BUGS

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

## AUTHOR

These man pages are generated from "libsmraw.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 libsmraw.h include file
