Ancillary control process (ACP) functions can be expressed
using seven function codes and four function modifiers. The function
codes are:
IO$_CREATE—Creates
a directory entry or file
IO$_ACCESS—Searches
a directory for a specified file and accesses the file, if found
IO$_DEACCESS—Deaccesses
a file and, if specified, writes the final attributes in the file
header
IO$_MODIFY—Modifies
the file attributes and file allocation
IO$_DELETE—Deletes
a directory entry and file header
IO$_MOUNT—Informs
the ACP when a volume is mounted; requires MOUNT privilege
IO$_ACPCONTROL—Performs
miscellaneous control functions
The function modifiers are:
IO$M_ACCESS—Opens
a file on the user's channel
IO$M_CREATE—Creates
a file
IO$M_DELETE—Deletes
a file or marks it for deletion
IO$M_DMOUNT—Dismounts
a volume
In addition to the function codes and modifiers,
ACPs take five device- or function-dependent arguments, as shown in Figure 1-1. The first argument, P1, is the address of the file information
block (FIB) descriptor. “File Information Block” describes the FIB in detail.
The second argument, P2, is an optional argument
used in directory operations. It specifies the address of the descriptor
for the file name string to be entered in the directory.
Argument P3 is the address of a word to receive
the resultant file name string length. The resultant string is not
padded. The actual length is returned in P3. Argument P4 is the address
of a descriptor for a buffer to receive the resultant file name string.
Both of these arguments are optional.
The fifth argument, P5, is an optional argument
containing the address of the attribute control block. “Read/Write Attributes” describes the attribute
control block in detail.
All areas of memory specified by the descriptors
must be capable of being read or written to.
Figure 1-2 shows the format for the descriptors. The count field is the length
in bytes of the item described.
|
| |
|
| NOTE: Starting with OpenVMS Version 8.4, volumes and files up to 2
TB in size are supported. This has an implication for the virtual
and logical block numbers (VBN and LBN) and block counts referenced
in structures such as the File Information Block (FIB) and in the
I/O arguments in the call interfaces. In the previous versions of OpenVMS, these fields are interpreted
as SIGNED 32-bit integers. Bit 31, the 'signbit', is necessarily zero.
Starting with OpenVMS Version 8.4, these fields are interpreted as
UNSIGNED 32-bit integers. Bit 31 can now contain 1-bit, to accommodate
block numbers and counts up to 4 million (4,294,967,296); 4 million
blocks = 2 Terabytes (TB). Applications and programs that continue to interpret these
fields as SIGNED, apparently receive negative values for volume or
file sizes between 1 TB and 2 TB. Ensure that the applications and
programs are upgraded to avoid these errors. The following are some of the fields that are now interpreted
as UNSIGNED 32–bit integers: |
|
| |
|