ibm-information-center/dist/eclipse/plugins/i5OS.ic.apis_5.4.0.1/qhfrddr.htm

329 lines
11 KiB
HTML
Raw Normal View History

2024-04-02 14:02:31 +00:00
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
<title>Read Directory Entry (QHFRDDR) API</title>
<!-- Begin Header Records ========================================== -->
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<!-- Change History: -->
<!-- YYMMDD USERID Change description -->
<!--File Edited November 2001 -->
<!-- End Header Records -->
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body>
<a name="Top_Of_Page"></a>
<!--Java sync-link-->
<script language="Javascript" src="../rzahg/synch.js" type="text/javascript">
</script>
<h2>Read Directory Entries (QHFRDDR) API</h2>
<div class="box" style="width: 70%;">
<br>
&nbsp;&nbsp;Required Parameter Group:<br>
<!-- iddvc RMBR -->
<br>
<table width="100%">
<tr>
<td align="center" valign="top" width="10%">1</td>
<td align="left" valign="top" width="50%">Open directory handle</td>
<td align="left" valign="top" width="20%">Input</td>
<td align="left" valign="top" width="20%">Char(16)</td>
</tr>
<tr>
<td align="center" valign="top">2</td>
<td align="left" valign="top">Data buffer</td>
<td align="left" valign="top">Output</td>
<td align="left" valign="top">Char(*)</td>
</tr>
<tr>
<td align="center" valign="top">3</td>
<td align="left" valign="top">Data buffer length</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="left" valign="top">Number of directory entries to read</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">5</td>
<td align="left" valign="top">Number of directory entries read</td>
<td align="left" valign="top">Output</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">6</td>
<td align="left" valign="top">Length of data returned</td>
<td align="left" valign="top">Output</td>
<td align="left" valign="top">Binary(4)</td>
</tr>
<tr>
<td align="center" valign="top">7</td>
<td align="left" valign="top">Error code</td>
<td align="left" valign="top">I/O</td>
<td align="left" valign="top">Char(*)</td>
</tr>
</table>
<br>
&nbsp;&nbsp;Default Public Authority: *USE<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Threadsafe: No<br>
<!-- iddvc RMBR -->
<br>
</div>
<p>The Read Directory Entries (QHFRDDR) API reads one or more directory entries from a directory opened with the Open Directory (QHFOPNDR) API. The QHFOPNDR API's path name parameter determines which directory entries are read. The QHFOPNDR API's attribute selection table determines what information is returned for each directory entry. For details about the QHFOPNDR API, see <a href="qhfopndr.htm">Open Directory (QHFOPNDR) API</a>.</p>
<p>You must open a directory before reading from it. The open directory handle returned by the QHFOPNDR API is needed as input to the QHFRDDR API.</p>
<p>The QHFRDDR API reads directory entries sequentially. Each time the QHFRDDR API is called, the directory pointer is advanced by the number of directory entries returned in the data buffer. Subsequent calls of the QHFRDDR API return additional directory entries, until there are no more to return.</p>
<br>
<!-- Please NOTE: DO NOT DELETE THIS SECTION if this API has no authorities and locks. -->
<!-- Instead, use the commented out coding below to indicate NONE. -->
<h3>Authorities and Locks</h3>
<!-- Use this if there are no authorities and locks. -->
<p>None.</p>
<br>
<h3>Required Parameter Group</h3>
<dl>
<dt><strong>Open directory handle</strong></dt>
<dd>INPUT; CHAR(16)
<p>The directory handle obtained when the directory was opened with the QHFOPNDR API.</p>
</dd>
<dt><strong>Data buffer</strong></dt>
<dd>OUTPUT; CHAR(*)
<p>The buffer to hold the directory entry information returned. For the format, see <a href="#HDRDATBUFU">Data Buffer</a>.</p>
</dd>
<dt><strong>Data buffer length</strong></dt>
<dd>INPUT; BINARY(4)
<p> The length of the data buffer described in <a href="#HDRDATBUFU">Data Buffer</a>. The buffer must be large enough to hold the requested attributes for at least one directory entry. If it is too small, the read operation fails and no data is returned. However, the length of data returned parameter contains the total number of bytes the file system tried to return for the next directory entry. The application should increase the data buffer size to at least that number and try the request again.</p>
</dd>
<dt><strong>Number of directory entries to read</strong></dt>
<dd>INPUT; BINARY(4)
<p> The number of directory entries to place in the data buffer.</p>
</dd>
<dt><strong>Number of directory entries read</strong></dt>
<dd>OUTPUT; BINARY(4)
<p>The number of directory entries actually placed in the data buffer. The value of this field is 0 when there are no more directory entries to read.</p>
</dd>
<dt><strong>Length of data returned</strong></dt>
<dd>OUTPUT; BINARY(4)
<p>If the read operation is successful, this field contains the total number of bytes returned in the data buffer. If the read operation is not successful because the data buffer is not large enough to hold at least one entry, this field contains the number of bytes required to hold the requested attributes for the next directory entry.</p>
</dd>
<dt><strong>Error code</strong></dt>
<dd>I/O; CHAR(*)
<p>The structure in which to return error information. For the format of the structure, see <a href="../apiref/error.htm#hdrerrcod">Error Code Parameter</a>.</p>
</dd>
</dl>
<br>
<h3><a name="HDRDATBUFU">Data Buffer</a></h3>
<p>The data buffer holds the information returned about each directory entry. What information is returned depends mostly on what attributes are selected in the attribute selection table when the directory is opened with the QHFOPNDR API. However, the QNAME attribute is returned with every directory entry even though it is never specified in the attribute selection table. Thus, the data buffer always contains at least one piece of information about each directory entry found, its name. If the directory entry exists but cannot be read because of damage or a lock by another process, two pieces of information are returned: the name, given in the QNAME attribute, and the error that occurred, given in the QERROR attribute. For details about these attributes, see <a href="hfs1c.htm">HFS Directory Entry Attributes</a>.</p>
<p>The data buffer has three logical parts:</p>
<ol>
<li>The first field specifies the number of directory entries returned.<br><br></li>
<li>The next fields give the offsets to the directory entries returned. There is one offset field for each directory entry.<br><br></li>
<li>Next are the attribute information tables for the directory entries returned. There is one attribute information table for each directory entry.</li>
</ol>
<p>The following table shows the format of the data buffer. The offset fields are repeated until the offsets for all directory entries are listed; the attribute information table for each directory entry is repeated in the same way.</p>
<p>The format of the data buffer is:</p>
<table border width="80%">
<tr>
<th align="left" valign="top"><strong>Type</strong></th>
<th align="left" valign="top"><strong>Field</strong></th>
</tr>
<tr>
<td align="left" valign="top" width="40%">BINARY(4)</td>
<td align="left" valign="top" width="60%">Number of directory entries returned.</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Offset to the first directory entry.</td>
</tr>
<tr>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Offset to the next directory entry, if more than one exists. This field is repeated for each directory entry returned.</td>
</tr>
<tr>
<td align="left" valign="top">Directory entry</td>
<td align="left" valign="top">Attribute information table for the first directory entry.</td>
</tr>
<tr>
<td align="left" valign="top">Directory entry</td>
<td align="left" valign="top">Attribute information table for the next directory entry, if more than one exists. This field is repeated for each directory entry returned.</td>
</tr>
<tr>
<td align="left" valign="top" colspan="2"><strong>Note:</strong> Each directory entry in the table is represented by the standard attribute information table described in <a href="hfs1c.htm#HFSATTTAB">HFS Attribute Information Table</a>. Offsets within the directory entries are from the beginning of the directory entry, not from the beginning of the data buffer.</td>
</tr>
</table>
<br>
<br>
<h3>Error Messages</h3>
<table width="100%" cellpadding="3">
<!-- cols="15 85" -->
<tr>
<th align="left" valign="top">Message ID</th>
<th align="left" valign="top">Error Message Text</th>
</tr>
<tr>
<td align="left" valign="top">CPF1F05 E</td>
<td valign="top">Directory handle not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F08 E</td>
<td valign="top">Damaged directory.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F4A E</td>
<td valign="top">Value for number of directory entries not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F41 E</td>
<td valign="top">Severe error occurred while addressing parameter list.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F47 E</td>
<td valign="top">Buffer overflow occurred.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F52 E</td>
<td valign="top">Error code not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F53 E</td>
<td valign="top">Value for length of data buffer not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F62 E</td>
<td valign="top">Requested function failed.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F66 E</td>
<td valign="top">Storage needed exceeds maximum limit for user profile &amp;1.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F71 E</td>
<td valign="top">Exception specific to file system occurred.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F72 E</td>
<td valign="top">Internal file system error occurred.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F73 E</td>
<td valign="top">Not authorized to use command.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F74 E</td>
<td valign="top">Not authorized to object.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F82 E</td>
<td valign="top">Function not supported.</td>
</tr>
<tr>
<td align="left" valign="top">CPF1F87 E</td>
<td valign="top">Missing or damaged exit program &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C90 E</td>
<td valign="top">Literal value cannot be changed.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9872 E</td>
<td valign="top">Program or service program &amp;1 in library &amp;2 ended. Reason code &amp;3.</td>
</tr>
</table>
<br>
<hr>
API introduced: V2R1
<hr>
<center>
<table cellpadding="2" cellspacing="2">
<tr align="center">
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a
href="hfs1.htm">Hierarchical File System APIs</a> |
<a href="aplist.htm">APIs by category</a></td>
</tr>
</table>
</center>
</body>
</html>