summaryrefslogtreecommitdiffstats
path: root/develop/_h5_v_l__u_g.html
blob: b306a3ee29156989fc8098b101cc7ba2b7f8d2fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.10.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>HDF5: The HDF5 Virtual Object Layer (VOL)</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
  $(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="hdf5doxy.css" rel="stylesheet" type="text/css">
<!-- <link href="hdf5doxy.css" rel="stylesheet" type="text/css"/>
 -->
<script type="text/javascript" src="hdf5_navtree_hacks.js"></script>
</head>
<body>
<div style="background:#FFDDDD;font-size:120%;text-align:center;margin:0;padding:5px">Please, help us to better serve our user community by answering the following short survey:  <a href="https://www.hdfgroup.org/website-survey/">https://www.hdfgroup.org/website-survey/</a></div>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="HDFG-logo.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname"><a href="https://www.hdfgroup.org">HDF5</a>
   &#160;<span id="projectnumber">1.15.0.2908dd1</span>
   </div>
   <div id="projectbrief">API Reference</div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <span id="MSearchSelect"                onmouseover="return searchBox.OnSearchSelectShow()"                onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
          <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.10.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('_h5_v_l__u_g.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div><div class="header">
  <div class="headertitle"><div class="title">The HDF5 Virtual Object Layer (VOL)</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="sec_vol"></a>
The HDF5 Virtual Object Layer (VOL)</h1>
<h2><a class="anchor" id="subsec_vol_intro"></a>
Introduction</h2>
<p>The virtual object layer is an abstraction layer in the HDF5 library that intercepts all API calls that could potentially access objects in an HDF5 container and forwards those calls to a VOL connector, which implements the storage. The user or application gets the benefit of using the familiar and widely-used HDF5 data model and API, but can map the physical storage of the HDF5 file and objects to storage that better meets the application's data needs.</p>
<h2><a class="anchor" id="subsec_vol_abstract_layer"></a>
The VOL Abstraction Layer</h2>
<p>The VOL lies just under the public API. When a storage-oriented public APIcall is made, the library performs a few sanity checks on the input parameters and then immediately invokes a VOL callback, which resolves to an implementation in the VOL connector that was selected when opening or creating the file. The VOL connector then performs whatever operations are needed before control returns to the library, where any final library operations such as assigning IDs for newly created/opened datasets are performed before returning. This means that, for calls that utilize the VOL, all of the functionality is deferred to the VOL connector and the HDF5 library does very little work. An important consideration of this is that most of the HDF5 caching layers (metadata and chunk caches, page buffering, etc.) will not be available as those are implemented in the HDF5 native VOL connector and cannot be easily reused by external connectors.</p>
<table class="doxtable">
<tr>
<td><div class="image">
<img src="vol_architecture.png" alt=""/>
<div class="caption">
The VOL Architecture</div></div>
   </td></tr>
</table>
<p>Not all public HDF5 API calls pass through the VOL. Only calls which require manipulating storage go through the VOL and require a VOL connector author to implement the appropriate callback. Dataspace, property list, error stack, etc. calls have nothing to do with storage manipulation or querying and do not use the VOL. This may be confusing when it comes to property list calls, since many of those calls set properties for storage. Property lists are just collections of key-value pairs, though, so a particular VOL connector is not required to set or get properties.</p>
<p>Another thing to keep in mind is that not every VOL connector will implement the full HDF5 public API. In some cases, a particular feature like variable-length types may not have been developed yet or may not have an equivalent in the target storage system. Also, many HDF5 public API calls are specific to the native HDF5 file format and are unlikely to have any use in other VOL connectors. A feature/capabilities flag scheme is being developed to help navigate this.</p>
<p>For more information about which calls go through the VOL and the mechanism by which this is implemented, see the connector author and library internals documentation.</p>
<h2><a class="anchor" id="subsec_vol_connect"></a>
VOL Connectors</h2>
<p>A VOL connector can be implemented in several ways: </p><ul>
<li>as a shared or static library linked to an application </li>
<li>as a dynamically loaded plugin, implemented as a shared library </li>
<li>and even as an internal connector, built into the HDF5 library itself</li>
</ul>
<p>This section mostly focuses on external connectors, both libraries and plugins, as those are expected to be much more common than internal implementations.</p>
<p>A list of VOL connectors can be found here: <a href="https://portal.hdfgroup.org/display/support/Registered+VOL+Connectors">Registered VOL Connectors</a></p>
<p>This list is incomplete and only includes the VOL connectors that have been registered with The HDF Group.</p>
<p>Not every connector in this collection is actively maintained by The HDF Group. It simply serves as a single location where important VOL connectors can be found. See the documentation in a connector's repository to determine its development status and the parties responsible for it.</p>
<p>A VOL template that contains build scripts (Autotools and CMake) and an empty VOL connector "shell" which can be copied and used as a starting point for building new connectors is located here: <a href="https://github.com/HDFGroup/vol-template">VOL Connector Template</a></p>
<p>This template VOL connector is for use in constructing terminal VOL connectors that do not forward calls to an underlying connector. The external pass-through VOL connector listed on the registered connector page can be used as a starting point for pass-through connectors.</p>
<p>The only current (non-test) internal VOL connector distributed with the library is the native file format connector (the "native VOL connector") which contains the code that handles native HDF5 (*.h5/hdf5) files. In other words, even the canonical HDF5 file format is implemented via the VOL, making it a core part of the HDF5 library and not an optional component which could be disabled.</p>
<p>It has not been completely abstracted from the HDF5 library, though, and is treated as a special case. For example, it cannot be unloaded and is always present.</p>
<h2><a class="anchor" id="subsec_vol_quickstart"></a>
Quickstart</h2>
<p>The following steps summarize how one would go about using a VOL connector with an application. More information on particular steps can be found later on in this document.</p>
<h3><a class="anchor" id="subsubsec_vol_quick_read"></a>
Read The Documentation For The New VOL Connector</h3>
<p>Many VOL connectors will require specific setup and configuration of both the application and the storage. Specific permissions may have to be set, configuration files constructed, and connector-specific setup calls may need to be invoked in the application. In many cases, converting software to use a new VOL connector will be more than just a straightforward drop-in replacement done by specifying a name in the VOL plugin environment variable.</p>
<h3><a class="anchor" id="subsubsec_vol_quick_use"></a>
Use A VOL-Enabled HDF5 Library</h3>
<p>The virtual object layer was introduced in HDF5 1.12.0, however that version of the VOL is deprecated due to inadequate support for pass-through connectors. These deficiencies have been addressed in HDF5 1.14.0, so VOL users and connector authors should target the 1.14.0 VOL API.</p>
<p>On Windows, it's probably best to use the same debug vs release configuration for the application and all libraries in order to avoid C runtime (CRT) issues. Pre-2015 versions of Visual Studio are not supported.</p>
<h3><a class="anchor" id="subsubsec_vol_quick_set"></a>
Determine How You Will Set The VOL Connector</h3>
<p>Fundamentally, setting a VOL connector involves modifying the file access property list (fapl) that will be used to open or create the file.</p>
<p>There are essentially three ways to do this: </p><ul>
<li>Direct use of <a class="el" href="group___f_a_p_l.html#ga8aaa97e70b2544c3d95d908e1ae5b0f0">H5Pset_vol()</a> </li>
<li>Library-specific API calls that call <a class="el" href="group___f_a_p_l.html#ga8aaa97e70b2544c3d95d908e1ae5b0f0">H5Pset_vol()</a> for you </li>
<li>Use the VOL environment variable, which will also call <a class="el" href="group___f_a_p_l.html#ga8aaa97e70b2544c3d95d908e1ae5b0f0">H5Pset_vol()</a> for you</li>
</ul>
<p>Exactly how you go about setting a VOL connector in a fapl, will depend on the complexity of the VOL connector and how much control you have over the application's source code. Note that the environment variable method, though convenient, has some limitations in its implementation, which are discussed below.</p>
<h3><a class="anchor" id="subsubsec_vol_quick_update"></a>
If Needed: Update Your Code To Load And Use A VOL Connector</h3>
<p>There are two concerns when modifying the application: </p><ul>
<li>
It may be convenient to add connector-specific setup calls to the application. </li>
<li>
You will also need to protect any API calls which are only implemented in the native VOL connector as those calls will fail when using a non-native VOL connector. See the section <a class="el" href="#subsec_vol_adapt">Adapting HDF5 Software to Use the VOL</a>, below. A list of native VOL API calls has been included in <a class="el" href="#subsubsec_vol_compat_native">List of HDF5 Native VOL API Calls</a>.</li>
</ul>
<p>In some cases, using the VOL environment variable will work well for setting the connector and any associated storage setup and the application will not use API calls that are not supported by the VOL connector. In this case, no application modification will be necessary.</p>
<h3><a class="anchor" id="subsubsec_vol_quick_plugin"></a>
If Using A Plugin: Make Sure The VOL Connector Is In The Search</h3>
<p>Path The default location for all HDF5 plugins is set at configure time when building the HDF5 library. This is true for both CMake and the Autotools. The default locations for the plugins on both Windows and POSIX systems is listed further on in this document.</p>
<h3><a class="anchor" id="subsubsec_vol_quick_opt"></a>
Optional: Set The VOL Connector Via The Environment Variable</h3>
<p>In place of modifying the source code of your application, you may be able to simply set the <a class="el" href="_h5public_8h.html#a8d21b0c065a27e1b6ea46efb966c7394">HDF5_VOL_CONNECTOR</a> environment variable (see below). This will automatically use the specified VOL in place of the native VOL connector.</p>
<h2><a class="anchor" id="subsec_vol_use"></a>
Connector Use</h2>
<p>Before a VOL connector can be set in a fapl, it must be registered with the library (<a class="el" href="group___f_a_p_l.html#ga8aaa97e70b2544c3d95d908e1ae5b0f0">H5Pset_vol</a> requires the connector's <a class="el" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> ID) and, if a plugin, it must be discoverable by the library at run time.</p>
<h3><a class="anchor" id="subsubsec_vol_connect_register"></a>
Registration</h3>
<p>Before a connector can be used, it must be registered. This loads the connector into the library and give it an HDF5 hid_t ID. The <a class="el" href="group___h5_v_l_d_e_v.html#ga439c150299522a0e0f401a86d083097b">H5VLregister_connector</a> API calls are used for this. </p><div class="fragment"><div class="line"><a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> <a class="code hl_function" href="group___h5_v_l.html#gaf48d1225927e1e701656346b832ee6b1">H5VLregister_connector_by_name</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *connector_name, <a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> vipl_id)</div>
<div class="line"><a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> <a class="code hl_function" href="group___h5_v_l.html#ga11e69930e47f654805a265f417412ea8">H5VLregister_connector_by_value</a>(<a class="code hl_typedef" href="group___h5_v_l_d_e_f.html#ga81b40d59b53c498f8aa9d92d0afdde2c">H5VL_class_value_t</a> connector_value, <a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> vipl_id)</div>
<div class="ttc" id="a_h5_ipublic_8h_html_a0045db7ff9c22ad35db6ae91662e1943"><div class="ttname"><a href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a></div><div class="ttdeci">int64_t hid_t</div><div class="ttdef"><b>Definition</b> H5Ipublic.h:60</div></div>
<div class="ttc" id="agroup___h5_v_l_d_e_f_html_ga81b40d59b53c498f8aa9d92d0afdde2c"><div class="ttname"><a href="group___h5_v_l_d_e_f.html#ga81b40d59b53c498f8aa9d92d0afdde2c">H5VL_class_value_t</a></div><div class="ttdeci">int H5VL_class_value_t</div><div class="ttdoc">VOL connector identifiers.</div><div class="ttdef"><b>Definition</b> H5VLpublic.h:144</div></div>
<div class="ttc" id="agroup___h5_v_l_html_ga11e69930e47f654805a265f417412ea8"><div class="ttname"><a href="group___h5_v_l.html#ga11e69930e47f654805a265f417412ea8">H5VLregister_connector_by_value</a></div><div class="ttdeci">hid_t H5VLregister_connector_by_value(H5VL_class_value_t connector_value, hid_t vipl_id)</div><div class="ttdoc">Registers a new VOL connector by value.</div></div>
<div class="ttc" id="agroup___h5_v_l_html_gaf48d1225927e1e701656346b832ee6b1"><div class="ttname"><a href="group___h5_v_l.html#gaf48d1225927e1e701656346b832ee6b1">H5VLregister_connector_by_name</a></div><div class="ttdeci">hid_t H5VLregister_connector_by_name(const char *connector_name, hid_t vipl_id)</div><div class="ttdoc">Registers a new VOL connector by name.</div></div>
</div><!-- fragment --><p> When used with a plugin, these functions will check to see if an appropriate plugin with a matching name, value, etc. is already loaded and check the plugin path (see above) for matching plugins if this is not true. The functions return <a class="el" href="_h5_ipublic_8h.html#a01eab13dccc91afd6909d74dccb780ba">H5I_INVALID_HID</a> if they are unable to register the connector. Many VOL connectors will provide a connector-specific init call that will load and register the connector for you.</p>
<p>Note the two ways that a VOL connector can be identified: by a name or by a connector-specific numerical value (<a class="el" href="group___h5_v_l_d_e_f.html#ga81b40d59b53c498f8aa9d92d0afdde2c" title="VOL connector identifiers.">H5VL_class_value_t</a> is typedef’d to an integer). The name and value for a connector can be found in the connector's documentation or public header file.</p>
<p>Each call also takes a VOL initialization property list (vipl). The library adds no properties to this list, so it is entirely for use by connector authors. Set this to <a class="el" href="_h5_ppublic_8h.html#afa85e97bfbf9bf1c58e39263846c568f">H5P_DEFAULT</a> unless instructed differently by the documentation for the VOL connector.</p>
<p>As far as the library is concerned, connectors do not need to be explicitly unregistered as the library will unload the plugin and close the ID when the library is closed. If you want to close a VOL connector ID, either <a class="el" href="group___h5_v_l.html#gaffbdc22f724c2c818f3be3845145d73e">H5VLunregister_connector()</a> or <a class="el" href="group___h5_v_l.html#gaa3324ac7aedf9362b498226903288094">H5VLclose()</a> can be used (they have the same internal code path). The library maintains a reference count on all open IDs and will not do the actual work of closing an ID until its reference count drops to zero, so it's safe to close IDs anytime after they are used, even while an HDF5 file that was opened with that connector is still open.</p>
<p>Note that it's considered an error to unload the native VOL connector. The library will prevent this. This means that, for the time being, the native VOL connector will always be available. This may change in the future so that the memory footprint of the native VOL connector goes away when not in use.</p>
<h3><a class="anchor" id="subsubsec_vol_connect_version"></a>
Connector Versioning</h3>
<p>The VOL connector struct provides a <b>conn_version</b> field for versioning connectors. The library developers are working on some best practices for versioning connectors.</p>
<h3><a class="anchor" id="subsubsec_vol_connect_reg_calls"></a>
Connector-Specific Registration Calls</h3>
<p>Most connectors will provide a special API call which will set the connector in the fapl. These will often be in the form of <b>H5Pset_fapl_&lt;name&gt;()</b>. For example, the <a href="https://github.com/HDFGroup/vol-daos">DAOS VOL</a> connector provides a <b>H5Pset_fapl_daos()</b> API call which will take MPI parameters and make this call. See the connector's documentation or public header file(s) for more information.</p>
<h3><a class="anchor" id="subsubsec_vol_connect_set_vol"></a>
H5Pset_vol()</h3>
<p>The is the main library API call for setting the VOL connector in a file access property list. Its signature is: </p><div class="fragment"><div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___f_a_p_l.html#ga8aaa97e70b2544c3d95d908e1ae5b0f0">H5Pset_vol</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> plist_id, <a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> new_vol_id, <span class="keyword">const</span> <span class="keywordtype">void</span> new_vol_info)</div>
<div class="ttc" id="a_h5public_8h_html_a3b079ecf932a5c599499cf7e298af160"><div class="ttname"><a href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a></div><div class="ttdeci">int herr_t</div><div class="ttdef"><b>Definition</b> H5public.h:235</div></div>
<div class="ttc" id="agroup___f_a_p_l_html_ga8aaa97e70b2544c3d95d908e1ae5b0f0"><div class="ttname"><a href="group___f_a_p_l.html#ga8aaa97e70b2544c3d95d908e1ae5b0f0">H5Pset_vol</a></div><div class="ttdeci">herr_t H5Pset_vol(hid_t plist_id, hid_t new_vol_id, const void *new_vol_info)</div><div class="ttdoc">Set the file VOL connector for a file access property list.</div></div>
</div><!-- fragment --><p>It takes the ID of the file access property list, the ID of the registered VOL connector, and a pointer to whatever connector-specific data the connector is expecting. This will usually be a data struct specified in the connector's header or a NULL pointer if the connecter requires no special information (as in the native VOL connector).</p>
<p>As mentioned above, many connectors will provide their own replacement for this call. See the connector's documentation for more information.</p>
<h3><a class="anchor" id="subsubsec_vol_connect_search"></a>
VOL Connector Search Path</h3>
<p>Dynamically loaded VOL connector plugins are discovered and loaded by the library using the same mechanism as dataset/group filter plugins. The default locations are:</p>
<p><em>Default locations</em> </p><div class="fragment"><div class="line">POSIX systems: /usr/local/<a class="code hl_namespace" href="namespacehdf5.html">hdf5</a>/lib/plugin</div>
<div class="line">Windows: %ALLUSERSPROFILE%/<a class="code hl_namespace" href="namespacehdf5.html">hdf5</a>/lib/plugin</div>
<div class="ttc" id="anamespacehdf5_html"><div class="ttname"><a href="namespacehdf5.html">hdf5</a></div><div class="ttdef"><b>Definition</b> HDF5.F90:26</div></div>
</div><!-- fragment --><p>These default locations can be overridden by setting the <a class="el" href="_h5public_8h.html#a020d112b3c3251e7518461466777611d">HDF5_PLUGIN_PATH</a> environment variable. There are also public H5PL API calls which can be used to add, modify, and remove search paths. The library will only look for plugins in the specified plugin paths. By default, it will NOT find plugins that are simply located in the same directory as the executable.</p>
<h3><a class="anchor" id="subsubsec_vol_connect_param"></a>
Parameter Strings</h3>
<p>Each VOL connector is allowed to take in a parameter string which can be parsed via <a class="el" href="_h5_v_lconnector__passthru_8h.html#a458256651d397c69a113dd180f50411f">H5VLconnector_str_to_info()</a> to get an info struct which can be passed to <a class="el" href="group___f_a_p_l.html#ga8aaa97e70b2544c3d95d908e1ae5b0f0">H5Pset_vol()</a>. </p><div class="fragment"><div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="_h5_v_lconnector__passthru_8h.html#a458256651d397c69a113dd180f50411f">H5VLconnector_str_to_info</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> connector_id, <span class="keywordtype">void</span> **info)</div>
<div class="ttc" id="a_h5_v_lconnector__passthru_8h_html_a458256651d397c69a113dd180f50411f"><div class="ttname"><a href="_h5_v_lconnector__passthru_8h.html#a458256651d397c69a113dd180f50411f">H5VLconnector_str_to_info</a></div><div class="ttdeci">herr_t H5VLconnector_str_to_info(const char *str, hid_t connector_id, void **info)</div></div>
</div><!-- fragment --><p>And the obtained info can be freed via: </p><div class="fragment"><div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="_h5_v_lconnector__passthru_8h.html#a0d7c204a3db83d5563b0be557a3a4571">H5VLfree_connector_info</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> connector_id, <span class="keywordtype">void</span> *vol_info)</div>
<div class="ttc" id="a_h5_v_lconnector__passthru_8h_html_a0d7c204a3db83d5563b0be557a3a4571"><div class="ttname"><a href="_h5_v_lconnector__passthru_8h.html#a0d7c204a3db83d5563b0be557a3a4571">H5VLfree_connector_info</a></div><div class="ttdeci">herr_t H5VLfree_connector_info(hid_t connector_id, void *vol_info)</div></div>
</div><!-- fragment --><p>Most users will not need this functionality as they will be using either connector- specific setup calls which will handle registering and configuring the connector for them or they will be using the environment variable (see below).</p>
<h3><a class="anchor" id="subsubsec_vol_connect_env"></a>
Environment Variable</h3>
<p>The HDF5 library allows specifying a default VOL connector via an environment variable: <a class="el" href="_h5public_8h.html#a8d21b0c065a27e1b6ea46efb966c7394">HDF5_VOL_CONNECTOR</a>. The value of this environment variable should be set to ”<em>vol connector name &lt;parameters&gt;</em>”.</p>
<p>This will perform the equivalent of: </p><ol>
<li>
<a class="el" href="group___h5_v_l.html#gaf48d1225927e1e701656346b832ee6b1">H5VLregister_connector_by_name()</a> using the specified connector name </li>
<li>
<a class="el" href="_h5_v_lconnector__passthru_8h.html#a458256651d397c69a113dd180f50411f">H5VLconnector_str_to_info()</a> using the specified parameters. This will go through the connector we got from the previous step and should return a VOL info struct from the parameter string in the environment variable. </li>
<li>
<a class="el" href="group___f_a_p_l.html#ga8aaa97e70b2544c3d95d908e1ae5b0f0">H5Pset_vol()</a> on the default fapl using the obtained ID and info. </li>
</ol>
<p>The environment variable is parsed once, at library startup. Since the environment variable scheme just changes the default connector, it can be overridden by subsequent calls to <a class="el" href="group___f_a_p_l.html#ga8aaa97e70b2544c3d95d908e1ae5b0f0">H5Pset_vol()</a>. The <em>&lt;parameters&gt;</em> is optional, so for connectors which do not require any special configuration parameters you can just set the environment variable to the name.</p>
<p>NOTE: Implementing the environment variable in this way means that setting the native VOL connector becomes somewhat awkward as there is no explicit HDF5 API call to do this. Instead you will need to get the native VOL connector's ID via <a class="el" href="group___h5_v_l.html#ga8f6d366bc6b8323bbffe1e5a5ba18bee">H5VLget_connector_id_by_value</a>(<a class="el" href="group___h5_v_l_d_e_f.html#ga5768c946c69994f8269b509838a87d89">H5_VOL_NATIVE</a>) and set it manually in the fapl using <a class="el" href="group___f_a_p_l.html#ga8aaa97e70b2544c3d95d908e1ae5b0f0">H5Pset_vol()</a>.</p>
<h2><a class="anchor" id="subsec_vol_adapt"></a>
Adapting HDF5 Software to Use the VOL</h2>
<p>The VOL was engineered to be as unobtrusive as possible and, when a connector which implements most/all of the data model functionality is in use, many applications will require little, if any, modification. As mentioned in the quick start section, most modifications will probably consist of connector setup code (which can usually be accomplished via the environment variable), adapting code to use the new token-based API calls, and protecting native-VOL-connector-specific functions.</p>
<h3><a class="anchor" id="subsubsec_vol_adapt_token"></a>
haddr_t → H5O_token_t</h3>
<p>Some HDF5 API calls and data structures refer to addresses in the HDF5 using the <a class="el" href="_h5public_8h.html#a8c86e866f40d7167cf9a1934c72b856f">haddr_t</a> type. Unfortunately, the concept of an ”address” will make no sense for many connectors, though they may still have some sort of location key (e.g.: a key in a key-value pair store).</p>
<p>As a part of the VOL work, the HDF5 API was updated to replace the <a class="el" href="_h5public_8h.html#a8c86e866f40d7167cf9a1934c72b856f">haddr_t</a> type with a new <a class="el" href="struct_h5_o__token__t.html">H5O_token_t</a> type that represents a more generic object location. These tokens appear as an opaque byte array of <a class="el" href="_h5public_8h.html#ac91e46b83ee173747f9792b33755ff0e">H5O_MAX_TOKEN_SIZE</a> bytes that is only meaningful for a particular VOL connector. They are not intended for interpretation outside of a VOL connector, though a connector author may provide an API call to convert their tokens to something meaningful for the storage. </p><div class="fragment"><div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="struct_h5_o__token__t.html">H5O_token_t</a> {</div>
<div class="line">    uint8_t <a class="code hl_variable" href="struct_h5_o__token__t.html#adaac031833a234d10c1ff3130f6aa4cc">__data</a>[<a class="code hl_define" href="_h5public_8h.html#ac91e46b83ee173747f9792b33755ff0e">H5O_MAX_TOKEN_SIZE</a>];</div>
<div class="line">} <a class="code hl_struct" href="struct_h5_o__token__t.html">H5O_token_t</a>;</div>
<div class="ttc" id="a_h5public_8h_html_ac91e46b83ee173747f9792b33755ff0e"><div class="ttname"><a href="_h5public_8h.html#ac91e46b83ee173747f9792b33755ff0e">H5O_MAX_TOKEN_SIZE</a></div><div class="ttdeci">#define H5O_MAX_TOKEN_SIZE</div><div class="ttdef"><b>Definition</b> H5public.h:391</div></div>
<div class="ttc" id="astruct_h5_o__token__t_html"><div class="ttname"><a href="struct_h5_o__token__t.html">H5O_token_t</a></div><div class="ttdef"><b>Definition</b> H5public.h:400</div></div>
<div class="ttc" id="astruct_h5_o__token__t_html_adaac031833a234d10c1ff3130f6aa4cc"><div class="ttname"><a href="struct_h5_o__token__t.html#adaac031833a234d10c1ff3130f6aa4cc">H5O_token_t::__data</a></div><div class="ttdeci">uint8_t __data[(16)]</div><div class="ttdef"><b>Definition</b> H5public.h:401</div></div>
</div><!-- fragment --><p>As an example, in the native VOL connector, the token stores an <a class="el" href="_h5public_8h.html#a8c86e866f40d7167cf9a1934c72b856f">haddr_t</a> address and addresses can be converted to and from tokens using <a class="el" href="group___h5_v_l_n_a_t.html#ga09ca3912386a8c8c66edbcbbe2c10c1f">H5VLnative_addr_to_token()</a> and <a class="el" href="group___h5_v_l_n_a_t.html#ga7136f48f79f4b88d87002d5c218ceb40">H5VLnative_token_to_addr()</a>.</p>
<div class="fragment"><div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___h5_v_l_n_a_t.html#ga09ca3912386a8c8c66edbcbbe2c10c1f">H5VLnative_addr_to_token</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <a class="code hl_typedef" href="_h5public_8h.html#a8c86e866f40d7167cf9a1934c72b856f">haddr_t</a> addr, <a class="code hl_struct" href="struct_h5_o__token__t.html">H5O_token_t</a> *token)</div>
<div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___h5_v_l_n_a_t.html#ga7136f48f79f4b88d87002d5c218ceb40">H5VLnative_token_to_addr</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <a class="code hl_struct" href="struct_h5_o__token__t.html">H5O_token_t</a> token, <a class="code hl_typedef" href="_h5public_8h.html#a8c86e866f40d7167cf9a1934c72b856f">haddr_t</a> *addr)</div>
<div class="ttc" id="a_h5public_8h_html_a8c86e866f40d7167cf9a1934c72b856f"><div class="ttname"><a href="_h5public_8h.html#a8c86e866f40d7167cf9a1934c72b856f">haddr_t</a></div><div class="ttdeci">uint64_t haddr_t</div><div class="ttdef"><b>Definition</b> H5public.h:325</div></div>
<div class="ttc" id="agroup___h5_v_l_n_a_t_html_ga09ca3912386a8c8c66edbcbbe2c10c1f"><div class="ttname"><a href="group___h5_v_l_n_a_t.html#ga09ca3912386a8c8c66edbcbbe2c10c1f">H5VLnative_addr_to_token</a></div><div class="ttdeci">herr_t H5VLnative_addr_to_token(hid_t loc_id, haddr_t addr, H5O_token_t *token)</div></div>
<div class="ttc" id="agroup___h5_v_l_n_a_t_html_ga7136f48f79f4b88d87002d5c218ceb40"><div class="ttname"><a href="group___h5_v_l_n_a_t.html#ga7136f48f79f4b88d87002d5c218ceb40">H5VLnative_token_to_addr</a></div><div class="ttdeci">herr_t H5VLnative_token_to_addr(hid_t loc_id, H5O_token_t token, haddr_t *addr)</div></div>
</div><!-- fragment --><p>Several API calls have also been added to compare tokens and convert tokens to and from strings.</p>
<div class="fragment"><div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___h5_o.html#gaeb8da4fbe62f8a3cd9146a7ac1093562">H5Otoken_cmp</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <span class="keyword">const</span> <a class="code hl_struct" href="struct_h5_o__token__t.html">H5O_token_t</a> *token1, <span class="keyword">const</span> <a class="code hl_struct" href="struct_h5_o__token__t.html">H5O_token_t</a> *token2,</div>
<div class="line">                    <span class="keywordtype">int</span> *cmp_value)</div>
<div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___h5_o.html#ga2bdd7528090f7f2c4b361ab4cc7735f6">H5Otoken_to_str</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <span class="keyword">const</span> <a class="code hl_struct" href="struct_h5_o__token__t.html">H5O_token_t</a> *token, <span class="keywordtype">char</span> **token_str)</div>
<div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___h5_o.html#ga5136c14b4e907f15007030d7a6d6cd24">H5Otoken_from_str</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <span class="keyword">const</span> <span class="keywordtype">char</span> *token_str, <a class="code hl_struct" href="struct_h5_o__token__t.html">H5O_token_t</a> *token)</div>
<div class="ttc" id="agroup___h5_o_html_ga2bdd7528090f7f2c4b361ab4cc7735f6"><div class="ttname"><a href="group___h5_o.html#ga2bdd7528090f7f2c4b361ab4cc7735f6">H5Otoken_to_str</a></div><div class="ttdeci">herr_t H5Otoken_to_str(hid_t loc_id, const H5O_token_t *token, char **token_str)</div><div class="ttdoc">Serializes a connector's object token into a string.</div></div>
<div class="ttc" id="agroup___h5_o_html_ga5136c14b4e907f15007030d7a6d6cd24"><div class="ttname"><a href="group___h5_o.html#ga5136c14b4e907f15007030d7a6d6cd24">H5Otoken_from_str</a></div><div class="ttdeci">herr_t H5Otoken_from_str(hid_t loc_id, const char *token_str, H5O_token_t *token)</div><div class="ttdoc">Deserializes a string into a connector object token.</div></div>
<div class="ttc" id="agroup___h5_o_html_gaeb8da4fbe62f8a3cd9146a7ac1093562"><div class="ttname"><a href="group___h5_o.html#gaeb8da4fbe62f8a3cd9146a7ac1093562">H5Otoken_cmp</a></div><div class="ttdeci">herr_t H5Otoken_cmp(hid_t loc_id, const H5O_token_t *token1, const H5O_token_t *token2, int *cmp_value)</div><div class="ttdoc">Compares two VOL connector object tokens.</div></div>
</div><!-- fragment --><h3><a class="anchor" id="subsubsec_vol_adapt_api"></a>
Specific API Call Substitutions</h3>
<h4><a class="el" href="group___h5_f.html#ga6055c2ea3438bd4aaf221eba66843225" title="Determines whether a file is in the HDF5 format.">H5Fis_hdf5()</a><a class="el" href="group___h5_f.html#ga584471c3b98453b9b04a4bf9af847442" title="Checks if a file can be opened with a given file access property list.">H5Fis_accessible()</a></h4>
<p><a class="el" href="group___h5_f.html#ga6055c2ea3438bd4aaf221eba66843225">H5Fis_hdf5()</a> does not take a file access property list (fapl). As this is where the VOL connector is specified, this call cannot be used with arbitrary connectors. As a VOL-enabled replacement, <a class="el" href="group___h5_f.html#ga584471c3b98453b9b04a4bf9af847442">H5Fis_accessible()</a> has been added to the library. It has the same semantics as <a class="el" href="group___h5_f.html#ga6055c2ea3438bd4aaf221eba66843225">H5Fis_hdf5()</a>, but takes a fapl so it can work with any VOL connector.</p>
<p>Note that, at this time, <a class="el" href="group___h5_f.html#ga6055c2ea3438bd4aaf221eba66843225">H5Fis_hdf5()</a> always uses the native VOL connector, regardless of the settings of environment variables, etc. </p><div class="fragment"><div class="line"><a class="code hl_typedef" href="_h5public_8h.html#aa8f6c28736dbd0f18388c67911d38aca">htri_t</a> <a class="code hl_function" href="group___h5_f.html#ga584471c3b98453b9b04a4bf9af847442">H5Fis_accessible</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *container_name, <a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> fapl_id)</div>
<div class="ttc" id="a_h5public_8h_html_aa8f6c28736dbd0f18388c67911d38aca"><div class="ttname"><a href="_h5public_8h.html#aa8f6c28736dbd0f18388c67911d38aca">htri_t</a></div><div class="ttdeci">int htri_t</div><div class="ttdef"><b>Definition</b> H5public.h:265</div></div>
<div class="ttc" id="agroup___h5_f_html_ga584471c3b98453b9b04a4bf9af847442"><div class="ttname"><a href="group___h5_f.html#ga584471c3b98453b9b04a4bf9af847442">H5Fis_accessible</a></div><div class="ttdeci">htri_t H5Fis_accessible(const char *container_name, hid_t fapl_id)</div><div class="ttdoc">Checks if a file can be opened with a given file access property list.</div></div>
</div><!-- fragment --><h4>H5Oget_info[1|2]() → <a class="el" href="group___h5_o.html#gaf0fbf7d780a1eefce920facadb198013" title="Retrieves the metadata for an object specified by an identifier.">H5Oget_info3()</a> and <a class="el" href="group___h5_o.html#ga677d99ab106e2032b991b75b75de0e46" title="Retrieve native file format information about an object.">H5Oget_native_info()</a></h4>
<p>The <a class="el" href="group___h5_o.html#gaf3751684a6706e3ba49b863406011f80">H5Oget_info1()</a> and <a class="el" href="group___h5_o.html#ga06f896e14fe4fa940fbc2bc235e0cf74">H5Oget_info2()</a> family of HDF5 API calls are often used by user code to obtain information about an object in the file, however these calls returned a struct which contained native information and are thus unsuitable for use with arbitrary VOL connectors.</p>
<p>A new <a class="el" href="group___h5_o.html#gaf0fbf7d780a1eefce920facadb198013">H5Oget_info3()</a> family of API calls has been added to the library which only return data model information via a new <a class="el" href="struct_h5_o__info2__t.html">H5O_info2_t</a> struct. This struct also returns <a class="el" href="struct_h5_o__token__t.html">H5O_token_t</a> tokens in place of <a class="el" href="_h5public_8h.html#a8c86e866f40d7167cf9a1934c72b856f">haddr_t</a> addresses. </p><div class="fragment"><div class="line"><a class="code hl_function" href="group___h5_o.html#gaf0fbf7d780a1eefce920facadb198013">H5Oget_info3</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <a class="code hl_struct" href="struct_h5_o__info2__t.html">H5O_info2_t</a> *oinfo, <span class="keywordtype">unsigned</span> fields)</div>
<div class="line"> </div>
<div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___h5_o.html#gabb69c962999e027cef0079bbb1282199">H5Oget_info_by_name3</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code hl_struct" href="struct_h5_o__info2__t.html">H5O_info2_t</a> *oinfo,</div>
<div class="line">                            <span class="keywordtype">unsigned</span> fields, <a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> lapl_id)</div>
<div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___h5_o.html#gafa2f8884f7d3e7fd9b8549f5b59fd9eb">H5Oget_info_by_idx3</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <span class="keyword">const</span> <span class="keywordtype">char</span> *group_name, <a class="code hl_enumeration" href="_h5public_8h.html#a8203c78e10ab2d89d8bce688a31afad3">H5_index_t</a> idx_type,</div>
<div class="line">                           <a class="code hl_enumeration" href="_h5public_8h.html#a6a6ddd1504d1ed61939d46d91d9441b9">H5_iter_order_t</a> order, <a class="code hl_typedef" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> n, <a class="code hl_struct" href="struct_h5_o__info2__t.html">H5O_info2_t</a> *oinfo,</div>
<div class="line">                           <span class="keywordtype">unsigned</span> fields, <a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> lapl_id)</div>
<div class="ttc" id="a_h5public_8h_html_a6a6ddd1504d1ed61939d46d91d9441b9"><div class="ttname"><a href="_h5public_8h.html#a6a6ddd1504d1ed61939d46d91d9441b9">H5_iter_order_t</a></div><div class="ttdeci">H5_iter_order_t</div><div class="ttdef"><b>Definition</b> H5public.h:344</div></div>
<div class="ttc" id="a_h5public_8h_html_a7f81cce70fb546af88da24d9285d3c1c"><div class="ttname"><a href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a></div><div class="ttdeci">uint64_t hsize_t</div><div class="ttdef"><b>Definition</b> H5public.h:297</div></div>
<div class="ttc" id="a_h5public_8h_html_a8203c78e10ab2d89d8bce688a31afad3"><div class="ttname"><a href="_h5public_8h.html#a8203c78e10ab2d89d8bce688a31afad3">H5_index_t</a></div><div class="ttdeci">H5_index_t</div><div class="ttdef"><b>Definition</b> H5public.h:367</div></div>
<div class="ttc" id="agroup___h5_o_html_gabb69c962999e027cef0079bbb1282199"><div class="ttname"><a href="group___h5_o.html#gabb69c962999e027cef0079bbb1282199">H5Oget_info_by_name3</a></div><div class="ttdeci">herr_t H5Oget_info_by_name3(hid_t loc_id, const char *name, H5O_info2_t *oinfo, unsigned fields, hid_t lapl_id)</div><div class="ttdoc">Retrieves the metadata for an object, identifying the object by location and relative name.</div></div>
<div class="ttc" id="agroup___h5_o_html_gaf0fbf7d780a1eefce920facadb198013"><div class="ttname"><a href="group___h5_o.html#gaf0fbf7d780a1eefce920facadb198013">H5Oget_info3</a></div><div class="ttdeci">herr_t H5Oget_info3(hid_t loc_id, H5O_info2_t *oinfo, unsigned fields)</div><div class="ttdoc">Retrieves the metadata for an object specified by an identifier.</div></div>
<div class="ttc" id="agroup___h5_o_html_gafa2f8884f7d3e7fd9b8549f5b59fd9eb"><div class="ttname"><a href="group___h5_o.html#gafa2f8884f7d3e7fd9b8549f5b59fd9eb">H5Oget_info_by_idx3</a></div><div class="ttdeci">herr_t H5Oget_info_by_idx3(hid_t loc_id, const char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5O_info2_t *oinfo, unsigned fields, hid_t lapl_id)</div><div class="ttdoc">Retrieves the metadata for an object, identifying the object by an index position.</div></div>
<div class="ttc" id="astruct_h5_o__info2__t_html"><div class="ttname"><a href="struct_h5_o__info2__t.html">H5O_info2_t</a></div><div class="ttdef"><b>Definition</b> H5Opublic.h:145</div></div>
</div><!-- fragment --><div class="fragment"><div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="struct_h5_o__info2__t.html">H5O_info2_t</a> {</div>
<div class="line">    <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code hl_variable" href="struct_h5_o__info2__t.html#aa056ca8d2414b80b34a00c06cd69d29e">fileno</a>; <span class="comment">// File number that object is located in</span></div>
<div class="line">    <a class="code hl_struct" href="struct_h5_o__token__t.html">H5O_token_t</a> <a class="code hl_variable" href="struct_h5_o__info2__t.html#aec1bc6735ca478c420f5ff729bcb3888">token</a>;    <span class="comment">// Token representing the object</span></div>
<div class="line">    <a class="code hl_enumeration" href="_h5_opublic_8h.html#a929ff459574495f461657f6be804cdec">H5O_type_t</a> <a class="code hl_variable" href="struct_h5_o__info2__t.html#a6e12ef8203e400ee995a41a24e981539">type</a>;      <span class="comment">// Basic object type (group, dataset, etc.)</span></div>
<div class="line">    <span class="keywordtype">unsigned</span> <a class="code hl_variable" href="struct_h5_o__info2__t.html#a299ecaad7f9548089654d47a1b06291f">rc</a>;          <span class="comment">// Reference count of object</span></div>
<div class="line">    time_t <a class="code hl_variable" href="struct_h5_o__info2__t.html#a8688b65a745fcb4ef567a480b22a65b5">atime</a>;         <span class="comment">// Access time</span></div>
<div class="line">    time_t <a class="code hl_variable" href="struct_h5_o__info2__t.html#a4a2d3a53446ef3217564ced73636f9bf">mtime</a>;         <span class="comment">// Modification time</span></div>
<div class="line">    time_t <a class="code hl_variable" href="struct_h5_o__info2__t.html#a2b105009c2d9020cbaf51d4457c20e3d">ctime</a>;         <span class="comment">// Change time</span></div>
<div class="line">    time_t <a class="code hl_variable" href="struct_h5_o__info2__t.html#acdd8ce155a94e9a2748566d20ec1f92f">btime</a>;         <span class="comment">// Birth time</span></div>
<div class="line">    <a class="code hl_typedef" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> <a class="code hl_variable" href="struct_h5_o__info2__t.html#abc37a3659a46ce6096446cfd0d9f67ff">num_attrs</a>;    <span class="comment">// # of attributes attached to object</span></div>
<div class="line">} <a class="code hl_struct" href="struct_h5_o__info2__t.html">H5O_info2_t</a>;</div>
<div class="ttc" id="a_h5_opublic_8h_html_a929ff459574495f461657f6be804cdec"><div class="ttname"><a href="_h5_opublic_8h.html#a929ff459574495f461657f6be804cdec">H5O_type_t</a></div><div class="ttdeci">H5O_type_t</div><div class="ttdef"><b>Definition</b> H5Opublic.h:107</div></div>
<div class="ttc" id="astruct_h5_o__info2__t_html_a299ecaad7f9548089654d47a1b06291f"><div class="ttname"><a href="struct_h5_o__info2__t.html#a299ecaad7f9548089654d47a1b06291f">H5O_info2_t::rc</a></div><div class="ttdeci">unsigned rc</div><div class="ttdef"><b>Definition</b> H5Opublic.h:150</div></div>
<div class="ttc" id="astruct_h5_o__info2__t_html_a2b105009c2d9020cbaf51d4457c20e3d"><div class="ttname"><a href="struct_h5_o__info2__t.html#a2b105009c2d9020cbaf51d4457c20e3d">H5O_info2_t::ctime</a></div><div class="ttdeci">time_t ctime</div><div class="ttdef"><b>Definition</b> H5Opublic.h:153</div></div>
<div class="ttc" id="astruct_h5_o__info2__t_html_a4a2d3a53446ef3217564ced73636f9bf"><div class="ttname"><a href="struct_h5_o__info2__t.html#a4a2d3a53446ef3217564ced73636f9bf">H5O_info2_t::mtime</a></div><div class="ttdeci">time_t mtime</div><div class="ttdef"><b>Definition</b> H5Opublic.h:152</div></div>
<div class="ttc" id="astruct_h5_o__info2__t_html_a6e12ef8203e400ee995a41a24e981539"><div class="ttname"><a href="struct_h5_o__info2__t.html#a6e12ef8203e400ee995a41a24e981539">H5O_info2_t::type</a></div><div class="ttdeci">H5O_type_t type</div><div class="ttdef"><b>Definition</b> H5Opublic.h:149</div></div>
<div class="ttc" id="astruct_h5_o__info2__t_html_a8688b65a745fcb4ef567a480b22a65b5"><div class="ttname"><a href="struct_h5_o__info2__t.html#a8688b65a745fcb4ef567a480b22a65b5">H5O_info2_t::atime</a></div><div class="ttdeci">time_t atime</div><div class="ttdef"><b>Definition</b> H5Opublic.h:151</div></div>
<div class="ttc" id="astruct_h5_o__info2__t_html_aa056ca8d2414b80b34a00c06cd69d29e"><div class="ttname"><a href="struct_h5_o__info2__t.html#aa056ca8d2414b80b34a00c06cd69d29e">H5O_info2_t::fileno</a></div><div class="ttdeci">unsigned long fileno</div><div class="ttdef"><b>Definition</b> H5Opublic.h:147</div></div>
<div class="ttc" id="astruct_h5_o__info2__t_html_abc37a3659a46ce6096446cfd0d9f67ff"><div class="ttname"><a href="struct_h5_o__info2__t.html#abc37a3659a46ce6096446cfd0d9f67ff">H5O_info2_t::num_attrs</a></div><div class="ttdeci">hsize_t num_attrs</div><div class="ttdef"><b>Definition</b> H5Opublic.h:155</div></div>
<div class="ttc" id="astruct_h5_o__info2__t_html_acdd8ce155a94e9a2748566d20ec1f92f"><div class="ttname"><a href="struct_h5_o__info2__t.html#acdd8ce155a94e9a2748566d20ec1f92f">H5O_info2_t::btime</a></div><div class="ttdeci">time_t btime</div><div class="ttdef"><b>Definition</b> H5Opublic.h:154</div></div>
<div class="ttc" id="astruct_h5_o__info2__t_html_aec1bc6735ca478c420f5ff729bcb3888"><div class="ttname"><a href="struct_h5_o__info2__t.html#aec1bc6735ca478c420f5ff729bcb3888">H5O_info2_t::token</a></div><div class="ttdeci">H5O_token_t token</div><div class="ttdef"><b>Definition</b> H5Opublic.h:148</div></div>
</div><!-- fragment --><p>To return the native file format information, <a class="el" href="group___h5_o.html#ga677d99ab106e2032b991b75b75de0e46">H5Oget_native_info()</a> calls have been added which can return such data separate from the data model data. </p><div class="fragment"><div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___h5_o.html#ga677d99ab106e2032b991b75b75de0e46">H5Oget_native_info</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <a class="code hl_struct" href="struct_h5_o__native__info__t.html">H5O_native_info_t</a> *oinfo, <span class="keywordtype">unsigned</span> fields)</div>
<div class="line"> </div>
<div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___h5_o.html#ga296ded21aeac3921fee07272353b8476">H5Oget_native_info_by_name</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code hl_struct" href="struct_h5_o__native__info__t.html">H5O_native_info_t</a> *oinfo,</div>
<div class="line">                                  <span class="keywordtype">unsigned</span> fields, <a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> lapl_id)</div>
<div class="line"> </div>
<div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___h5_o.html#gafa6570d8b0ef6e2aff75093e1f99f67e">H5Oget_native_info_by_idx</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <span class="keyword">const</span> <span class="keywordtype">char</span> *group_name, <a class="code hl_enumeration" href="_h5public_8h.html#a8203c78e10ab2d89d8bce688a31afad3">H5_index_t</a> idx_type,</div>
<div class="line">                                 <a class="code hl_enumeration" href="_h5public_8h.html#a6a6ddd1504d1ed61939d46d91d9441b9">H5_iter_order_t</a> order, <a class="code hl_typedef" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> n, <a class="code hl_struct" href="struct_h5_o__native__info__t.html">H5O_native_info_t</a> *oinfo,</div>
<div class="line">                                 <span class="keywordtype">unsigned</span> fields, <a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> lapl_id)</div>
<div class="ttc" id="agroup___h5_o_html_ga296ded21aeac3921fee07272353b8476"><div class="ttname"><a href="group___h5_o.html#ga296ded21aeac3921fee07272353b8476">H5Oget_native_info_by_name</a></div><div class="ttdeci">herr_t H5Oget_native_info_by_name(hid_t loc_id, const char *name, H5O_native_info_t *oinfo, unsigned fields, hid_t lapl_id)</div><div class="ttdoc">Retrieve native file format information about an object given its name.</div></div>
<div class="ttc" id="agroup___h5_o_html_ga677d99ab106e2032b991b75b75de0e46"><div class="ttname"><a href="group___h5_o.html#ga677d99ab106e2032b991b75b75de0e46">H5Oget_native_info</a></div><div class="ttdeci">herr_t H5Oget_native_info(hid_t loc_id, H5O_native_info_t *oinfo, unsigned fields)</div><div class="ttdoc">Retrieve native file format information about an object.</div></div>
<div class="ttc" id="agroup___h5_o_html_gafa6570d8b0ef6e2aff75093e1f99f67e"><div class="ttname"><a href="group___h5_o.html#gafa6570d8b0ef6e2aff75093e1f99f67e">H5Oget_native_info_by_idx</a></div><div class="ttdeci">herr_t H5Oget_native_info_by_idx(hid_t loc_id, const char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5O_native_info_t *oinfo, unsigned fields, hid_t lapl_id)</div><div class="ttdoc">Retrieve native file format information about an object according to the order of an index.</div></div>
<div class="ttc" id="astruct_h5_o__native__info__t_html"><div class="ttname"><a href="struct_h5_o__native__info__t.html">H5O_native_info_t</a></div><div class="ttdef"><b>Definition</b> H5Opublic.h:164</div></div>
</div><!-- fragment --><div class="fragment"><div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="struct_h5_o__native__info__t.html">H5O_native_info_t</a> {</div>
<div class="line">    <a class="code hl_struct" href="struct_h5_o__hdr__info__t.html">H5O_hdr_info_t</a> <a class="code hl_variable" href="struct_h5_o__native__info__t.html#a6cfeed1003ece5686449118f36dce19f">hdr</a>; <span class="comment">// Object header information</span></div>
<div class="line">    <span class="comment">// Extra metadata storage for obj &amp; attributes</span></div>
<div class="line">    <span class="keyword">struct </span>{</div>
<div class="line">        <a class="code hl_struct" href="struct_h5__ih__info__t.html">H5_ih_info_t</a> <a class="code hl_variable" href="struct_h5_o__native__info__t.html#ad99b3bb65fd4d3f3ec75ab5eea43eb15">obj</a>;  <span class="comment">// v1/v2 B-tree &amp; local/fractal heap for groups,</span></div>
<div class="line">                           <span class="comment">// B-tree for chunked datasets</span></div>
<div class="line">        <a class="code hl_struct" href="struct_h5__ih__info__t.html">H5_ih_info_t</a> <a class="code hl_variable" href="struct_h5_o__native__info__t.html#aba95c19d6477004a0fa4591e467412b6">attr</a>; <span class="comment">// v2 B-tree &amp; heap for attributes</span></div>
<div class="line">    } <a class="code hl_variable" href="struct_h5_o__native__info__t.html#abe72d8bb4b08f59d7ee91a894983c162">meta_size</a>;</div>
<div class="line">} <a class="code hl_struct" href="struct_h5_o__native__info__t.html">H5O_native_info_t</a>;</div>
<div class="ttc" id="astruct_h5__ih__info__t_html"><div class="ttname"><a href="struct_h5__ih__info__t.html">H5_ih_info_t</a></div><div class="ttdef"><b>Definition</b> H5public.h:379</div></div>
<div class="ttc" id="astruct_h5_o__hdr__info__t_html"><div class="ttname"><a href="struct_h5_o__hdr__info__t.html">H5O_hdr_info_t</a></div><div class="ttdef"><b>Definition</b> H5Opublic.h:122</div></div>
<div class="ttc" id="astruct_h5_o__native__info__t_html_a6cfeed1003ece5686449118f36dce19f"><div class="ttname"><a href="struct_h5_o__native__info__t.html#a6cfeed1003ece5686449118f36dce19f">H5O_native_info_t::hdr</a></div><div class="ttdeci">H5O_hdr_info_t hdr</div><div class="ttdef"><b>Definition</b> H5Opublic.h:165</div></div>
<div class="ttc" id="astruct_h5_o__native__info__t_html_aba95c19d6477004a0fa4591e467412b6"><div class="ttname"><a href="struct_h5_o__native__info__t.html#aba95c19d6477004a0fa4591e467412b6">H5O_native_info_t::attr</a></div><div class="ttdeci">H5_ih_info_t attr</div><div class="ttdef"><b>Definition</b> H5Opublic.h:168</div></div>
<div class="ttc" id="astruct_h5_o__native__info__t_html_abe72d8bb4b08f59d7ee91a894983c162"><div class="ttname"><a href="struct_h5_o__native__info__t.html#abe72d8bb4b08f59d7ee91a894983c162">H5O_native_info_t::meta_size</a></div><div class="ttdeci">struct H5O_native_info_t::@24 meta_size</div></div>
<div class="ttc" id="astruct_h5_o__native__info__t_html_ad99b3bb65fd4d3f3ec75ab5eea43eb15"><div class="ttname"><a href="struct_h5_o__native__info__t.html#ad99b3bb65fd4d3f3ec75ab5eea43eb15">H5O_native_info_t::obj</a></div><div class="ttdeci">H5_ih_info_t obj</div><div class="ttdef"><b>Definition</b> H5Opublic.h:167</div></div>
</div><!-- fragment --><h4>H5Ovisit[1|2]() → <a class="el" href="group___h5_o.html#ga6d03115ae0e5e5b516bbf35bb492266a" title="Recursively visits all objects accessible from a specified object.">H5Ovisit3()</a></h4>
<p>The callback used in the <a class="el" href="group___h5_o.html#ga5ce86255fcc34ceaf84a62551cd24233">H5Ovisit()</a> family of API calls took an H5O info t struct parameter. As in <a class="el" href="group___h5_o.html#gaf4f302a33faba9e1c2b5f64c62ca4ed5">H5Oget_info()</a>, this both commingled data model and native file format information and also used native HDF5 file addresses.</p>
<p>New <a class="el" href="group___h5_o.html#ga6d03115ae0e5e5b516bbf35bb492266a">H5Ovisit3()</a> API calls have been created which use the token-based, data-model-only <a class="el" href="_h5version_8h.html#a5f76b0cdd6d68d61f11e46d4f06e50d4">H5O_info_t</a> struct in the callback.</p>
<div class="fragment"><div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___h5_o.html#ga6d03115ae0e5e5b516bbf35bb492266a">H5Ovisit3</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> obj_id, <a class="code hl_enumeration" href="_h5public_8h.html#a8203c78e10ab2d89d8bce688a31afad3">H5_index_t</a> idx_type, <a class="code hl_enumeration" href="_h5public_8h.html#a6a6ddd1504d1ed61939d46d91d9441b9">H5_iter_order_t</a> order, <a class="code hl_typedef" href="_h5_opublic_8h.html#a564cec62aef0389091ad21d235aa321c">H5O_iterate2_t</a> op,</div>
<div class="line">                 <span class="keywordtype">void</span> *op_data, <span class="keywordtype">unsigned</span> fields)</div>
<div class="line"> </div>
<div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___h5_o.html#ga34815400b01df59c4dac19436124885a">H5Ovisit_by_name3</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <span class="keyword">const</span> <span class="keywordtype">char</span> *obj_name, <a class="code hl_enumeration" href="_h5public_8h.html#a8203c78e10ab2d89d8bce688a31afad3">H5_index_t</a> idx_type,</div>
<div class="line">                         <a class="code hl_enumeration" href="_h5public_8h.html#a6a6ddd1504d1ed61939d46d91d9441b9">H5_iter_order_t</a> order, <a class="code hl_typedef" href="_h5_opublic_8h.html#a564cec62aef0389091ad21d235aa321c">H5O_iterate2_t</a> op, <span class="keywordtype">void</span> *op_data,</div>
<div class="line">                         <span class="keywordtype">unsigned</span> fields, <a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> lapl_id)</div>
<div class="ttc" id="a_h5_opublic_8h_html_a564cec62aef0389091ad21d235aa321c"><div class="ttname"><a href="_h5_opublic_8h.html#a564cec62aef0389091ad21d235aa321c">H5O_iterate2_t</a></div><div class="ttdeci">herr_t(* H5O_iterate2_t)(hid_t obj, const char *name, const H5O_info2_t *info, void *op_data)</div><div class="ttdef"><b>Definition</b> H5Opublic.h:193</div></div>
<div class="ttc" id="agroup___h5_o_html_ga34815400b01df59c4dac19436124885a"><div class="ttname"><a href="group___h5_o.html#ga34815400b01df59c4dac19436124885a">H5Ovisit_by_name3</a></div><div class="ttdeci">herr_t H5Ovisit_by_name3(hid_t loc_id, const char *obj_name, H5_index_t idx_type, H5_iter_order_t order, H5O_iterate2_t op, void *op_data, unsigned fields, hid_t lapl_id)</div><div class="ttdoc">Recursively visits all objects accessible from a specified object.</div></div>
<div class="ttc" id="agroup___h5_o_html_ga6d03115ae0e5e5b516bbf35bb492266a"><div class="ttname"><a href="group___h5_o.html#ga6d03115ae0e5e5b516bbf35bb492266a">H5Ovisit3</a></div><div class="ttdeci">herr_t H5Ovisit3(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order, H5O_iterate2_t op, void *op_data, unsigned fields)</div><div class="ttdoc">Recursively visits all objects accessible from a specified object.</div></div>
</div><!-- fragment --><div class="fragment"><div class="line"><span class="keyword">typedef</span> <a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> (*<a class="code hl_typedef" href="_h5_opublic_8h.html#a564cec62aef0389091ad21d235aa321c">H5O_iterate2_t</a>)(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> obj, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <a class="code hl_struct" href="struct_h5_o__info2__t.html">H5O_info2_t</a> *info, <span class="keywordtype">void</span> *op_data)</div>
</div><!-- fragment --><h4><a class="el" href="group___h5_l.html#ga97279697f3010a6ad31dd7f4341eb698">H5Lget_info()</a><a class="el" href="group___h5_l.html#ga65e63c6e880fd0183c40486d6748e400" title="Returns information about a link.">H5Lget_info2()</a></h4>
<p>The <a class="el" href="group___h5_l.html#ga97279697f3010a6ad31dd7f4341eb698">H5Lget_info()</a> API calls were updated to use tokens instead of addresses in the <a class="el" href="_h5version_8h.html#af542682cfe46de7b0759e52a1608d1e4">H5L_info_t</a> struct. </p><div class="fragment"><div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___h5_l.html#ga65e63c6e880fd0183c40486d6748e400">H5Lget_info2</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <a class="code hl_struct" href="struct_h5_l__info2__t.html">H5L_info2_t</a> *linfo, <a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> lapl_id)</div>
<div class="line"> </div>
<div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___h5_l.html#gaecfb3ef8520e9224b24a151ff8459ba9">H5Lget_info_by_idx2</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <span class="keyword">const</span> <span class="keywordtype">char</span> *group_name, <a class="code hl_enumeration" href="_h5public_8h.html#a8203c78e10ab2d89d8bce688a31afad3">H5_index_t</a> idx_type,</div>
<div class="line">                           <a class="code hl_enumeration" href="_h5public_8h.html#a6a6ddd1504d1ed61939d46d91d9441b9">H5_iter_order_t</a> order, <a class="code hl_typedef" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> n, <a class="code hl_struct" href="struct_h5_l__info2__t.html">H5L_info2_t</a> *linfo, <a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> lapl_id)</div>
<div class="ttc" id="agroup___h5_l_html_ga65e63c6e880fd0183c40486d6748e400"><div class="ttname"><a href="group___h5_l.html#ga65e63c6e880fd0183c40486d6748e400">H5Lget_info2</a></div><div class="ttdeci">herr_t H5Lget_info2(hid_t loc_id, const char *name, H5L_info2_t *linfo, hid_t lapl_id)</div><div class="ttdoc">Returns information about a link.</div></div>
<div class="ttc" id="agroup___h5_l_html_gaecfb3ef8520e9224b24a151ff8459ba9"><div class="ttname"><a href="group___h5_l.html#gaecfb3ef8520e9224b24a151ff8459ba9">H5Lget_info_by_idx2</a></div><div class="ttdeci">herr_t H5Lget_info_by_idx2(hid_t loc_id, const char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5L_info2_t *linfo, hid_t lapl_id)</div><div class="ttdoc">Retrieves metadata for a link in a group, according to the order within a field or index.</div></div>
<div class="ttc" id="astruct_h5_l__info2__t_html"><div class="ttname"><a href="struct_h5_l__info2__t.html">H5L_info2_t</a></div><div class="ttdoc">Information struct for links.</div><div class="ttdef"><b>Definition</b> H5Lpublic.h:87</div></div>
</div><!-- fragment --><div class="fragment"><div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line">    <a class="code hl_enumeration" href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48">H5L_type_t</a> type;      <span class="comment">// Type of link</span></div>
<div class="line">    <span class="keywordtype">bool</span> corder_valid; <span class="comment">// Indicate if creation order is valid</span></div>
<div class="line">    int64_t corder;       <span class="comment">// Creation order</span></div>
<div class="line">    <a class="code hl_enumeration" href="_h5_tpublic_8h.html#a03755b8370672668ddc7063add28e71a">H5T_cset_t</a> cset;      <span class="comment">// Character set of link name</span></div>
<div class="line">    <span class="keyword">union </span>{</div>
<div class="line">        <a class="code hl_struct" href="struct_h5_o__token__t.html">H5O_token_t</a> token; <span class="comment">// Token of location that hard link points to</span></div>
<div class="line">        <span class="keywordtype">size_t</span> val_size;   <span class="comment">// Size of a soft link or UD link value</span></div>
<div class="line">    } u;</div>
<div class="line">} <a class="code hl_struct" href="struct_h5_l__info2__t.html">H5L_info2_t</a>;</div>
<div class="ttc" id="a_h5_lpublic_8h_html_a1e3c5d37c60e7a59b0179e26a4094a48"><div class="ttname"><a href="_h5_lpublic_8h.html#a1e3c5d37c60e7a59b0179e26a4094a48">H5L_type_t</a></div><div class="ttdeci">H5L_type_t</div><div class="ttdoc">Link class types.</div><div class="ttdef"><b>Definition</b> H5Lpublic.h:63</div></div>
<div class="ttc" id="a_h5_tpublic_8h_html_a03755b8370672668ddc7063add28e71a"><div class="ttname"><a href="_h5_tpublic_8h.html#a03755b8370672668ddc7063add28e71a">H5T_cset_t</a></div><div class="ttdeci">H5T_cset_t</div><div class="ttdef"><b>Definition</b> H5Tpublic.h:93</div></div>
</div><!-- fragment --><h4><a class="el" href="group___t_r_a_v.html#ga55406698106930db68242987c11ba051">H5Literate()</a> and <a class="el" href="group___t_r_a_v.html#gac0558936502924d9e898d8b6e041ed69">H5Lvisit()</a> → H5Literte2() and <a class="el" href="group___t_r_a_v.html#gae1c6f963892a5f4e8922a66fbe338f66" title="Recursively visits all links starting from a specified group.">H5Lvisit2()</a></h4>
<p>The callback used in these API calls used the old <a class="el" href="_h5version_8h.html#af542682cfe46de7b0759e52a1608d1e4">H5L_info_t</a> struct, which used addresses instead of tokens. These callbacks were versioned in the C library and now take modified <a class="el" href="_h5_lpublic_8h.html#a9f26d305724d0969b3b25e100a109fc9" title="Prototype for H5Literate2(), H5Literate_by_name2() operator.">H5L_iterate2_t</a> callbacks which use the new token-based info structs. </p><div class="fragment"><div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___t_r_a_v.html#gad7ca4206f06b5ada85b6ec5867ec6c73">H5Literate2</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> grp_id, <a class="code hl_enumeration" href="_h5public_8h.html#a8203c78e10ab2d89d8bce688a31afad3">H5_index_t</a> idx_type, <a class="code hl_enumeration" href="_h5public_8h.html#a6a6ddd1504d1ed61939d46d91d9441b9">H5_iter_order_t</a> order, <a class="code hl_typedef" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *idx,</div>
<div class="line">                   <a class="code hl_typedef" href="_h5_lpublic_8h.html#a9f26d305724d0969b3b25e100a109fc9">H5L_iterate2_t</a> op, <span class="keywordtype">void</span> *op_data)</div>
<div class="line"> </div>
<div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___t_r_a_v.html#ga745a65eb516ce40a3be43490aaeb5c5e">H5Literate_by_name2</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <span class="keyword">const</span> <span class="keywordtype">char</span> *group_name, <a class="code hl_enumeration" href="_h5public_8h.html#a8203c78e10ab2d89d8bce688a31afad3">H5_index_t</a> idx_type,</div>
<div class="line">                           <a class="code hl_enumeration" href="_h5public_8h.html#a6a6ddd1504d1ed61939d46d91d9441b9">H5_iter_order_t</a> order, <a class="code hl_typedef" href="_h5public_8h.html#a7f81cce70fb546af88da24d9285d3c1c">hsize_t</a> *idx, <a class="code hl_typedef" href="_h5_lpublic_8h.html#a9f26d305724d0969b3b25e100a109fc9">H5L_iterate2_t</a> op,</div>
<div class="line">                           <span class="keywordtype">void</span> *op_data, <a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> lapl_id)</div>
<div class="line"> </div>
<div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___t_r_a_v.html#gae1c6f963892a5f4e8922a66fbe338f66">H5Lvisit2</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> grp_id, <a class="code hl_enumeration" href="_h5public_8h.html#a8203c78e10ab2d89d8bce688a31afad3">H5_index_t</a> idx_type, <a class="code hl_enumeration" href="_h5public_8h.html#a6a6ddd1504d1ed61939d46d91d9441b9">H5_iter_order_t</a> order, <a class="code hl_typedef" href="_h5_lpublic_8h.html#a9f26d305724d0969b3b25e100a109fc9">H5L_iterate2_t</a> op,</div>
<div class="line">                 <span class="keywordtype">void</span> *op_data)</div>
<div class="line"> </div>
<div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___t_r_a_v.html#gafee93792c7e27a7e78b1ec221876b173">H5Lvisit_by_name2</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <span class="keyword">const</span> <span class="keywordtype">char</span> *group_name, <a class="code hl_enumeration" href="_h5public_8h.html#a8203c78e10ab2d89d8bce688a31afad3">H5_index_t</a> idx_type,</div>
<div class="line">                         <a class="code hl_enumeration" href="_h5public_8h.html#a6a6ddd1504d1ed61939d46d91d9441b9">H5_iter_order_t</a> order, <a class="code hl_typedef" href="_h5_lpublic_8h.html#a9f26d305724d0969b3b25e100a109fc9">H5L_iterate2_t</a> op, <span class="keywordtype">void</span> *op_data, <a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> lapl_id)</div>
<div class="ttc" id="a_h5_lpublic_8h_html_a9f26d305724d0969b3b25e100a109fc9"><div class="ttname"><a href="_h5_lpublic_8h.html#a9f26d305724d0969b3b25e100a109fc9">H5L_iterate2_t</a></div><div class="ttdeci">herr_t(* H5L_iterate2_t)(hid_t group, const char *name, const H5L_info2_t *info, void *op_data)</div><div class="ttdoc">Prototype for H5Literate2(), H5Literate_by_name2() operator.</div><div class="ttdef"><b>Definition</b> H5Lpublic.h:105</div></div>
<div class="ttc" id="agroup___t_r_a_v_html_ga745a65eb516ce40a3be43490aaeb5c5e"><div class="ttname"><a href="group___t_r_a_v.html#ga745a65eb516ce40a3be43490aaeb5c5e">H5Literate_by_name2</a></div><div class="ttdeci">herr_t H5Literate_by_name2(hid_t loc_id, const char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate2_t op, void *op_data, hid_t lapl_id)</div><div class="ttdoc">Iterates through links in a group.</div></div>
<div class="ttc" id="agroup___t_r_a_v_html_gad7ca4206f06b5ada85b6ec5867ec6c73"><div class="ttname"><a href="group___t_r_a_v.html#gad7ca4206f06b5ada85b6ec5867ec6c73">H5Literate2</a></div><div class="ttdeci">herr_t H5Literate2(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate2_t op, void *op_data)</div><div class="ttdoc">Iterates over links in a group, with user callback routine, according to the order within an index.</div></div>
<div class="ttc" id="agroup___t_r_a_v_html_gae1c6f963892a5f4e8922a66fbe338f66"><div class="ttname"><a href="group___t_r_a_v.html#gae1c6f963892a5f4e8922a66fbe338f66">H5Lvisit2</a></div><div class="ttdeci">herr_t H5Lvisit2(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate2_t op, void *op_data)</div><div class="ttdoc">Recursively visits all links starting from a specified group.</div></div>
<div class="ttc" id="agroup___t_r_a_v_html_gafee93792c7e27a7e78b1ec221876b173"><div class="ttname"><a href="group___t_r_a_v.html#gafee93792c7e27a7e78b1ec221876b173">H5Lvisit_by_name2</a></div><div class="ttdeci">herr_t H5Lvisit_by_name2(hid_t loc_id, const char *group_name, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate2_t op, void *op_data, hid_t lapl_id)</div><div class="ttdoc">Recursively visits all links starting from a specified group.</div></div>
</div><!-- fragment --><div class="fragment"><div class="line"><span class="keyword">typedef</span> <a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> (*<a class="code hl_typedef" href="_h5_lpublic_8h.html#a9f26d305724d0969b3b25e100a109fc9">H5L_iterate2_t</a>)(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> group, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <a class="code hl_struct" href="struct_h5_l__info2__t.html">H5L_info2_t</a> *info,</div>
<div class="line">                                 <span class="keywordtype">void</span> *op_data);</div>
</div><!-- fragment --><h4>H5Oopen by addr() → H5Oopen by token()</h4>
<p>The new <a class="el" href="group___h5_o.html#ga2ea3627cf171d0565307702a5e203262">H5Oopen_by_token()</a> API call can be used to open objects by the tokens that are returned by the various ”get info”, et al. API calls. </p><div class="fragment"><div class="line"><a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> <a class="code hl_function" href="group___h5_o.html#ga2ea3627cf171d0565307702a5e203262">H5Oopen_by_token</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> loc_id, <a class="code hl_struct" href="struct_h5_o__token__t.html">H5O_token_t</a> token)</div>
<div class="ttc" id="agroup___h5_o_html_ga2ea3627cf171d0565307702a5e203262"><div class="ttname"><a href="group___h5_o.html#ga2ea3627cf171d0565307702a5e203262">H5Oopen_by_token</a></div><div class="ttdeci">hid_t H5Oopen_by_token(hid_t loc_id, H5O_token_t token)</div><div class="ttdoc">Opens an object in an HDF5 file using its VOL independent token.</div></div>
</div><!-- fragment --><h3><a class="anchor" id="subsubsec_vol_adapt_native"></a>
Protect Native-Only API Calls</h3>
<p>In HDF5 1.14.0, a way to determine support for optional calls has been added. </p><div class="fragment"><div class="line"><a class="code hl_typedef" href="_h5public_8h.html#a3b079ecf932a5c599499cf7e298af160">herr_t</a> <a class="code hl_function" href="group___h5_v_l.html#ga17ef00e528d99eda5879d749c2a12043">H5VLquery_optional</a>(<a class="code hl_typedef" href="_h5_ipublic_8h.html#a0045db7ff9c22ad35db6ae91662e1943">hid_t</a> obj_id, <a class="code hl_enumeration" href="group___h5_v_l_d_e_f.html#ga14175ca7d867657e3e5c2f79a154a599">H5VL_subclass_t</a> subcls, <span class="keywordtype">int</span> opt_type, uint64_t *flags)</div>
<div class="ttc" id="agroup___h5_v_l_d_e_f_html_ga14175ca7d867657e3e5c2f79a154a599"><div class="ttname"><a href="group___h5_v_l_d_e_f.html#ga14175ca7d867657e3e5c2f79a154a599">H5VL_subclass_t</a></div><div class="ttdeci">H5VL_subclass_t</div><div class="ttdef"><b>Definition</b> H5VLpublic.h:152</div></div>
<div class="ttc" id="agroup___h5_v_l_html_ga17ef00e528d99eda5879d749c2a12043"><div class="ttname"><a href="group___h5_v_l.html#ga17ef00e528d99eda5879d749c2a12043">H5VLquery_optional</a></div><div class="ttdeci">herr_t H5VLquery_optional(hid_t obj_id, H5VL_subclass_t subcls, int opt_type, uint64_t *flags)</div><div class="ttdoc">Determine if a VOL connector supports a particular optional callback operation.</div></div>
</div><!-- fragment --><p>The call takes an object that is VOL managed (i.e.; file, group, dataset, attribute, object, committed datatype), the VOL subclass (an enum documented in <a class="el" href="_h5_v_lpublic_8h.html">H5VLpublic.h</a>), an operation ”type” (discussed below), and an out parameter for the bitwise capabilities flags (also discussed below). Code that needs to protect a VOL-specific API call can call the function to see if the API call is supported, which will be reported via the flags. Specifically, if the <a class="el" href="group___h5_v_l_d_e_f.html#ga2208d2bf3252e8201b80d48d9bfdd26c">H5VL_OPT_QUERY_SUPPORTED</a> bit is set, the feature is supported. The other flags are more useful for VOL connector authors than end users.</p>
<p>In the case of the native VOL connector, the opt type operations are documented in <a class="el" href="_h5_v_lnative_8h.html">H5VLnative.h</a>. The current list of native operations is given at the end of this document, along with a list of native-only connector calls.</p>
<h2><a class="anchor" id="subsec_vol_lang"></a>
Language Wrappers</h2>
<p>Due to the parameter type and callback changes that were required in the C library API regarding the update from <a class="el" href="_h5public_8h.html#a8c86e866f40d7167cf9a1934c72b856f">haddr_t</a> addresses to <a class="el" href="struct_h5_o__token__t.html">H5O_token_t</a> tokens and the difficulty in versioning the wrapper APIs, it was decided to update all of the wrappers to use tokens instead of addresses. This will allow the language wrappers to make use of the VOL, but at the expense of backward compatibility.</p>
<p>Information on the C API changes can be found above.</p>
<p>Affected API calls, by language:</p>
<h3><a class="anchor" id="subsubsec_vol_lang_c"></a>
C++</h3>
<ul>
<li>
The <b>visit_operator_t</b> callback now uses a <a class="el" href="struct_h5_o__info2__t.html">H5O_info2_t</a> parameter instead of <a class="el" href="struct_h5_o__info1__t.html">H5O_info1_t</a> so the callback can be passed to <a class="el" href="group___h5_o.html#ga6d03115ae0e5e5b516bbf35bb492266a">H5Ovisit3()</a> internally. This affects the H5Object::visit() method. </li>
<li>
The H5Location::getObjinfo() methods now take <a class="el" href="struct_h5_o__info2__t.html">H5O_info2_t</a> parameters. </li>
<li>
The H5Location::getLinkInfo() methods now return <a class="el" href="struct_h5_l__info2__t.html" title="Information struct for links.">H5L_info2_t</a> structs. </li>
<li>
H5File::isHdf5 uses <a class="el" href="group___h5_f.html#ga584471c3b98453b9b04a4bf9af847442">H5Fis_accessible()</a>, though it always passes <a class="el" href="_h5_ppublic_8h.html#afa85e97bfbf9bf1c58e39263846c568f">H5P_DEFAULT</a> as the fapl. It will only work with arbitrary VOL connectors if the default VOL connector is changed via the environment variable. </li>
</ul>
<p>The C++ wrappers do not allow opening HDF5 file objects by address or token.</p>
<p>The public H5VL API calls found in <a class="el" href="_h5_v_lpublic_8h.html">H5VLpublic.h</a> were NOT added to the C++ API.</p>
<h3><a class="anchor" id="subsubsec_vol_lang_fort"></a>
Fortran</h3>
<p>As in the C API, these API calls had their structs updated to the token version so the h5o_info_t, etc. structs no longer contain native file format information and the callbacks will need to match the non-deprecated, token-enabled versions. </p><ul>
<li>
h5lget_info_f </li>
<li>
h5lget_info_by_idx f </li>
<li>
h5literate_f </li>
<li>
h5literate_by_name_f </li>
<li>
h5oget_info_f </li>
<li>
h5oget_info_by_idx_f </li>
<li>
h5oget_info_by_name_f </li>
<li>
h5oopen_by_token_f </li>
<li>
h5ovisit_f </li>
<li>
h5ovisit_by_name_f </li>
</ul>
<p>Additionally, h5fis_hdf5_f was updated to use <a class="el" href="group___h5_f.html#ga584471c3b98453b9b04a4bf9af847442">H5Fis_accessible</a> internally, though with the same caveat as the C++ implementation: the default fapl is always passed in so arbitrary VOL connectors will only work if the default VOL connector is changed via the environment variable.</p>
<p>The public H5VL API calls found in <a class="el" href="_h5_v_lpublic_8h.html">H5VLpublic.h</a> were also added to the Fortran wrappers.</p>
<h3><a class="anchor" id="subsubsec_vol_lang_java"></a>
Java/JNI</h3>
<ul>
<li>
<a class="el" href="group___h5_f.html#ga6055c2ea3438bd4aaf221eba66843225">H5Fis_hdf5</a> Will fail when the library is built without deprecated symbols. </li>
<li>
<a class="el" href="group___h5_f.html#ga584471c3b98453b9b04a4bf9af847442">H5Fis_accessible</a> is available and takes a fapl, allowing it to work with arbitrary VOL connectors. </li>
<li>
The <a class="el" href="namespace_h5.html">H5</a>(O|L)get_info, <a class="el" href="namespace_h5.html">H5</a>(O|L)visit, and <a class="el" href="group___t_r_a_v.html#ga55406698106930db68242987c11ba051">H5Literate</a> calls were updated as in the C library. </li>
<li>
<a class="el" href="group___h5_o.html#ga296ded21aeac3921fee07272353b8476">H5Oget_native_info_by_name</a> et al. were added and they work as in the C library (e.g.: essentially native VOL connector only). </li>
<li>
<a class="el" href="group___h5_o.html#ga137f3823adab4daaaf8fe87b40453fa2">H5Oopen_by_addr</a> was replaced with <a class="el" href="group___h5_o.html#ga2ea3627cf171d0565307702a5e203262">H5Oopen_by_token</a>. </li>
<li>
The public API calls in <a class="el" href="_h5_v_lpublic_8h.html">H5VLpublic.h</a> were added to the JNI. </li>
</ul>
<h2><a class="anchor" id="subsec_vol_cl"></a>
Using VOL Connectors With The HDF5 Command-Line Tools</h2>
<p>The following command-line tools are VOL-aware and can be used with arbitrary VOL connectors: </p><ul>
<li>(p)h5diff </li>
<li>h5dump </li>
<li>h5ls </li>
<li>h5mkgrp </li>
<li>h5repack</li>
</ul>
<p>The VOL connector can be set either using the <a class="el" href="_h5public_8h.html#a8d21b0c065a27e1b6ea46efb966c7394">HDF5_VOL_CONNECTOR</a> environment variable (see above) or via the command line. Each of the above tools takes command-line options to set the VOL connector by name or value and the VOL connector string, usually in the form of </p><div class="fragment"><div class="line">--vol-(name|value|info)</div>
</div><!-- fragment --><p> See the individual tool's help for the options specific to that tool.</p>
<h2><a class="anchor" id="subsec_vol_compat"></a>
Compatibility</h2>
<h3><a class="anchor" id="subsubsec_vol_compat_native"></a>
List of HDF5 Native VOL API Calls</h3>
<p>These API calls will probably fail when used with terminal VOL connectors other than the native HDF5 file format connector. Their use should be protected in code that uses arbitrary VOL connectors. Note that some connectors may, in fact, implement some of this functionality as it is possible to mimic the native HDF5 connector, however this will probably not be true for most non-native VOL connectors. </p><div></div><div>   <table class="doxtable">
<caption>Alphabetical list of HDF5 API calls specific to the native VOL connector</caption>
<tr>
<th>API </th><th>Description  </th></tr>
<tr>
<td><a class="el" href="group___h5_a.html#gaadd809fc16238754105bbddd20bcdde1" title="Determines the number of attributes attached to an object.">H5Aget_num_attrs</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_a.html#gabdb2cf7368eec0ad998cbe6a3f61aa41" title="Calls a user&#39;s function for each attribute on an object.">H5Aiterate1</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#gac482c2386aa3aea4c44730a627a7adb8" title="Iterate over all chunks of a chunked dataset.">H5Dchunk_iter</a> </td><td></td></tr>
<tr>
<td>H5Ddebug </td><td>Internal API routines  </td></tr>
<tr>
<td>H5Dformat_convert </td><td>Internal API routines  </td></tr>
<tr>
<td>H5Dget_chunk_index_type </td><td>Internal API routines  </td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#gaccff213d3e0765b86f66d08dd9959807" title="Retrieves information about a chunk specified by its index.">H5Dget_chunk_info</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga408a49c6ec59c5b65ce4c791f8d26cb0" title="Retrieves information about a chunk specified by its coordinates.">H5Dget_chunk_info_by_coord</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#gaaeea958861de082db9051fc4bf215234" title="Returns the amount of storage allocated within the file for a raw data chunk in a dataset.">H5Dget_chunk_storage_size</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga8e15897dcc5799d6c09806644b492d7a" title="Retrieves number of chunks that have nonempty intersection with a specified selection.">H5Dget_num_chunks</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga70ce7ab523b06c6c6a93fb28e916c2b3" title="Returns dataset address in file.">H5Dget_offset</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#gac1092a63b718ec949d6539590a914b60" title="Reads a raw data chunk directly from a dataset in a file into a buffer.">H5Dread_chunk</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga416ccd200929b11386a10e9024977109" title="Writes a raw data chunk from a buffer directly to a dataset in a file.">H5Dwrite_chunk</a> </td><td></td></tr>
<tr>
<td>H5FD* </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gafcc153d8606829d4401e93305e5246d7" title="Clears the external link open file cache.">H5Fclear_elink_file_cache</a> </td><td></td></tr>
<tr>
<td>H5Fformat_convert </td><td>Internal API routines  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gacbf3ba8b36750c42b49740567a9732c4" title="Retrieves the setting for whether or not a file will create minimized dataset object headers.">H5Fget_dset_no_attrs_hint</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#ga4c18bddafc652203944d889a602bd53f" title="Retrieves the file&#39;s end-of-allocation (EOA)">H5Fget_eoa</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gadc53f4e76b1199cb5d2a8cb7fbb114ad" title="Retrieves a copy of the image of an existing, open file.">H5Fget_file_image</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#ga515426821321c261a825b4e4a3f576fe" title="Returns the size of an HDF5 file (in bytes)">H5Fget_filesize</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gab9cbf1a45f9dcda34b43f985b7848434" title="Retrieves free-space section information for a file.">H5Fget_free_sections</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#ga3ef2673183567543346668a8f1eca2e9" title="Returns the amount of free space in a file (in bytes)">H5Fget_freespace</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#ga660153029322fa6b77f5473cedc2d72f" title="Retrieves global file information.">H5Fget_info1</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gaced8c09c1559636a9c3f33dff3f4520e" title="Retrieves global file information.">H5Fget_info2</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#gaa67f127242d4aaf244ae8ac4a1fe6a59" title="Obtains current metadata cache configuration for target file.">H5Fget_mdc_config</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#gabea066c3fd924d2cf868ecee66a7c41f" title="Obtains target file&#39;s metadata cache hit rate.">H5Fget_mdc_hit_rate</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#ga7b37da15ff80c4aa5c275649f1f45b0a" title="Obtains information about a cache image if it exists.">H5Fget_mdc_image_info</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#ga998ebdc7b5190cf3d0fdf2fbe71e9780" title="Gets the current metadata cache logging status.">H5Fget_mdc_logging_status</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#gacda6cbd60d3c50b59f801eba4e5a335f" title="Obtains current metadata cache size data for specified file.">H5Fget_mdc_size</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___s_w_m_r.html#gaa80bd62f19993e414e383db7d1623e5f" title="Retrieves the collection of read retries for metadata entries with checksum.">H5Fget_metadata_read_retry_info</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___p_h5_f.html#ga849316b77788799fecb321a87d987ade" title="Retrieves the atomicity mode in use.">H5Fget_mpi_atomicity</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#ga0663defe0143631f4292267c21e94202" title="Retrieves statistics about page access when it is enabled.">H5Fget_page_buffering_stats</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gae4020a66fb8da0586e3b74c81ffccea4" title="Returns pointer to the file handle from the virtual file driver.">H5Fget_vfd_handle</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gadbe82c1f6e16c21062fabd20b0ffccd4" title="Sets the file&#39; EOA to the maximum of (EOA, EOF) + increment.">H5Fincrement_filesize</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#ga6055c2ea3438bd4aaf221eba66843225" title="Determines whether a file is in the HDF5 format.">H5Fis_hdf5</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#ga6708886c2bb8740327d9078d7840197f" title="Resets hit rate statistics counters for the target file.">H5Freset_mdc_hit_rate_stats</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#ga7ef1c0aab9a7a9112a8d0a788ec8696c" title="Resets the page buffer statistics.">H5Freset_page_buffering_stats</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gafc0166070f920f037e6b1a5c66e5464c" title="Sets the flag to create minimized dataset object headers.">H5Fset_dset_no_attrs_hint</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gae920c2acac63c0039db5c2845fb8e5bb" title="Sets the latest version of the library to be used for writing objects.">H5Fset_latest_format</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#ga4b833c33fe2e141a26b6f2ad559d3610" title="Enables the switch of version bounds setting for a file.">H5Fset_libver_bounds</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#ga81bc06be69131484eb04d01511b9c8f8" title="Attempts to configure metadata cache of target file.">H5Fset_mdc_config</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___p_h5_f.html#ga087dbbf37cb5c451ae8a6f66b227f0fc" title="Sets the MPI atomicity mode.">H5Fset_mpi_atomicity</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#ga378fb5863071278b47070cf205f53e67" title="Starts logging metadata cache events if logging was previously enabled.">H5Fstart_mdc_logging</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___s_w_m_r.html#ga159be34fbe7e4a959589310ef0196dfe" title="Retrieves free-space section information for a file.">H5Fstart_swmr_write</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#ga78627b23010f82002b837f4d312bf234" title="Stops logging metadata cache events if logging was previously enabled and is currently ongoing.">H5Fstop_mdc_logging</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_g.html#gac5a1c3e1ed4264d92cc02ca20afc57f4" title="Retrieves comment for specified object.">H5Gget_comment</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_g.html#ga957fee64f796f184f542537127ad6c11" title="Iterates over the entries of a group invoking a callback for each entry encountered.">H5Giterate</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_g.html#gad4be126ab7bbf2001435e8e70089f3d3" title="Retrieves information about a group.">H5Gget_info</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_g.html#gadedd0c73c98f2ada69305f2992c3300e" title="Retrieves information about a group by its name.">H5Gget_info_by_name</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_g.html#ga985f27ad1a164d99fa1f58c6de60ab00" title="Retrieves information about a group, according to the group&#39;s position within an index.">H5Gget_info_by_idx</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_g.html#gad75244979da933ba0b3ad25258850a6b" title="Returns information about an object.">H5Gget_objinfo</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_g.html#ga80180e7b819d3c9b3b3f1895e9baaf5b" title="Returns the name of an object specified by an index.">H5Gget_objname_by_idx</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_g.html#gab1383b8cca3fa99410ad36427059c5a7" title="Returns the type of an object specified by an index.">H5Gget_objtype_by_idx</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_g.html#ga7a615715ea68fc1bf11484a8278fe682" title="Sets comment for specified object.">H5Gset_comment</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_l.html#gacc2ad7f2b402c4bf9bb122d7f43b98dc" title="Returns information about a link.">H5Lget_info1</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_l.html#ga7ed207f47e0e0f768f0d540c73e37e2a" title="Retrieves metadata for a link in a group, according to the order within a field or index.">H5Lget_info_by_idx1</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___t_r_a_v.html#ga1e7c0a8cf17699563c02e128f27042f1" title="Iterates over links in a group, with user callback routine, according to the order within an index.">H5Literate1</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___t_r_a_v.html#ga87e036da0c8d1146a073f3ee08e0fedc" title="Iterates through links in a group by its name.">H5Literate_by_name1</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___t_r_a_v.html#ga5424ef7043c82147490d027a0e8a59ef" title="Recursively visits all links starting from a specified group.">H5Lvisit1</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___t_r_a_v.html#ga1f1ba1bb4d44f2c111990024809417ac" title="Recursively visits all links starting from a specified group.">H5Lvisit_by_name1</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#gab2fa388aadd1ff154ee150cbb4884c1c" title="Retrieves comment for specified object.">H5Oare_mdc_flushes_disabled</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga0908be309da1fb4f771c1e264fac22ae" title="Prevents metadata entries for an HDF5 object from being flushed from the metadata cache to storage.">H5Odisable_mdc_flushes</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga21014920bdabf6973e233796d7174156" title="Enables flushing of dirty metadata entries from a file&#39;s metadata cache.">H5Oenable_mdc_flushes</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#gaa1511ce5e2fe01ce7ea58f2f851d694b" title="Retrieves comment for specified object.">H5Oget_comment</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#gae6d92d597c5a292d342a1bda91e41171" title="Retrieves comment for specified object.">H5Oget_comment_by_name</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga7208d2cf198dcfc875603323841bffae" title="Retrieves the metadata for an object, identifying the object by an index position.">H5Oget_info_by_idx1</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga85e15e65922874111da1a5efd5dd7bed" title="Retrieves the metadata for an object, identifying the object by an index position.">H5Oget_info_by_idx2</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga96ce408ffda805210844246904da2842" title="Retrieves the metadata for an object, identifying the object by location and relative name.">H5Oget_info_by_name1</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga0090da86c086c1c63a5acfaed39a035e" title="Retrieves the metadata for an object, identifying the object by location and relative name.">H5Oget_info_by_name2</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#gaf3751684a6706e3ba49b863406011f80" title="Retrieves the metadata for an object specified by an identifier.">H5Oget_info1</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga06f896e14fe4fa940fbc2bc235e0cf74" title="Retrieves the metadata for an object specified by an identifier.">H5Oget_info2</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga677d99ab106e2032b991b75b75de0e46" title="Retrieve native file format information about an object.">H5Oget_native_info</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#gafa6570d8b0ef6e2aff75093e1f99f67e" title="Retrieve native file format information about an object according to the order of an index.">H5Oget_native_info_by_idx</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga296ded21aeac3921fee07272353b8476" title="Retrieve native file format information about an object given its name.">H5Oget_native_info_by_name</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga137f3823adab4daaaf8fe87b40453fa2" title="Opens an object using its address within an HDF5 file.">H5Oopen_by_addr</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga8b5cf8e916204e29616516046121f631" title="Sets comment for specified object.">H5Oset_comment</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#gafeb5242de7f1080b5c19f4fe19784505" title="Sets comment for specified object.">H5Oset_comment_by_name</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga6efdb2a0a9fe9fe46695cc0f7bd993e7" title="Recursively visits all objects accessible from a specified object.">H5Ovisit1</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga5ce86255fcc34ceaf84a62551cd24233">H5Ovisit</a> by name1 </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#gaa4ab542f581f4fc9a4eaa95debb29c9e" title="Recursively visits all objects accessible from a specified object.">H5Ovisit2</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga5ce86255fcc34ceaf84a62551cd24233">H5Ovisit</a> by name2 </td><td>deprecated  </td></tr>
</table>
</div><div>   </div><h3><a class="anchor" id="subsubsec_vol_compat_indep"></a>
List of HDF5 VOL-Independent API Calls</h3>
<p>These HDF5 API calls do not depend on a particular VOL connector being loaded. </p><div></div><div>   <table class="doxtable">
<caption>Alphabetical list of VOL-independent HDF5 API calls</caption>
<tr>
<th>API </th><th>Description  </th></tr>
<tr>
<td>H5* </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga8d4a57e2b2b8c95cfecf6f75bdaa8343" title="Fills dataspace elements with a fill value in a memory buffer.">H5Dfill</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga1f6a428a8234d7c2ccba7da4742d79be" title="Gathers data from a selection within a memory buffer raw data chunk in a dataset.">H5Dgather</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga71421c684884ab49765748720fe938db" title="Iterates over all selected elements in a dataspace.">H5Diterate</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga3525b15235ba1fd415f988899e48dc5c" title="Scatters data into a selection within a memory buffer.">H5Dscatter</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga222a2fd93868e2524b2e42c3c6146119" title="Reclaims variable-length (VL) datatype memory buffers.">H5Dvlen_reclaim</a> </td><td>deprecated  </td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga0e97bbd8a8ee4a8b5b78ccce8547ce76" title="Determines the number of bytes required to store variable-length (VL) data.">H5Dvlen_get_buf_size</a> </td><td></td></tr>
<tr>
<td>H5E* </td><td></td></tr>
<tr>
<td>H5I* </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_l_a.html#ga02c1cf38efea97d18e5e2f65df3f08a2" title="Determines whether a class of user-defined links is registered.">H5Lis_registered</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_l_a.html#ga5073a814de9878bad53e1d3c900ea77f" title="Registers a user-defined link class or changes behavior of an existing class.">H5Lregister</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_l.html#gade0c3b274c185d148f000172fbdc3220" title="Decodes external link information.">H5Lunpack_elink_val</a> </td><td></td></tr>
<tr>
<td><a class="el" href="group___h5_l_a.html#ga01ddc889d27306a96a7cd27b6084a5ec" title="Unregisters a class of user-defined links.">H5Lunregister</a> </td><td></td></tr>
<tr>
<td>H5PL* </td><td></td></tr>
<tr>
<td>H5P* </td><td></td></tr>
<tr>
<td>H5S* </td><td></td></tr>
<tr>
<td>H5T* </td><td>non-committed  </td></tr>
<tr>
<td>H5VL* </td><td></td></tr>
<tr>
<td>H5Z* </td><td></td></tr>
</table>
</div><div>   </div><h3><a class="anchor" id="subsubsec_vol_compat_opt"></a>
List of Native VOL Optional Operation Values By Subclass</h3>
<p>These values can be passed to the opt type parameter of H5VLquery optional(). </p><div></div><div>   <table class="doxtable">
<caption>List of Native VOL Optional Operation Values By Subclass</caption>
<tr>
<th>Subclass </th><th>API Reference </th><th>Definition  </th></tr>
<tr>
<th>H5VL_SUBCLS_ATTR </th><td><a class="el" href="group___h5_a.html#gab9dcfc543cd4282f32b8ea19e08ffa6c">H5Aiterate</a> (deprecated routine) </td><td><a class="el" href="_h5_v_lnative_8h.html#a6f6beb074a558b1b41c48275f25ad243">H5VL_NATIVE_ATTR_ITERATE_OLD</a>  </td></tr>
<tr>
<th rowspan="11">H5VL_SUBCLS_DATASET </th><td>H5Dformat_convert (internal) </td><td><a class="el" href="_h5_v_lnative_8h.html#acee682362743a2d93822b948820f9c6e">H5VL_NATIVE_DATASET_FORMAT_CONVERT</a>  </td></tr>
<tr>
<td>H5Dget_chunk_index_type (internal) </td><td><a class="el" href="_h5_v_lnative_8h.html#acd4d7845233f37ee36f5f6077f13d194">H5VL_NATIVE_DATASET_GET_CHUNK_INDEX_TYPE</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#gaaeea958861de082db9051fc4bf215234" title="Returns the amount of storage allocated within the file for a raw data chunk in a dataset.">H5Dget_chunk_storage_size</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#acddd86100b4d589e79581edf4884af78">H5VL_NATIVE_DATASET_GET_CHUNK_STORAGE_SIZE</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga8e15897dcc5799d6c09806644b492d7a" title="Retrieves number of chunks that have nonempty intersection with a specified selection.">H5Dget_num_chunks</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a67c5302300de3dce3d6a87fc993941e1">H5VL_NATIVE_DATASET_GET_NUM_CHUNKS</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#gaccff213d3e0765b86f66d08dd9959807" title="Retrieves information about a chunk specified by its index.">H5Dget_chunk_info</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#ad9e5d19fabe5b8365f577d90322e8a80">H5VL_NATIVE_DATASET_GET_CHUNK_INFO_BY_IDX</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga408a49c6ec59c5b65ce4c791f8d26cb0" title="Retrieves information about a chunk specified by its coordinates.">H5Dget_chunk_info_by_coord</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#aaad5b69dec6724988d35c02371e374a0">H5VL_NATIVE_DATASET_GET_CHUNK_INFO_BY_COORD</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#gac1092a63b718ec949d6539590a914b60" title="Reads a raw data chunk directly from a dataset in a file into a buffer.">H5Dread_chunk</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#ae9f6fea99a00fc76f94a3883d936101c">H5VL_NATIVE_DATASET_CHUNK_READ</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga416ccd200929b11386a10e9024977109" title="Writes a raw data chunk from a buffer directly to a dataset in a file.">H5Dwrite_chunk</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a0d7bc94d260e3e2df060fd9f661bee83">H5VL_NATIVE_DATASET_CHUNK_WRITE</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga0e97bbd8a8ee4a8b5b78ccce8547ce76" title="Determines the number of bytes required to store variable-length (VL) data.">H5Dvlen_get_buf_size</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#ad99a75d4e8d9f11ef99f27156c5c8792">H5VL_NATIVE_DATASET_GET_VLEN_BUF_SIZE</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga70ce7ab523b06c6c6a93fb28e916c2b3" title="Returns dataset address in file.">H5Dget_offset</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#aae3ec47581e91f02880c16776324edde">H5VL_NATIVE_DATASET_GET_OFFSET</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_d.html#ga70ce7ab523b06c6c6a93fb28e916c2b3" title="Returns dataset address in file.">H5Dget_offset</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#ab927ce76e0e66748107392eaefea30ad">H5VL_NATIVE_DATASET_CHUNK_ITER</a>  </td></tr>
<tr>
<th rowspan="29">H5VL_SUBCLS_FILE </th><td><a class="el" href="group___h5_f.html#gafcc153d8606829d4401e93305e5246d7" title="Clears the external link open file cache.">H5Fclear_elink_file_cache</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#ac6d0b06911f656afb9769a86aa67ec68">H5VL_NATIVE_FILE_CLEAR_ELINK_CACHE</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gadc53f4e76b1199cb5d2a8cb7fbb114ad" title="Retrieves a copy of the image of an existing, open file.">H5Fget_file_image</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#ad8169c70f8043b0e9cffc7ccd6a248e3">H5VL_NATIVE_FILE_GET_FILE_IMAGE</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gab9cbf1a45f9dcda34b43f985b7848434" title="Retrieves free-space section information for a file.">H5Fget_free_sections</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a6fe307fec4788a2c9cbeccb41d9d86c7">H5VL_NATIVE_FILE_GET_FREE_SECTIONS</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#ga3ef2673183567543346668a8f1eca2e9" title="Returns the amount of free space in a file (in bytes)">H5Fget_freespace</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a9146c2e04ab8c75a6808927bad8b9505">H5VL_NATIVE_FILE_GET_FREE_SPACE</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#ga660153029322fa6b77f5473cedc2d72f" title="Retrieves global file information.">H5Fget_info1</a> / <a class="el" href="group___h5_f.html#gaced8c09c1559636a9c3f33dff3f4520e" title="Retrieves global file information.">H5Fget_info2</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#ac0ff62fa52184866b231d3d314fba88e">H5VL_NATIVE_FILE_GET_INFO</a>  </td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#gaa67f127242d4aaf244ae8ac4a1fe6a59" title="Obtains current metadata cache configuration for target file.">H5Fget_mdc_config</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#af4c416a95c1c2989493918f37d5796aa">H5VL_NATIVE_FILE_GET_MDC_CONF</a>  </td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#gabea066c3fd924d2cf868ecee66a7c41f" title="Obtains target file&#39;s metadata cache hit rate.">H5Fget_mdc_hit_rate</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a62eeb6aab65f7612ad3ce3febbd57fad">H5VL_NATIVE_FILE_GET_MDC_HR</a>  </td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#gacda6cbd60d3c50b59f801eba4e5a335f" title="Obtains current metadata cache size data for specified file.">H5Fget_mdc_size</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#ae0d3e6c976b8a9bae3d66cbaa1d9097b">H5VL_NATIVE_FILE_GET_MDC_SIZE</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#ga515426821321c261a825b4e4a3f576fe" title="Returns the size of an HDF5 file (in bytes)">H5Fget_filesize</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#ad549326c304f0db34a175f224c0dab38">H5VL_NATIVE_FILE_GET_SIZE</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gae4020a66fb8da0586e3b74c81ffccea4" title="Returns pointer to the file handle from the virtual file driver.">H5Fget_vfd_handle</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a3980f03a7f76e028027362a3369c0fb6">H5VL_NATIVE_FILE_GET_VFD_HANDLE</a>  </td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#ga6708886c2bb8740327d9078d7840197f" title="Resets hit rate statistics counters for the target file.">H5Freset_mdc_hit_rate_stats</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#acc4faec86feb9c1f0f082b798797d630">H5VL_NATIVE_FILE_RESET_MDC_HIT_RATE</a>  </td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#ga81bc06be69131484eb04d01511b9c8f8" title="Attempts to configure metadata cache of target file.">H5Fset_mdc_config</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a4d758b2a05fdbfbde4ea57bf1115dca8">H5VL_NATIVE_FILE_SET_MDC_CONFIG</a>  </td></tr>
<tr>
<td><a class="el" href="group___s_w_m_r.html#gaa80bd62f19993e414e383db7d1623e5f" title="Retrieves the collection of read retries for metadata entries with checksum.">H5Fget_metadata_read_retry_info</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#af3447d71c7e5893c4274c49eb9a8cbe4">H5VL_NATIVE_FILE_GET_METADATA_READ_RETRY_INFO</a>  </td></tr>
<tr>
<td><a class="el" href="group___s_w_m_r.html#ga159be34fbe7e4a959589310ef0196dfe" title="Retrieves free-space section information for a file.">H5Fstart_swmr_write</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a81665bce380069aa23b257699e768ea6">H5VL_NATIVE_FILE_START_SWMR_WRITE</a>  </td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#ga378fb5863071278b47070cf205f53e67" title="Starts logging metadata cache events if logging was previously enabled.">H5Fstart_mdc_logging</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a204824c1386c338c51889a4683313910">H5VL_NATIVE_FILE_START_MDC_LOGGING</a>  </td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#ga78627b23010f82002b837f4d312bf234" title="Stops logging metadata cache events if logging was previously enabled and is currently ongoing.">H5Fstop_mdc_logging</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a43644b7a555039664e5838917dc8b19f">H5VL_NATIVE_FILE_STOP_MDC_LOGGING</a>  </td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#ga998ebdc7b5190cf3d0fdf2fbe71e9780" title="Gets the current metadata cache logging status.">H5Fget_mdc_logging_status</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a45ab72336cb9193e0e588685773b525f">H5VL_NATIVE_FILE_GET_MDC_LOGGING_STATUS</a>  </td></tr>
<tr>
<td>H5Fformat_convert (internal) </td><td><a class="el" href="_h5_v_lnative_8h.html#aa0ee2a329e7eedb415411a266a8c48fd">H5VL_NATIVE_FILE_FORMAT_CONVERT</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#ga7ef1c0aab9a7a9112a8d0a788ec8696c" title="Resets the page buffer statistics.">H5Freset_page_buffering_stats</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#acae57ad1a2d0b3918ec43525d691bc2b">H5VL_NATIVE_FILE_RESET_PAGE_BUFFERING_STATS</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#ga0663defe0143631f4292267c21e94202" title="Retrieves statistics about page access when it is enabled.">H5Fget_page_buffering_stats</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#ae28f5fc045e3f3728e582aa3a66721bd">H5VL_NATIVE_FILE_GET_PAGE_BUFFERING_STATS</a>  </td></tr>
<tr>
<td><a class="el" href="group___m_d_c.html#ga7b37da15ff80c4aa5c275649f1f45b0a" title="Obtains information about a cache image if it exists.">H5Fget_mdc_image_info</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#afa5b76d65952391b8d302aeb14509b3b">H5VL_NATIVE_FILE_GET_MDC_IMAGE_INFO</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#ga4c18bddafc652203944d889a602bd53f" title="Retrieves the file&#39;s end-of-allocation (EOA)">H5Fget_eoa</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#ac5230dd379a463ce78f8eb1ca2ade657">H5VL_NATIVE_FILE_GET_EOA</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gadbe82c1f6e16c21062fabd20b0ffccd4" title="Sets the file&#39; EOA to the maximum of (EOA, EOF) + increment.">H5Fincrement_filesize</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#aa7c0ecdd8fb3f1725ddc647cc15426f3">H5VL_NATIVE_FILE_INCR_FILESIZE</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gae920c2acac63c0039db5c2845fb8e5bb" title="Sets the latest version of the library to be used for writing objects.">H5Fset_latest_format</a>/<a class="el" href="group___h5_f.html#ga4b833c33fe2e141a26b6f2ad559d3610" title="Enables the switch of version bounds setting for a file.">H5Fset_libver_bounds</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a434d6fea6ce5575042b6ffec0dff58c7">H5VL_NATIVE_FILE_SET_LIBVER_BOUNDS</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gacbf3ba8b36750c42b49740567a9732c4" title="Retrieves the setting for whether or not a file will create minimized dataset object headers.">H5Fget_dset_no_attrs_hint</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a08d3e870d99f7098c354640b7346597b">H5VL_NATIVE_FILE_GET_MIN_DSET_OHDR_FLAG</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_f.html#gafc0166070f920f037e6b1a5c66e5464c" title="Sets the flag to create minimized dataset object headers.">H5Fset_dset_no_attrs_hint</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a9c87d8969f22eb8e3002ceb98b001f90">H5VL_NATIVE_FILE_SET_MIN_DSET_OHDR_FLAG</a>  </td></tr>
<tr>
<td><a class="el" href="group___p_h5_f.html#ga849316b77788799fecb321a87d987ade" title="Retrieves the atomicity mode in use.">H5Fget_mpi_atomicity</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a006f5bedc78630dc1b39671151823d78">H5VL_NATIVE_FILE_GET_MPI_ATOMICITY</a>  </td></tr>
<tr>
<td><a class="el" href="group___p_h5_f.html#ga087dbbf37cb5c451ae8a6f66b227f0fc" title="Sets the MPI atomicity mode.">H5Fset_mpi_atomicity</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#aedfd9c1c6b47a9982c804e66a2c2e9dd">H5VL_NATIVE_FILE_SET_MPI_ATOMICITY</a>  </td></tr>
<tr>
<td>Adjust file after open, with wrapping context </td><td><a class="el" href="_h5_v_lnative_8h.html#a087662fec2c046e4ede6a7176209babc">H5VL_NATIVE_FILE_POST_OPEN</a>  </td></tr>
<tr>
<th rowspan="2">H5VL_SUBCLS_GROUP </th><td><a class="el" href="group___h5_g.html#ga957fee64f796f184f542537127ad6c11" title="Iterates over the entries of a group invoking a callback for each entry encountered.">H5Giterate</a> (deprecated routine) </td><td><a class="el" href="_h5_v_lnative_8h.html#a6e84a71e8968331693da4bd1ffe02783">H5VL_NATIVE_GROUP_ITERATE_OLD</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_g.html#gad75244979da933ba0b3ad25258850a6b" title="Returns information about an object.">H5Gget_objinfo</a> (deprecated routine) </td><td><a class="el" href="_h5_v_lnative_8h.html#a060b202dbbb4ce73a85d94de9d33bcb5">H5VL_NATIVE_GROUP_GET_OBJINFO</a>  </td></tr>
<tr>
<th rowspan="6">H5VL_SUBCLS_OBJECT </th><td><a class="el" href="group___h5_g.html#gac5a1c3e1ed4264d92cc02ca20afc57f4" title="Retrieves comment for specified object.">H5Gget_comment</a>, <a class="el" href="group___h5_o.html#gaa1511ce5e2fe01ce7ea58f2f851d694b" title="Retrieves comment for specified object.">H5Oget_comment</a>, <a class="el" href="group___h5_o.html#gae6d92d597c5a292d342a1bda91e41171" title="Retrieves comment for specified object.">H5Oget_comment_by_name</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a606309d1a8734beeffb0fe241b30e1e7">H5VL_NATIVE_OBJECT_GET_COMMENT</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_g.html#ga7a615715ea68fc1bf11484a8278fe682" title="Sets comment for specified object.">H5Gset_comment</a>, <a class="el" href="group___h5_o.html#ga8b5cf8e916204e29616516046121f631" title="Sets comment for specified object.">H5Oset_comment</a>, <a class="el" href="group___h5_o.html#gafeb5242de7f1080b5c19f4fe19784505" title="Sets comment for specified object.">H5Oset_comment_by_name</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a8ac55735c5782cc6ba6c78df4e3036e2">H5VL_NATIVE_OBJECT_SET_COMMENT</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga0908be309da1fb4f771c1e264fac22ae" title="Prevents metadata entries for an HDF5 object from being flushed from the metadata cache to storage.">H5Odisable_mdc_flushes</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a099b9e6c4e1f46a11ede40e95e58e39e">H5VL_NATIVE_OBJECT_DISABLE_MDC_FLUSHES</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga21014920bdabf6973e233796d7174156" title="Enables flushing of dirty metadata entries from a file&#39;s metadata cache.">H5Oenable_mdc_flushes</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a844314a5498935a7570fc69779a6eff3">H5VL_NATIVE_OBJECT_ENABLE_MDC_FLUSHES</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#gab2fa388aadd1ff154ee150cbb4884c1c" title="Retrieves comment for specified object.">H5Oare_mdc_flushes_disabled</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#a6a27db65f6b7711c13b46d6e9f98d18b">H5VL_NATIVE_OBJECT_ARE_MDC_FLUSHES_DISABLED</a>  </td></tr>
<tr>
<td><a class="el" href="group___h5_o.html#ga677d99ab106e2032b991b75b75de0e46" title="Retrieve native file format information about an object.">H5Oget_native_info</a>, <a class="el" href="group___h5_o.html#gafa6570d8b0ef6e2aff75093e1f99f67e" title="Retrieve native file format information about an object according to the order of an index.">H5Oget_native_info_by_idx</a>, <a class="el" href="group___h5_o.html#ga296ded21aeac3921fee07272353b8476" title="Retrieve native file format information about an object given its name.">H5Oget_native_info_by_name</a> </td><td><a class="el" href="_h5_v_lnative_8h.html#af4a0fd6a4385f0eac1c34df9b7bece80">H5VL_NATIVE_OBJECT_GET_NATIVE_INFO</a>/td&gt;  </td></tr>
</table>
</div><div>   </div><p>Previous Chapter <a class="el" href="_h5_p__u_g.html#sec_plist">Properties and Property Lists in HDF5</a> - Next Chapter <a class="el" href="_h5_e_s__u_g.html#sec_async">The HDF5 Event Set Interface</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.10.0 </li>
  </ul>
</div>
</body>
</html>