Document revision date: 30 March 2001

## OpenVMS System Services Reference Manual

Previous | Contents | Index

Complete descriptions of each item code are provided in the sections that follow this table.

Table SYS-18 Item Code Summary
Item Code | Input/Output | Data Type
--- | --- | ---
REG$_CACHEACTION | Input, output | Longword
REG$_CLASSNAME | Input, output | (Pointer to Unicode string. Unicode character is 4 bytes long.)
REG$_CLASSNAMEMAX | Output | Longword
REG$_DATAFLAGS | Input, output | Quadword
REG$_DATATYPE | Input, output | Longword
REG$_DISPOSITION | Output | Longword
REG$_FLAGOPCODE | Input | Longword
REG$_FLAGSUBKEY | Input | Longword
REG$_KEYID | Input, output | Longword
REG$_KEYPATH | Input | (Pointer to Unicode string. Unicode character is 4 bytes long.)
REG$_KEYRESULT | Output | Longword
REG$_LASTWRITE | Output | Quadword
REG$_LINKCOUNT | Output | Longword
REG$_LINKPATH | Input, output | (Pointer to Unicode string. Unicode character is 4 bytes long.)
REG$_LINKTYPE | Input, output | Longword
REG$_NEWNAME | Input | Unicode string
REG$_NOTIFYFILTER | Input | Longword
REG$_PATHBUFFER | Output | Buffer
REG$_REQLENGTH | Output | Longword
REG$_RETURNSTATUS | Output | Longword
REG$_SECACCESS | Input | Longword
REG$_SECURITYPOLICY | Input, output | Longword
REG$_SEPARATOR | n/a | None
REG$_SUBKEYINDEX | Input | Longword
REG$_SUBKEYNAME | Input, output | (Pointer to Unicode string. Unicode character is 4 bytes long.)
REG$_SUBKEYNAMEMAX | Output | Longword
REG$_SUBKEYSNUMBER | Output | Longword
REG$_VALUEDATA | Input, output | Buffer
REG$_VALUEDATAMAX | Output | Longword
REG$_VALUEINDEX | Input | Longword
REG$_VALUENAME | Input, output | Unicode string
REG$_VALUENAMEMAX | Output | Longword
REG$_VALUENUMBER | Output | Longword
REG$_VOLATILE | Input, output | Longword

> #### REG$_CACHEACTION

> The REG$_CACHEACTION item code is an input item code. It is a longword flag that specifies whether the information on a specified object should be written to disk immediately. It takes one of the following values:

> Cache Value | Description
> --- | ---
> REG$K_WRITEBEHIND | Write information about the specified object written to disk at a later time (default).
> REG$K_WRITETHRU | Write information about the specified object to disk immediately.

> Note If you do not specify this item code, the value or key inherits its value from the parent object. By default, the entry points (REG$_HKEY_CLASSES_ROOT, REG$_HKEY_LOCAL_MACHINE, and REG$_HKEY_USERS) are set with a value equal to that of REG$K_WRITEBEHIND.

> #### REG$_CLASSNAME

> The REG$_CLASSNAME item code is, depending on the function code, either an input or output item code.

> The class name is an information field for a key. The type of an object is an example of a class name. It can be composed of any string of Unicode characters. A Unicode character is 4 bytes long.

> #### REG$_CLASSNAMEMAX

> The REG$_CLASSNAMEMAX item code is an output item code. It receives the length, in bytes, of the longest string specifying a subkey class name.

> #### REG$_DATAFLAGS

> Depending on the function code, the REG$_DATAFLAGS item code is either an input or output item code. It is a 64-bit application-dependent value data flag.

> #### REG$_DATATYPE

> Depending on the function code, the REG$_DATATYPE item code is either an input or output item code.

> It is a longword that either specifies the type of information to be stored as a value data or receives the type of information of a specified value data component.

> It takes one of the following values:

> Type code | Description
> --- | ---
> REG$K_BINARY | Binary data
> REG$K_DWORD | A 32-bit number
> REG$K_EXPAND_SZ | A string of Unicode characters
> REG$K_MULTI_SZ | A concatenated array of REG$K_SZ strings
> REG$K_NONE | No defined value type (default)
> REG$K_QWORD | A 64-bit number
> REG$K_SZ | A null-terminated Unicode string

> Note The difference between REG$K_EXPAND_SZ and REG$K_SZ: A string is a set of characters usually in human-readable form. Many value entries in the OpenVMS Registry are written using a string (REG_SZ) or an expandable string (REG_EXPAND_SZ) format. An expandable string is usually human-readable text, but it can also include a variable that will be replaced when the string is called by an application. For example, on a Windows NT system, in the value entry `%SystemRoot%\System32\Bootok.exe` , `%SystemRoot%` is the expandable portion of the variable. This part is replaced with the actual location of the directory that contains the Windows NT system files.

