! *** PREDECLARED TYPES %IF %DECLARED ( %BASIC$QUADWORD_DECLARED ) = 0 %THEN RECORD BASIC$QUADWORD LONG FILL ( 2 ) END RECORD %LET %BASIC$QUADWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$OCTAWORD_DECLARED ) = 0 %THEN RECORD BASIC$OCTAWORD LONG FILL ( 4 ) END RECORD %LET %BASIC$OCTAWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$HFLOAT_AXP_DECLARED ) = 0 %THEN RECORD BASIC$HFLOAT_AXP LONG FILL ( 4 ) END RECORD %LET %BASIC$HFLOAT_AXP_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$F_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$F_FLOATING_COMPLEX SINGLE REAL_PART SINGLE IMAGINARY_PART END RECORD %LET %BASIC$F_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$D_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$D_FLOATING_COMPLEX DOUBLE REAL_PART DOUBLE IMAGINARY_PART END RECORD %LET %BASIC$D_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$G_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$G_FLOATING_COMPLEX GFLOAT REAL_PART GFLOAT IMAGINARY_PART END RECORD %LET %BASIC$G_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$H_FLOAT_AXP_CMPLX_DCL ) = 0 %THEN RECORD BASIC$H_FLOATING_COMPLEX_AXP BASIC$HFLOAT_AXP REAL_PART BASIC$HFLOAT_AXP IMAGINARY_PART END RECORD %LET %BASIC$H_FLOAT_AXP_CMPLX_DCL = 1 %END %IF ! ! +===================================================================+ ! | ! | REG - Registry system service ($REGISTRY) definition ! | ! +===================================================================+ ! ! +-------------------------------------------------------------------+ ! | Function codes ! +-------------------------------------------------------------------+ ! DECLARE LONG CONSTANT REG$FC_CLOSE_KEY = 1 ! Releases the resources for a given key DECLARE LONG CONSTANT REG$FC_CREATE_KEY = 2 ! Either creates a specified key or opens it if it already exists DECLARE LONG CONSTANT REG$FC_DELETE_KEY = 3 ! Removes a specified key from the registry DECLARE LONG CONSTANT REG$FC_DELETE_VALUE = 4 ! Deletes the specified value from a given key DECLARE LONG CONSTANT REG$FC_ENUM_KEY = 5 ! Retrieves information about a subkey DECLARE LONG CONSTANT REG$FC_ENUM_VALUE = 6 ! Retrieves information about a value DECLARE LONG CONSTANT REG$FC_FLUSH_KEY = 7 ! Write all the information of a specified key to disk DECLARE LONG CONSTANT REG$FC_LOAD_KEY = 8 ! Create a subkey and store information from a given file DECLARE LONG CONSTANT REG$FC_MODIFY_KEY = 9 ! Modifies information about a specified key DECLARE LONG CONSTANT REG$FC_MODIFY_TREE_KEY = 10 ! Modifies information about a specified key and all its subkeys DECLARE LONG CONSTANT REG$FC_NOTIFY_CHANGE_KEY_VALUE = 11 ! Notifies the calling process when a specified key has changed DECLARE LONG CONSTANT REG$FC_OPEN_KEY = 12 ! Opens a specified key DECLARE LONG CONSTANT REG$FC_QUERY_KEY = 13 ! Retrieves information about a specified key DECLARE LONG CONSTANT REG$FC_QUERY_VALUE = 14 ! Retrieves information about a specified value DECLARE LONG CONSTANT REG$FC_REPLACE_KEY = 15 ! Replaces a key and all its subkeys with information in a specified file DECLARE LONG CONSTANT REG$FC_RESTORE_KEY = 16 ! Restores a key from a specified file DECLARE LONG CONSTANT REG$FC_SAVE_KEY = 17 ! Saves a key and its subkeys to a specified file DECLARE LONG CONSTANT REG$FC_SEARCH_TREE_DATA = 18 ! Scan a key and its subkeys for a given data component DECLARE LONG CONSTANT REG$FC_SEARCH_TREE_KEY = 19 ! Scan a key and its subkeys for a given subkey DECLARE LONG CONSTANT REG$FC_SEARCH_TREE_VALUE = 20 ! Scan a key and its subkeys for a given value DECLARE LONG CONSTANT REG$FC_SET_VALUE = 21 ! Sets value infornation DECLARE LONG CONSTANT REG$FC_UNLOAD_KEY = 22 ! Removes a key tree form the registry DECLARE LONG CONSTANT REG$FC_GET_KEY_SECURITY = 23 ! Retrieves a key security profile DECLARE LONG CONSTANT REG$FC_SET_KEY_SECURITY = 24 ! Sets a key security profile DECLARE LONG CONSTANT REG$FC_GET_PERFORMANCE = 25 ! Retrieves performance information DECLARE LONG CONSTANT REG$FC_GET_FILE_INFO = 26 ! Retrieves file statistics DECLARE LONG CONSTANT REG$FC_GET_FILE_UPDATE = 27 ! Retrieves segment allocation information DECLARE LONG CONSTANT REG$FC_CREATE_DATABASE = 28 ! Creates the registry database DECLARE LONG CONSTANT REG$FC_MAKE_SNAPSHOT = 29 ! Take a snpashot of the Registry database DECLARE LONG CONSTANT REG$FC_ARCHIVE = 30 ! Archive the registry database DECLARE LONG CONSTANT REG$FC_LAST = 31 ! Always last ! ! +-------------------------------------------------------------------+ ! | Item Code Modifiers ! +-------------------------------------------------------------------+ ! DECLARE LONG CONSTANT REG$M_UNICODE_STRING = 8192 ! 0x2000 string is Unicode ! ! +-------------------------------------------------------------------+ ! | Item Codes ! +-------------------------------------------------------------------+ ! DECLARE LONG CONSTANT REG$_TERMINATOR = 0 ! network packet terminator DECLARE LONG CONSTANT REG$_SEPARATOR = 1 ! item code list seperator DECLARE LONG CONSTANT REG$_SECPROFILE = 514 ! security profile DECLARE LONG CONSTANT REG$_REQUEST = 515 ! TLV of item code TLVs (request) DECLARE LONG CONSTANT REG$_ACMODE = 1284 ! access mode DECLARE LONG CONSTANT REG$_ACTIONCODE = 1285 ! action code for performance ? space DECLARE LONG CONSTANT REG$_CACHEACTION = 1286 ! cache action (thru/behind ) DECLARE LONG CONSTANT REG$_CANCELNOTIFICATION = 519 ! Cancel notify key change notify DECLARE LONG CONSTANT REG$_CLASSNAME = 264 ! class name DECLARE LONG CONSTANT REG$_CLASSNAMEMAX = 1289 ! longest class name length DECLARE LONG CONSTANT REG$_CLASSNAMESIZE = 1290 ! destination's class name buffer size DECLARE LONG CONSTANT REG$_DATAFLAGS = 1547 ! data flags DECLARE LONG CONSTANT REG$_DATATYPE = 1292 ! data type DECLARE LONG CONSTANT REG$_DISPOSITION = 1293 ! createnewkey/openexistingkey DECLARE LONG CONSTANT REG$_FILEINFODATA = 526 ! File info data DECLARE LONG CONSTANT REG$_FILELOAD = 1807 ! OpenVMS file name to load DECLARE LONG CONSTANT REG$_FILESAVE = 1808 ! OpenVMS file name to save DECLARE LONG CONSTANT REG$_FILEUPDATEDATA = 529 ! File update data DECLARE LONG CONSTANT REG$_FLAGOPCODE = 1298 ! how data flags is used DECLARE LONG CONSTANT REG$_FLAGSUBKEY = 1299 ! report (sub)key changes DECLARE LONG CONSTANT REG$_KEYID = 1300 ! input key id in longword format DECLARE LONG CONSTANT REG$_KEYID_INTERNAL = 533 ! internal key id in UID/FSO/LH format DECLARE LONG CONSTANT REG$_KEYFLAGS = 1302 ! KEY flags DECLARE LONG CONSTANT REG$_KEYPATH = 279 ! Path to key object DECLARE LONG CONSTANT REG$_KEYRESULT = 1304 ! output key id in longword format DECLARE LONG CONSTANT REG$_KEYRESULT_INTERNAL = 537 ! internal key id in UID/FSO/LH format DECLARE LONG CONSTANT REG$_LASTWRITE = 1562 ! time key was last written DECLARE LONG CONSTANT REG$_LINKCOUNT = 1307 ! Count of links refer to item DECLARE LONG CONSTANT REG$_LINKPATH = 284 ! key path a key is linked to DECLARE LONG CONSTANT REG$_LINKPATHSIZE = 1309 ! destination's link path buffer size DECLARE LONG CONSTANT REG$_LINKTYPE = 1310 ! Link type (logical/physical) DECLARE LONG CONSTANT REG$_LOCK = 1311 ! what lock on open/create key DECLARE LONG CONSTANT REG$_NEWNAME = 288 ! new name of a key create/rename DECLARE LONG CONSTANT REG$_NOTIFYFILTER = 1313 ! which key changes to reported DECLARE LONG CONSTANT REG$_PATHBUFFER = 546 ! set of paths separated by null byte DECLARE LONG CONSTANT REG$_PERFORMANCEDATA = 547 ! Performance data DECLARE LONG CONSTANT REG$_REQLENGTH = 1316 ! required buffer size DECLARE LONG CONSTANT REG$_RETURNSTATUS = 1317 ! return status for a given operation DECLARE LONG CONSTANT REG$_SECACCESS = 1318 ! security access for a new key DECLARE LONG CONSTANT REG$_SECONDSTATUS = 1319 ! secondary status for a given operation DECLARE LONG CONSTANT REG$_SECURITYPOLICY = 1320 ! Security policy to enforce for a key DECLARE LONG CONSTANT REG$_SEGMENTNUMBER = 1321 ! Segment Number for locating space info DECLARE LONG CONSTANT REG$_SNAPSHOTDESTINATION = 1834 ! Snapshot destination directory DECLARE LONG CONSTANT REG$_SNAPSHOTVERSIONS = 1323 ! Snapshot versions to maintain DECLARE LONG CONSTANT REG$_SUBKEYINDEX = 1324 ! Index of the subkey to retrieve DECLARE LONG CONSTANT REG$_SUBKEYNAME = 301 ! name of a subkey DECLARE LONG CONSTANT REG$_SUBKEYNAMEMAX = 1326 ! longest subkey name for a given key DECLARE LONG CONSTANT REG$_SUBKEYNAMESIZE = 1327 ! destination's subkey name buffer size DECLARE LONG CONSTANT REG$_SUBKEYSNUMBER = 1328 ! Number of subkeys in a given key DECLARE LONG CONSTANT REG$_SECURITYINFORMATION = 1329 ! NT Security information DECLARE LONG CONSTANT REG$_SECURITYDESCRIPTOR = 562 ! NT Security descriptor DECLARE LONG CONSTANT REG$_VALUEINDEX = 1331 ! index of the value to retrieve DECLARE LONG CONSTANT REG$_VALUEDATA = 564 ! value data component DECLARE LONG CONSTANT REG$_VALUEDATAMAX = 1333 ! longest value data for a given key DECLARE LONG CONSTANT REG$_VALUEDATASIZE = 1334 ! destination's value data buffer size DECLARE LONG CONSTANT REG$_VALUENAME = 311 ! specifies the name of a value DECLARE LONG CONSTANT REG$_VALUENAMEMAX = 1336 ! longest value name for a given key DECLARE LONG CONSTANT REG$_VALUENAMESIZE = 1337 ! destination's value name buffer size DECLARE LONG CONSTANT REG$_VALUENUMBER = 1338 ! number of values in a given key DECLARE LONG CONSTANT REG$_VOLATILE = 1339 ! Identifies volatility of an object DECLARE LONG CONSTANT REG$_WILDASTERISK = 316 ! char to replace asterisk wildcard DECLARE LONG CONSTANT REG$_WILDPERCENT = 317 ! char to replace percent wildcard DECLARE LONG CONSTANT REG$_WILDPERIODS = 318 ! char to replace periods wildcard DECLARE LONG CONSTANT REG$_INSTRUMENTFILE = 575 ! unknown DECLARE LONG CONSTANT REG$_INSTRUMENTKEY = 576 ! unknown DECLARE LONG CONSTANT REG$_INSTRUMENTDATA = 577 ! unknown DECLARE LONG CONSTANT REG$_FILENAME = 1858 ! file requested for space monitoring DECLARE LONG CONSTANT REG$_COUNTER = 1347 ! a counter index DECLARE LONG CONSTANT REG$_SECDESCRIPTORLEN = 1348 ! Length of security descriptor DECLARE LONG CONSTANT REG$_SECDESCLEN_INTERNAL = 1349 ! Internal length of security descriptor DECLARE LONG CONSTANT REG$_VALUEDATASIZE_INTERNAL = 1350 ! Internal dest value data buffer size DECLARE LONG CONSTANT REG$_SAMDESIRED = 1351 ! SamDesired - for AS ? Bristol only DECLARE LONG CONSTANT REG$_DATABASE_VERSION = 1352 ! Database version for Create Database DECLARE LONG CONSTANT REG$_LAST = 73 ! Always last ! ! +-------------------------------------------------------------------+ ! | Item Code Values ! +-------------------------------------------------------------------+ ! DECLARE LONG CONSTANT REG$K_NONE = 0 ! The item is not volatile DECLARE LONG CONSTANT REG$K_CLUSTER = 1 ! The item is removed when the cluster reboots DECLARE LONG CONSTANT REG$K_SYSTEM = 2 ! The item is removed when the system reboots DECLARE LONG CONSTANT REG$K_PROCESS = 3 ! The item is removed when the creating process terminates DECLARE LONG CONSTANT REG$K_IMAGE = 4 ! The item is removes when the creating image terminates DECLARE LONG CONSTANT REG$K_WRITEBEHIND = 5 ! The information on the given object can be written to disk at a later time DECLARE LONG CONSTANT REG$K_WRITETHRU = 6 ! The information on the given object must be written to disk immediately DECLARE LONG CONSTANT REG$K_CREATENEWKEY = 7 ! Created a new key DECLARE LONG CONSTANT REG$K_OPENEXISTINGKEY = 8 ! Opened an existing key DECLARE LONG CONSTANT REG$K_POLICY_OPENVMS = 9 ! Access is required to all keys in the key path DECLARE LONG CONSTANT REG$K_POLICY_NT_40 = 10 ! Access is required to the first key and the requested key DECLARE LONG CONSTANT REG$K_INTERNAL = 11 ! DECLARE LONG CONSTANT REG$K_HARDLINK = 12 ! Hard (physical) link DECLARE LONG CONSTANT REG$K_SYMBOLICLINK = 13 ! Symbolic (logical) link DECLARE LONG CONSTANT REG$K_BINARY = 14 ! Binary data DECLARE LONG CONSTANT REG$K_DWORD = 15 ! A 32 bit number DECLARE LONG CONSTANT REG$K_DWLITTLEENDIAN = 16 ! A 32 bit number in little endian format DECLARE LONG CONSTANT REG$K_DWBIGENDIAN = 17 ! A 32 bit number in bi endian format DECLARE LONG CONSTANT REG$K_EXPAND_SZ = 18 ! A string of ISO-1 Latin characters containing environment variables DECLARE LONG CONSTANT REG$K_LINK = 19 ! A link to another value DECLARE LONG CONSTANT REG$K_MULTI_SZ = 20 ! A concatenated array of REG$K_SZ strings DECLARE LONG CONSTANT REG$K_QWORD = 21 ! A 64 bit number DECLARE LONG CONSTANT REG$K_RESOURCELIST = 22 ! A device driver resource list DECLARE LONG CONSTANT REG$K_SZ = 23 ! A null terminated string DECLARE LONG CONSTANT REG$K_START_FILE = 24 ! DECLARE LONG CONSTANT REG$K_START_PERF = 25 ! DECLARE LONG CONSTANT REG$K_STOP_FILE = 26 ! DECLARE LONG CONSTANT REG$K_STOP_PERF = 27 ! DECLARE LONG CONSTANT REG$K_ZERO_FILE = 28 ! DECLARE LONG CONSTANT REG$K_ZERO_PERF = 29 ! DECLARE LONG CONSTANT REG$K_SHOW_CTR_FILE = 30 ! DECLARE LONG CONSTANT REG$K_SHOW_CTR_PERF = 31 ! DECLARE LONG CONSTANT REG$K_SHOW_FILE = 32 ! DECLARE LONG CONSTANT REG$K_NORMAL = 33 ! String size <= 8K DECLARE LONG CONSTANT REG$K_LARGE = 34 ! String size > 8K DECLARE LONG CONSTANT REG$K_EXACTMATCH = 35 ! DECLARE LONG CONSTANT REG$K_INCLUDE = 36 ! DECLARE LONG CONSTANT REG$K_EXCLUDE = 37 ! DECLARE LONG CONSTANT REG$K_ANY = 38 ! DECLARE LONG CONSTANT REG$K_NOTANY = 39 ! ! ! +-------------------------------------------------------------------+ ! | Function Code Modifiers ! +-------------------------------------------------------------------+ ! DECLARE LONG CONSTANT REG$M_FC = x'000003FF' DECLARE LONG CONSTANT REG$M_CASE_SENSITIVE = x'00000400' DECLARE LONG CONSTANT REG$M_DISABLE_WILDCARDS = x'00000800' DECLARE LONG CONSTANT REG$M_IGNORE_LINKS = x'00001000' DECLARE LONG CONSTANT REG$M_NOW = x'00002000' DECLARE LONG CONSTANT REG$M_NOWAIT = x'00004000' DECLARE LONG CONSTANT REG$M_UNICODE_VALUES = x'00008000' DECLARE LONG CONSTANT REG$M_BYPASS = x'00010000' DECLARE LONG CONSTANT REG$M_INTERNAL = x'00020000' DECLARE LONG CONSTANT REG$S_REGDEF = 3 record REGDEF variant case group REG$R_FC_MODIFIERS ! Indicates that the case sensitivity of keys be uses for matches ! Indicates that wildcards characters should be traited as normal characters ! Indicates that symbolic links should not be followed ! Indicates whether or not an operation should be written to disk immediately ! Indicates that operation should be aborted rather than stalled ! Indicates that data is an UNICODE string ! Indicates internal operation LONG FC_bits ! COMMENT ADDED BY SDL - FC_bits contains bits FC through FILL_7_ end group REG$R_FC_MODIFIERS end variant end record REGDEF ! ! +-------------------------------------------------------------------+ ! | Key Change Notify Flags ! +-------------------------------------------------------------------+ ! DECLARE LONG CONSTANT REG$M_CHANGENAME = x'00000001' DECLARE LONG CONSTANT REG$M_CHANGEATTRIBUTES = x'00000002' DECLARE LONG CONSTANT REG$M_CHANGELASTSET = x'00000004' DECLARE LONG CONSTANT REG$M_CHANGESECURITY = x'00000008' DECLARE LONG CONSTANT REG$S_KEYCHANGEDEF = 1 record KEYCHANGEDEF variant case group REG$R_KEYCHANGE_FLAGS ! A key name change, includes creation and deletion of its subkeys. ! Attribute change of key or subkeys ! Last write time change of key or subkeys ! Security descriptor change of key or subkeys BYTE CHANGENAME_bits ! COMMENT ADDED BY SDL - CHANGENAME_bits contains bits CHANGENAME through FILL_8_ end group REG$R_KEYCHANGE_FLAGS end variant end record KEYCHANGEDEF ! ! +-------------------------------------------------------------------+ ! | Security access Mask ! +-------------------------------------------------------------------+ ! DECLARE LONG CONSTANT REG$M_ALLACCESS = x'00000001' DECLARE LONG CONSTANT REG$M_CREATELINK = x'00000002' DECLARE LONG CONSTANT REG$M_CREATESUBKEY = x'00000004' DECLARE LONG CONSTANT REG$M_ENUMSUBKEYS = x'00000008' DECLARE LONG CONSTANT REG$M_EXECUTE = x'00000010' DECLARE LONG CONSTANT REG$M_NOTIFY = x'00000020' DECLARE LONG CONSTANT REG$M_QUERYVALUE = x'00000040' DECLARE LONG CONSTANT REG$M_READ = x'00000080' DECLARE LONG CONSTANT REG$M_SETVALUE = x'00000100' DECLARE LONG CONSTANT REG$M_WRITE = x'00000200' DECLARE LONG CONSTANT REG$M_DELETEACCESS = x'00000400' DECLARE LONG CONSTANT REG$M_READCONTROL = x'00000800' DECLARE LONG CONSTANT REG$M_WRITEDAC = x'00001000' DECLARE LONG CONSTANT REG$M_WRITEOWNER = x'00002000' DECLARE LONG CONSTANT REG$M_SYNCHRONIZE = x'00004000' DECLARE LONG CONSTANT REG$M_ACCESSSYSTEMSECURITY = x'00008000' DECLARE LONG CONSTANT REG$M_MAXIMUMALLOWED = x'00010000' DECLARE LONG CONSTANT REG$M_GENERICALL = x'00020000' DECLARE LONG CONSTANT REG$M_GENERICEXECUTE = x'00040000' DECLARE LONG CONSTANT REG$M_GENERICWRITE = x'00080000' DECLARE LONG CONSTANT REG$M_GENERICREAD = x'00100000' DECLARE LONG CONSTANT REG$S_SECACCESSDEF = 3 record SECACCESSDEF variant case group REG$R_SECACCESS_MASK ! NT equivalent ! KEY_ALL_ACCESS ! KEY_CREATE_LINK ! KEY_CREATE_SUB_KEY ! KEY_ENUMERATE_SUB_KEYS ! KEY_EXECUTE ! KEY_NOTIFY ! KEY_QUERY_VALUE ! READ_CONTROL|KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS|KEY_NOTIFY ! KEY_SET_VALUE ! READ_CONTROL|KEY_SET_VALUE|KEY_CREATE_SUB_KEY ! DELETE_ACCESS ! READ_CONTROL ! WRITE_DAC ! WRITE_OWNER ! SYNCHRONIZE ! ACCESS_SYSTEM_SECURITY ! MAXIMUM_ALLOWED ! GENERIC_ALL ! GENERIC_EXECUTE ! GENERIC_WRITE ! GENERIC_READ LONG ALLACCESS_bits ! COMMENT ADDED BY SDL - ALLACCESS_bits contains bits ALLACCESS through FILL_9_ end group REG$R_SECACCESS_MASK end variant end record SECACCESSDEF ! ! +-------------------------------------------------------------------+ ! | HKEY Definitions ! +-------------------------------------------------------------------+ ! DECLARE LONG CONSTANT REG$_HKEY_NONE = 0 ! %x00000000 DECLARE LONG CONSTANT REG$_HKEY_CLASSES_ROOT = X"80000000"L ! %x80000000 DECLARE LONG CONSTANT REG$_HKEY_CURRENT_USER = -2147483647 ! %x80000001 DECLARE LONG CONSTANT REG$_HKEY_LOCAL_MACHINE = -2147483646 ! %x80000002 DECLARE LONG CONSTANT REG$_HKEY_USERS = -2147483645 ! %x80000003 DECLARE LONG CONSTANT REG$_HKEY_PERFORMANCE_DATA = -2147483644 ! %x80000004 DECLARE LONG CONSTANT REG$_HKEY_LAST_ROOT_KEY = 5 !