Help us improve by taking our short survey: https://www.hdfgroup.org/website-survey/

| HDF5 Last Updated on 2026-03-23 The HDF5 Field Guide

Loading...
Searching...
No Matches
H5FDpublic.h File Reference
`#include "H5public.h"`
`#include "H5Fpublic.h"`
`#include "H5Ipublic.h"`

## Data Structures
struct | H5FD_ctl_memcpy_args_t
struct | H5FD_file_image_callbacks_t

## Macros
#define | H5_VFD_CORE ((H5FD_class_value_t)(1))
#define | H5_VFD_DIRECT ((H5FD_class_value_t)(8))
#define | H5_VFD_FAMILY ((H5FD_class_value_t)(3))
#define | H5_VFD_HDFS ((H5FD_class_value_t)(10))
#define | H5_VFD_INVALID ((H5FD_class_value_t)(-1))
#define | H5_VFD_IOC ((H5FD_class_value_t)(13))
#define | H5_VFD_LOG ((H5FD_class_value_t)(2))
#define | H5_VFD_MAX 65535
#define | H5_VFD_MIRROR ((H5FD_class_value_t)(9))
#define | H5_VFD_MPIO ((H5FD_class_value_t)(7))
#define | H5_VFD_MULTI ((H5FD_class_value_t)(4))
#define | H5_VFD_ONION ((H5FD_class_value_t)(14))
#define | H5_VFD_RESERVED 256
#define | H5_VFD_ROS3 ((H5FD_class_value_t)(11))
#define | H5_VFD_SEC2 ((H5FD_class_value_t)(0))
#define | H5_VFD_SPLITTER ((H5FD_class_value_t)(6))
#define | H5_VFD_STDIO ((H5FD_class_value_t)(5))
#define | H5_VFD_SUBFILING ((H5FD_class_value_t)(12))
#define | H5FD_CTL_FAIL_IF_UNKNOWN_FLAG 0x0001
#define | H5FD_CTL_GET_MPI_COMMUNICATOR_OPCODE 2
#define | H5FD_CTL_GET_MPI_FILE_SYNC_OPCODE 8
#define | H5FD_CTL_GET_MPI_INFO_OPCODE 9
#define | H5FD_CTL_GET_MPI_RANK_OPCODE 3
#define | H5FD_CTL_GET_MPI_SIZE_OPCODE 4
#define | H5FD_CTL_INVALID_OPCODE 0
#define | H5FD_CTL_MEM_ALLOC 5
#define | H5FD_CTL_MEM_COPY 7
#define | H5FD_CTL_MEM_FREE 6
#define | H5FD_CTL_OPC_EXPER_MAX (H5FD_CTL_OPC_RESERVED + 511)
#define | H5FD_CTL_OPC_EXPER_MIN H5FD_CTL_OPC_RESERVED
#define | H5FD_CTL_OPC_RESERVED 512
#define | H5FD_CTL_ROUTE_TO_TERMINAL_VFD_FLAG 0x0002
#define | H5FD_CTL_TEST_OPCODE 1
#define | H5FD_FEAT_ACCUMULATE_METADATA (H5FD_FEAT_ACCUMULATE_METADATA_WRITE | H5FD_FEAT_ACCUMULATE_METADATA_READ)
#define | H5FD_FEAT_ACCUMULATE_METADATA_READ 0x00000004
#define | H5FD_FEAT_ACCUMULATE_METADATA_WRITE 0x00000002
#define | H5FD_FEAT_AGGREGATE_METADATA 0x00000001
#define | H5FD_FEAT_AGGREGATE_SMALLDATA 0x00000010
#define | H5FD_FEAT_ALLOCATE_EARLY 0x00000200
#define | H5FD_FEAT_ALLOW_FILE_IMAGE 0x00000400
#define | H5FD_FEAT_CAN_USE_FILE_IMAGE_CALLBACKS 0x00000800
#define | H5FD_FEAT_DATA_SIEVE 0x00000008
#define | H5FD_FEAT_DEFAULT_VFD_COMPATIBLE 0x00008000
#define | H5FD_FEAT_DIRTY_DRVRINFO_LOAD 0x00000040
#define | H5FD_FEAT_HAS_MPI 0x00000100
#define | H5FD_FEAT_IGNORE_DRVRINFO 0x00000020
#define | H5FD_FEAT_MEMMANAGE 0x00010000
#define | H5FD_FEAT_PAGED_AGGR 0x00004000
#define | H5FD_FEAT_POSIX_COMPAT_HANDLE 0x00000080
#define | H5FD_FEAT_SUPPORTS_SWMR_IO 0x00001000
#define | H5FD_FEAT_USE_ALLOC_SIZE 0x00002000
#define | H5FD_VFD_DEFAULT 0 /* Default VFL driver value */