> #### REG$_DISPOSITION

> The REG$_DISPOSITION item code is an output item code. It is a longword and takes one of the following values:

> Disposition value | Description
> --- | ---
> REG$K_CREATENEWKEY | The key did not exist and was created.
> REG$K_OPENEXISTINGKEY | The key existed and was opened.

> #### REG$_FLAGOPCODE

> The REG$_FLAGOPCODE item code is an input item code. It is a longword flag that indicates how the REG$_DATAFLAGS input item code should be matched against the data flags field in the OpenVMS Registry database. It takes one of the following values:

> Operator code options | Description
> --- | ---
> REG$K_ANY | The data field in the OpenVMS Registry database must contain at least one of the flags in the REG$_DATAFLAGS input item code.
> REG$K_EXACTMATCH | The REG$_DATAFLAGS input item code must match exactly the data flags field in the OpenVMS Registry database.
> REG$K_EXCLUDE | The data flags field in the OpenVMS Registry database must not contain the flags in the REG$_DATAFLAGS input item code.
> REG$K_INCLUDE | The data flags field in the OpenVMS Registry database must contain, at a minimum, the flags in the REG$_DATAFLAGS input item code.
> REG$K_NOTANY | The data field in the OpenVMS Registry database must not contain any of the flags in the REG$_DATAFLAGS input item code.

> #### REG$_FLAGSUBKEY

> The REG$_FLAGSUBKEY item code is an input item code. It is a longword Boolean field that indicates the following:
> - If set to 1, report changes in a specified key and any of its subkeys.
> - If set to 0, report changes to a specified key only.

> #### REG$_KEYID

> The REG$_KEYID item code is an input item code. It is a longword that contains the key identifier.

> #### REG$_KEYRESULT

> The REG$_KEYRESULT item code is an output item code. It is a longword that receives a key identifier. The key identifier can be passed to other Registry calls using the REG$_KEYID item code.

> #### REG$_KEYPATH

> The REG$_KEYPATH item code is an input item code. It is a string of Unicode characters that specifies a key path. A Unicode character is 4 bytes long.

> #### REG$_LASTWRITE

> The REG$_LASTWRITE item code is an output item code. It is a quadword representation of absolute time that receives the time a specified key was last written to (including changes to its values).

> #### REG$_LINKCOUNT

> The REG$_LINKCOUNT item code is an output item code. It is longword count of the number of symbolic links that refer to the item.

> #### REG$_LINKPATH

> The REG$_LINKPATH item code is, depending on the function code, either an input or an output item code. It is a string of Unicode characters that specifies the key path to which a specified key is linked. A Unicode character is 4 bytes long.

> #### REG$_LINKTYPE

> The REG$_LINKTYPE item code is, depending on the function code, either an input or an output item code. It is longword type that indicates the link type.

> Link Type | Description
> --- | ---
> REG$K_NONE | No link (default)
> REG$K_SYMBOLICLINK | Symbolic (logical) link

> #### REG$_NEWNAME

> The REG$_NEWNAME item code is a string of Unicode characters that specifies the new name of the key.

> #### REG$_NOTIFYFILTER

> The REG$_NOTIFYFILTER item code is an input item code. It is a longword mask that specifies which changes to the specified key and its subkeys and values to report. It takes any combination of the following values:

> Value | Description
> --- | ---
> REG$M_CHANGEATTRIBUTES | An attribute change of the specified key or its subkeys.
> REG$M_CHANGELASTSET | Changes to the last write time of the specified key or its subkeys.
> REG$M_CHANGENAME | A key name change, including creation and deletion, of the specified key or its subkeys.

> Note The system report changes to subkeys of the specified key only if the REG$_FLAGSUBKEY item code is set to 1.

> #### REG$_PATHBUFFER

> The REG$_PATHBUFFER item code is an output item code. It is a buffer that receives a set of either key paths or value paths, separated by a null Unicode character (4 bytes long). (The third longword of the item descriptor contains the number of bytes written to the buffer.)

> #### REG$_REQLENGTH

> The REG$_REQLENGTH item code is an output item code. It is a longword that receives the required buffer size (in bytes) to complete the operation successfully.

> #### REG$_RETURNSTATUS

> The REG$_RETURNSTATUS item code is an output item code. It is a longword that receives the final completion status for a specified operation. For more information, see the Condition Values Returned section of this chapter.

> #### REG$_SECACCESS

> The REG$_SECACCESS item code is an input item code. It is a longword mask that specifies the desired security access for the new key. It takes any combination of the following values:

> Security access mask | Description
> --- | ---
> REG$M_ALLACCESS | A combination of the following access values: REG$K_CREATELINK REG$K_CREATESUBKEY REG$K_ENUMSUBKEYS REG$K_NOTIFY REG$K_QUERYVALUE REG$K_SETVALUE
> REG$M_CREATELINK | Allows creation of a symbolic link.
> REG$M_CREATESUBKEY | Allows creation of subkeys.
> REG$M_ENUMSUBKEYS | Allows enumeration of subkeys.
> REG$M_EXECUTE | Allows read access.
> REG$M_NOTIFY | Allows change notification.
> REG$M_QUERYVALUE | Allows queries of subkey data.
> REG$M_READ | A combination of the following access values: REG$K_ENUMSUBKEYS REG$K_QUERYVALUE REG$K_NOTIFY
> REG$M_SETVALUE | Allows setting of values and data.
> REG$M_WRITE | A combination of the following access values: REG$K_CREATESUBKEY REG$K_SETVALUE

> #### REG$_SECURITYPOLICY

> The REG$_SECURITYPOLICY item code is an input item code. It is a longword that specifies the security policy to enforce for the key.

> It takes the following value:

> Policy Setting | Description
> --- | ---
> REG$K_POLICY_NT_40 | Access is required to the first key and the requested key (default).

> #### REG$_SEPARATOR

> The REG$_SEPARATOR item code is an empty item code that provides a separator between sets of item codes.

> Using this item code, you can group multiple requests into a single call to the $REGISTRY service. If you use this multiple-request feature, use the REG$_SEPARATOR item code to indicate the end of the set of item codes for the current request and that there is another request to process.

> #### REG$_SUBKEYINDEX

> The REG$_SUBKEYINDEX item code is an input item code. It is a longword that specifies the index of the subkey to retrieve.

> #### REG$_SUBKEYNAME

> The REG$_SUBKEYNAME item code is an input item code. It is a string of Unicode characters that specifies the name of a subkey. A Unicode character is 4 bytes long.

> #### REG$_SUBKEYNAMEMAX

> The REG$_SUBKEYNAMEMAX item code is an output item code. It is a longword that receives the length (in characters) of a specified key's longest subkey name.

> #### REG$_SUBKEYSNUMBER

> The REG$_SUBKEYSNUMBER item code is an output item code. It is a longword that receives the number of subkeys contained in a specified key.

> #### REG$_VALUEDATA

> The REG$_VALUEDATA item code is, depending on the function code, either an input or output item code. It is a buffer that contains either the value data component to write to the OpenVMS Registry (input), or it receives a data value component from the OpenVMS Registry (output).

> #### REG$_VALUEDATAMAX

> The REG$_VALUEDATAMAX item code is an output item code. It is a longword that receives the length (in bytes) of the specified key's longest data component value.

> #### REG$_VALUEINDEX

> The REG$_VALUEINDEX item code is an input item code. It is a longword that specifies the index of the value to retrieve within a specified key. Note that the value index starts at zero and can be any value up to one less than the count returned by REG$_VALUENUMBER.

> #### REG$_VALUENAME

> The REG$_VALUENAME item code is, depending on the function code, either an input or an output item code. It is a string of Unicode characters that specifies the name of a value.

> #### REG$_VALUENAMEMAX

> The REG$_VALUENAMEMAX item code is an output item code. It is a longword that receives the length (in characters) of a specified key's longest value name.

> #### REG$_VALUENUMBER

> The REG$_VALUENUMBER item code is an output item code. It is a longword that receives the number of values contained in a specified key.

> #### REG$_VOLATILE

> The REG$_VOLATILE item code identifies the volatility of an item. As an output, it returns the volatility of the object. On OpenVMS, volatile keys and values are lost when all nodes running an OpenVMS Registry server are rebooted. (In a standalone system, volatile keys and values are lost when the system reboots.)

> Volatile Type | Description
> --- | ---
> REG$K_CLUSTER | The item is removed when the cluster reboots.
> REG$K_NONE | The item is not volatile (default).

Function Modifiers You can optionally specify the high-order bits of a function code value with function modifiers. These individual bits can alter the operation of the function.

For example, you can specify the function modifier REG$M_CASE_SENSITIVE with the function REG$FC_CREATE_KEY. When you use the function and function modifier together, the data passed to the OpenVMS Registry is treated as case sensitive. The two values are written in Compaq C as `REG$M_CASE_SENSITIVE | REG$FC_CREATE_KEY` .

The OpenVMS Registry function modifiers are defined in the header file REGDEF.H.

> #### REG$M_CASE_SENSITIVE

> Use case sensitive matching for keys and values.

> #### REG$M_DISABLE_WILDCARDS

> Treat wildcard characters as normal characters for this function.

> #### REG$M_IGNORE_LINKS

> Force the operation to not follow any symbolic links associated with a key or a value.

> By default, if a key or value is symbolically linked to another key or value, the system follows all links so that the operation specified by the function code is performed on the linked key or value.

> When you specify the REG$M_IGNORE_LINKS function modifier, the operation specified by the function code affects only the specified key or value, not the linked key or value.

> By default, if a key or value has a symbolic link, it can not be deleted. If you specify the REG$M_IGNORE_LINKS function modifier, the system deletes the key or value.

> #### REG$M_NOW

> Write to disk immediately, regardless of the REG$_CACHEACTION item code value.

### Description

> The $REGISTRY service provides the means to create, delete and modify registry keys, key values, and key attributes.

> The $REGISTRY service uses process P1 space to store handles to keys.

> The $REGISTRY service must be called at IPL 0, and requires system dynamic memory to deliver AST requests.

> Related Services

> > $REGISTRYW

### Condition Values Returned

> SS$_NORMAL | Normal successful completion.
> SS$_ACCVIO | One of the arguments cannot be read/written.
> SS$_BADPARAM | Function code or one of the item list code is invalid.
> SS$_EXASTLM | Exceeded AST limit.
> SS$_INSFARG | Insufficient number of argument supplied.
> SS$_INSFP1POOL | Not enough process P1 space available.
> SS$_NOIMPERSONATE | The caller does not have the privilege to obtain information about the specified personae.
> SS$_TOO_MANY_ARGS | Too many arguments.
> REG$_ACCESSDENIED | Requested access to key is denied.
> REG$_IPLTOOHIGH | Callers above IPL 0 cannot call this service.

### Condition Values Returned in the I/O Status Block

> SS$_NORMAL | Normal successful completion.
> SS$_ACCVIO | One of the arguments cannot be read/written.
> SS$_BADPARAM | Function code or one of the item list code is invalid.
> SS$_EXASTLM | Exceeded AST limit.
> SS$_INSFARG | Insufficient number of argument supplied.
> SS$_INSFP1POOL | Not enough process P1 space available.
> SS$_NOIMPERSONATE | The caller does not have the privilege to obtain information about the specified personae.
> SS$_TOO_MANY_ARGS | Too many arguments.
> REG$_ACCESSDENIED | Requested access to key is denied.
> REG$_BUFFEROVF | Buffer overflow.
> REG$_DBALREADYLOADED | Database is already loaded.
> REG$_DBNOTYETLOADED | Database is not yet loaded.
> REG$_EXQUOTA | Registry file quota or page file quota exceeded.
> REG$_HASLINK | Key has a link to another key.
> REG$_HAVESUBKEYS | Cannot delete a key with subkeys.
> REG$_INTERNERR | Registry internal error.
> REG$_INVCACHEACTION | Invalid cache action parameter.
> REG$_INVCREDENTIALS | NT credentials are not valid.
> REG$_INVDATA | Invalid data value.
> REG$_INVDATATYPE | Invalid data type parameter.
> REG$_INVFUNCCODE | Invalid function code.
> REG$_INVKEYFLAGS | Invalid key flags.
> REG$_INVKEYID | Key does not exist or invalid key ID was specified.
> REG$_INVKEYNAME | Invalid key name.
> REG$_INVLINK | Invalid link or link type.
> REG$_INVLINKPATH | Invalid link path.
> REG$_INVPARAM | Invalid parameter.
> REG$_INVPATH | Invalid key path.
> REG$_INVSECDESCRIPTOR | Invalid security descriptor.
> REG$_INVSECPOLICY | Invalid security policy parameter.
> REG$_INVVALNAME | Invalid value name.
> REG$_INVVOLROOTKEY | Cannot create a new file with a volatile root key.
> REG$_IPLTOOHIGH | Callers above IPL 0 cannot call this service.
> REG$_KEYCHANGED | Key or subkey has changed.
> REG$_KEYLOCKED | Key locked by another thread.
> REG$_KEYNAMEEXIST | Key name already exists.
> REG$_NOKEY | Specified key does not exist.
> REG$_NOMOREITEMS | No more items for specified key.
> REG$_NOPATHFOUND | Path not found.
> REG$_NORESPONSE | OpenVMS Registry server failed to respond within the alloted time period.
> REG$_NOTROOTKEY | Invalid root key index.
> REG$_NOTSUPPORTED | Function code, item code, or item value is not supported.
> REG$_NOVALUE | Specified value does not exist.
> REG$_REQRECEIVED | Received request for key change notification.
> REG$_RESERVED | Cannot delete or modify a reserved key or value.
> REG$_SECVIO | Violates the security access method specified when this key was last opened.
> REG$_STRINGTOOLONG | Input string too long.
> REG$_STRINGTRUNC | Output buffer is not large enough to contain the converted string.
> REG$_TOOMANYOPENKEY | Number of opened keys exceeds the limit.
> REG$_VALUEEXIST | Value already exists.
> REG$_VOLMISMATCH | Cannot create nonvolatile subkey for a volatile key.

Previous | Next | Contents | Index

| privacy and legal statement |
4527PRO_081.HTML