## Typedefs
typedef int | H5FD_class_value_t
typedef enum H5F_mem_t | H5FD_mem_t

## Enumerations
enum | H5FD_file_image_op_t { H5FD_FILE_IMAGE_OP_NO_OP , H5FD_FILE_IMAGE_OP_PROPERTY_LIST_SET , H5FD_FILE_IMAGE_OP_PROPERTY_LIST_COPY , H5FD_FILE_IMAGE_OP_PROPERTY_LIST_GET , H5FD_FILE_IMAGE_OP_PROPERTY_LIST_CLOSE , H5FD_FILE_IMAGE_OP_FILE_OPEN , H5FD_FILE_IMAGE_OP_FILE_RESIZE , H5FD_FILE_IMAGE_OP_FILE_CLOSE }

## Functions
herr_t | H5FDdriver_query (hid_t driver_id, unsigned long *flags)
| Allows querying a VFD ID for features before the file is opened.

## Macro Definition Documentation

## ◆ H5_VFD_CORE

#define H5_VFD_CORE ((H5FD_class_value_t)(1))

## ◆ H5_VFD_DIRECT

#define H5_VFD_DIRECT ((H5FD_class_value_t)(8))

## ◆ H5_VFD_FAMILY

#define H5_VFD_FAMILY ((H5FD_class_value_t)(3))

## ◆ H5_VFD_HDFS

#define H5_VFD_HDFS ((H5FD_class_value_t)(10))

## ◆ H5_VFD_INVALID

#define H5_VFD_INVALID ((H5FD_class_value_t)(-1))

## ◆ H5_VFD_IOC

#define H5_VFD_IOC ((H5FD_class_value_t)(13))

## ◆ H5_VFD_LOG

#define H5_VFD_LOG ((H5FD_class_value_t)(2))

## ◆ H5_VFD_MAX

#define H5_VFD_MAX 65535

## ◆ H5_VFD_MIRROR

#define H5_VFD_MIRROR ((H5FD_class_value_t)(9))

## ◆ H5_VFD_MPIO

#define H5_VFD_MPIO ((H5FD_class_value_t)(7))

## ◆ H5_VFD_MULTI

#define H5_VFD_MULTI ((H5FD_class_value_t)(4))

## ◆ H5_VFD_ONION

#define H5_VFD_ONION ((H5FD_class_value_t)(14))

## ◆ H5_VFD_RESERVED

#define H5_VFD_RESERVED 256

## ◆ H5_VFD_ROS3

#define H5_VFD_ROS3 ((H5FD_class_value_t)(11))

## ◆ H5_VFD_SEC2

#define H5_VFD_SEC2 ((H5FD_class_value_t)(0))

## ◆ H5_VFD_SPLITTER

#define H5_VFD_SPLITTER ((H5FD_class_value_t)(6))

## ◆ H5_VFD_STDIO

#define H5_VFD_STDIO ((H5FD_class_value_t)(5))

## ◆ H5_VFD_SUBFILING

#define H5_VFD_SUBFILING ((H5FD_class_value_t)(12))

## ◆ H5FD_CTL_FAIL_IF_UNKNOWN_FLAG

#define H5FD_CTL_FAIL_IF_UNKNOWN_FLAG 0x0001

## ◆ H5FD_CTL_GET_MPI_COMMUNICATOR_OPCODE

#define H5FD_CTL_GET_MPI_COMMUNICATOR_OPCODE 2

## ◆ H5FD_CTL_GET_MPI_FILE_SYNC_OPCODE

#define H5FD_CTL_GET_MPI_FILE_SYNC_OPCODE 8

## ◆ H5FD_CTL_GET_MPI_INFO_OPCODE

#define H5FD_CTL_GET_MPI_INFO_OPCODE 9

## ◆ H5FD_CTL_GET_MPI_RANK_OPCODE

#define H5FD_CTL_GET_MPI_RANK_OPCODE 3

## ◆ H5FD_CTL_GET_MPI_SIZE_OPCODE

#define H5FD_CTL_GET_MPI_SIZE_OPCODE 4

## ◆ H5FD_CTL_INVALID_OPCODE

#define H5FD_CTL_INVALID_OPCODE 0

## ◆ H5FD_CTL_MEM_ALLOC

#define H5FD_CTL_MEM_ALLOC 5

## ◆ H5FD_CTL_MEM_COPY

#define H5FD_CTL_MEM_COPY 7

## ◆ H5FD_CTL_MEM_FREE

#define H5FD_CTL_MEM_FREE 6

## ◆ H5FD_CTL_OPC_EXPER_MAX

#define H5FD_CTL_OPC_EXPER_MAX (H5FD_CTL_OPC_RESERVED + 511)

Maximum opcode value available for experimental use

## ◆ H5FD_CTL_OPC_EXPER_MIN

#define H5FD_CTL_OPC_EXPER_MIN H5FD_CTL_OPC_RESERVED

Minimum opcode value available for experimental use

## ◆ H5FD_CTL_OPC_RESERVED

#define H5FD_CTL_OPC_RESERVED 512

Opcodes below this value are reserved for library use

## ◆ H5FD_CTL_ROUTE_TO_TERMINAL_VFD_FLAG

#define H5FD_CTL_ROUTE_TO_TERMINAL_VFD_FLAG 0x0002

## ◆ H5FD_CTL_TEST_OPCODE

#define H5FD_CTL_TEST_OPCODE 1

## ◆ H5FD_FEAT_ACCUMULATE_METADATA

#define H5FD_FEAT_ACCUMULATE_METADATA (H5FD_FEAT_ACCUMULATE_METADATA_WRITE | H5FD_FEAT_ACCUMULATE_METADATA_READ)

## ◆ H5FD_FEAT_ACCUMULATE_METADATA_READ

#define H5FD_FEAT_ACCUMULATE_METADATA_READ 0x00000004

## ◆ H5FD_FEAT_ACCUMULATE_METADATA_WRITE

#define H5FD_FEAT_ACCUMULATE_METADATA_WRITE 0x00000002

## ◆ H5FD_FEAT_AGGREGATE_METADATA

#define H5FD_FEAT_AGGREGATE_METADATA 0x00000001

## ◆ H5FD_FEAT_AGGREGATE_SMALLDATA

#define H5FD_FEAT_AGGREGATE_SMALLDATA 0x00000010

## ◆ H5FD_FEAT_ALLOCATE_EARLY

#define H5FD_FEAT_ALLOCATE_EARLY 0x00000200

Defining the H5FD_FEAT_ALLOCATE_EARLY for a VFL driver will force the library to use the H5D_ALLOC_TIME_EARLY on dataset create instead of the default H5D_ALLOC_TIME_LATE

Since
  1.8.15

## ◆ H5FD_FEAT_ALLOW_FILE_IMAGE

#define H5FD_FEAT_ALLOW_FILE_IMAGE 0x00000400

## ◆ H5FD_FEAT_CAN_USE_FILE_IMAGE_CALLBACKS

#define H5FD_FEAT_CAN_USE_FILE_IMAGE_CALLBACKS 0x00000800

## ◆ H5FD_FEAT_DATA_SIEVE

#define H5FD_FEAT_DATA_SIEVE 0x00000008

## ◆ H5FD_FEAT_DEFAULT_VFD_COMPATIBLE

#define H5FD_FEAT_DEFAULT_VFD_COMPATIBLE 0x00008000

Defining H5FD_FEAT_DEFAULT_VFD_COMPATIBLE for a VFL driver that creates a file which is compatible with the default VFD. Generally, this means that the VFD creates a single file that follows the canonical HDF5 file format. Regarding the Splitter VFD specifically, only drivers with this flag enabled may be used as the Write-Only (W/O) channel driver.

Since
  1.10.2

## ◆ H5FD_FEAT_DIRTY_DRVRINFO_LOAD

#define H5FD_FEAT_DIRTY_DRVRINFO_LOAD 0x00000040

Defining the H5FD_FEAT_DIRTY_DRVRINFO_LOAD for a VFL driver means that the library will mark the driver info dirty when the file is opened R/W. This will cause the driver info to be re-encoded when the file is flushed/closed.

Since
  1.10.0

## ◆ H5FD_FEAT_HAS_MPI

#define H5FD_FEAT_HAS_MPI 0x00000100

Defining H5FD_FEAT_HAS_MPI for a VFL driver means that the driver makes use of MPI communication and code may retrieve communicator/rank information from it

Since
  1.8.15

## ◆ H5FD_FEAT_IGNORE_DRVRINFO

#define H5FD_FEAT_IGNORE_DRVRINFO 0x00000020

## ◆ H5FD_FEAT_MEMMANAGE

#define H5FD_FEAT_MEMMANAGE 0x00010000

## ◆ H5FD_FEAT_PAGED_AGGR

#define H5FD_FEAT_PAGED_AGGR 0x00004000

Defining H5FD_FEAT_PAGED_AGGR for a VFL driver means that the driver needs special file space mapping for paged aggregation. This is specifically used for the multi/split driver.

Since
  1.10.1

## ◆ H5FD_FEAT_POSIX_COMPAT_HANDLE

#define H5FD_FEAT_POSIX_COMPAT_HANDLE 0x00000080

## ◆ H5FD_FEAT_SUPPORTS_SWMR_IO

#define H5FD_FEAT_SUPPORTS_SWMR_IO 0x00001000

Defining H5FD_FEAT_SUPPORTS_SWMR_IO for a VFL driver means that the driver supports the single-writer/multiple-readers I/O pattern.

Since
  1.10.0

## ◆ H5FD_FEAT_USE_ALLOC_SIZE

#define H5FD_FEAT_USE_ALLOC_SIZE 0x00002000

Defining H5FD_FEAT_USE_ALLOC_SIZE for a VFL driver means that the library will just pass the allocation size to the the driver's allocation callback which will eventually handle alignment. This is specifically used for the multi/split driver.

Since
  1.10.1

## ◆ H5FD_VFD_DEFAULT

#define H5FD_VFD_DEFAULT 0 /* Default VFL driver value */

## Typedef Documentation

## ◆ H5FD_class_value_t

typedef int H5FD_class_value_t

## ◆ H5FD_mem_t

typedef enum H5F_mem_t H5FD_mem_t

## Enumeration Type Documentation

## ◆ H5FD_file_image_op_t

enum H5FD_file_image_op_t

Define enum for the source of file image callbacks

Enumerator
H5FD_FILE_IMAGE_OP_NO_OP |
H5FD_FILE_IMAGE_OP_PROPERTY_LIST_SET | Passed to the `image_malloc` and `image_memcpy` callbacks when a file image buffer is to be copied while being set in a file access property list (FAPL)
H5FD_FILE_IMAGE_OP_PROPERTY_LIST_COPY | Passed to the `image_malloc` and `image_memcpy` callbacks when a file image buffer is to be copied when a FAPL is copied
H5FD_FILE_IMAGE_OP_PROPERTY_LIST_GET | Passed to the `image_malloc` and `image_memcpy` callbacks when a file image buffer is to be copied while being retrieved from a FAPL
H5FD_FILE_IMAGE_OP_PROPERTY_LIST_CLOSE | Passed to the `image_free` callback when a file image buffer is to be released during a FAPL close operation
H5FD_FILE_IMAGE_OP_FILE_OPEN | Passed to the `image_malloc` and `image_memcpy` callbackswhen a file image buffer is to be copied during a file open operation While the file image being opened will typically be copied from a FAPL, this need not always be the case. For example, the core file driver, also known as the memory file driver, takes its initial image from a file.
H5FD_FILE_IMAGE_OP_FILE_RESIZE | Passed to the `image_realloc` callback when a file driver needs to resize an image buffer
H5FD_FILE_IMAGE_OP_FILE_CLOSE | Passed to the `image_free` callback when an image buffer is to be released during a file close operation