nwnss: import ZLSS salvage dependency runtime

This commit is contained in:
OpenAI
2026-06-19 09:07:08 +00:00
committed by Mario Fetka
parent 03aa319381
commit 2a8a31bcbc
11 changed files with 36628 additions and 0 deletions

View File

@@ -0,0 +1,377 @@
/****************************************************************************
|
| (C) Copyright 2004 Novell, Inc.
| All Rights Reserved.
|
| This program is free software; you can redistribute it and/or
| modify it under the terms of version 2 of the GNU General Public
| License as published by the Free Software Foundation.
|
| This program is distributed in the hope that it will be useful,
| but WITHOUT ANY WARRANTY; without even the implied warranty of
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
| GNU General Public License for more details.
|
| You should have received a copy of the GNU General Public License
| along with this program; if not, contact Novell, Inc.
|
| To contact Novell about this file by physical or electronic mail,
| you may find current contact information at www.novell.com
|
|***************************************************************************/
/* ----------------------------------------------------------------------------
NetWare Registry Information
This file documents the NetWare registry extentions that allow NLMs
to access to the NetWare registry database. All Registry API's have
been defined and documented below.
IMPORTANT NOTE: It is possible to make your system unbootable by
corrupting the registry database!
----------------------------------------------------------------------------- */
//
// Well Known
//
#define HKEY LONG
#define REGSAM LONG
//#ifndef BOOL
//#define BOOL unsigned int
//#endif
#define REGEVT struct LoadDefinitionStructure *
#define SECURITY_ATTRIBUTES LONG /* Connection Number */
//
// Reserved Key Handles.
//
#define HKEY_ROOT ((HKEY)0x80000000)
#define HKEY_LOCAL_MACHINE ((HKEY)0x80000002)
#define HKEY_PERFORMANCE_DATA ((HKEY)0x80000004)
#define HKEY_DYN_DATA ((HKEY)0x80000006)
#define HKLM HKEY_LOCAL_MACHINE
#define HKPD HKEY_PERFORMANCE_DATA
#define HKDD HKEY_DYN_DATA
//
// Data Types
//
#define REG_NONE 0 // No value type
#define REG_SZ 1 // ASCIIZ null terminated string
#define REG_EXPAND_SZ 2 // ASCIIZ null terminated string (with environment variable references)
#define REG_BINARY 3 // Free form binary
#define REG_DWORD 4 // 32-bit number
#define REG_DWORD_BIG_ENDIAN 5 // 32-bit number
#define REG_LINK 6 // Symbolic Link
#define REG_MULTI_SZ 7 // Multiple ASCIIZ null terminated strings
#define REG_RESOURCE_LIST 8 // Resource list in the resource map
#define REG_FULL_RESOURCE_DESCRIPTOR 9 // Resource list in the hardware description
#define REG_RESOURCE_REQUIREMENTS_LIST 10
#define REG_QWORD 11 // 64-bit number
//
// Open/Create Options
//
#define REG_OPTION_RESERVED 0x00000000 // Parameter is reserved
#define REG_OPTION_NON_VOLATILE 0x00000000 // Key is preserved when system is rebooted
#define REG_OPTION_VOLATILE 0x00000001 // Key is not preserved when system is rebooted
#define REG_OPTION_CREATE_LINK 0x00000002 // Created key is a symbolic link
#define REG_OPTION_BACKUP_RESTORE 0x00000004 // open for backup or restore special access rules privilege required
#define REG_OPTION_OPEN_LINK 0x00000008 // Open symbolic link
//
// Key creation/open disposition
//
#define REG_CREATED_NEW_KEY 0x00000001 // New Registry Key created
#define REG_OPENED_EXISTING_KEY 0x00000002 // Existing Key opened
//
// Security Access Mask values
//
#define KEY_QUERY_VALUE 0x00000001
#define KEY_SET_VALUE 0x00000002
#define KEY_CREATE_SUB_KEY 0x00000004
#define KEY_ENUMERATE_SUB_KEYS 0x00000008
#define KEY_NOTIFY 0x00000010
#define KEY_CREATE_LINK 0x00000020
#define KEY_READ (KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY)
#define KEY_WRITE (KEY_SET_VALUE | KEY_CREATE_SUB_KEY)
#define KEY_EXECUTE (KEY_READ)
#define KEY_ALL_ACCESS (KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY | KEY_CREATE_LINK)
//
// Notify filter values
//
#define REG_NOTIFY_CHANGE_NAME 0x00000001 // Create or delete (child)
#define REG_NOTIFY_CHANGE_ATTRIBUTES 0x00000002
#define REG_NOTIFY_CHANGE_LAST_SET 0x00000004 // time stamp
#define REG_NOTIFY_CHANGE_SECURITY 0x00000008
#define REG_LEGAL_CHANGE_FILTER \
(REG_NOTIFY_CHANGE_NAME |\
REG_NOTIFY_CHANGE_ATTRIBUTES |\
REG_NOTIFY_CHANGE_LAST_SET |\
REG_NOTIFY_CHANGE_SECURITY)
//
// InValid Character Set for Names (Case Preserved, Case Insensitive)
//
#define NULL_CHAR 0x00
#define SLASH_CHAR 0x5c
//
// VALENT Definition
//
typedef struct val_ent
{
BYTE *vValueName; /* SET BY CALLER -- contains name of value to get */
LONG vValueLen; /* SET BY OS -- contains size of value */
void *vValueData; /* SET BY OS -- pointer to where data place in specified buffer */
LONG vDataType; /* SET BY OS -- contains the data type */
} VALENT;
/* ----------------------------------------------------------------------------
NetWare Registry APIs
---------------------
RegCloseKey
RegCreateKeyEx
RegDeleteKey
RegDeleteValue
RegEnumKeyEx
RegEnumValue
RegNotifyChangeKeyValue
RegOpenKeyEx
RegQueryInfoKey
RegQueryValueEx
RegSetValueEx
---------------------------------------------------------------------------- */
extern LONG RegCloseKey(HKEY hKey);
extern LONG RegCreateKeyEx(
HKEY hKey,
BYTE *SubKey,
LONG Reserved, /* reserved for future use */
BYTE *reserved0, /* reserved for future use */
LONG Options, /* volatile or not */
REGSAM samDesired, /* security access mask */
LONG Reserved1, /* reserved for future use */
HKEY *newHKey, /* new handle */
LONG *rtnDisposition); /* disposition taken */
extern LONG RegDeleteKey(
HKEY hKey,
BYTE *ptrSubKey); /* string identifying the subkey to delete */
extern LONG RegDeleteValue(
HKEY hKey,
BYTE *ptrValueName); /* name of value to delete */
extern LONG RegEnumKeyEx(
HKEY hKey,
LONG dwIndex, /* numeric index of key to enumerate */
BYTE *Name, /* returned key name */
LONG *lenName, /* sizeof key name*/
LONG *Reserved, /* reserved for future use */
BYTE *Reserved0, /* reserved for future use */
LONG *Reserved1, /* reserved for future use */
LONG *ptrLastWriteTime); /* DOS time of last modification of $subkey */
extern LONG RegEnumValue(
HKEY hKey,
LONG dwIndex, /* numeric index of key to enumerate */
BYTE *Name, /* returned value name */
LONG *lenName, /* sizeof value name */
LONG *Reserved, /* must be zero */
LONG *lpType, /* returned type of $valname */
void *Data, /* data associated with $valname (of data type $type) */
LONG *sizeData); /* sizeof data returned */
extern LONG RegFlushKey(
HKEY hKey);
extern LONG RegLoadKey(
HKEY hKey,
BYTE *keyName, /* string identifying key to created under the specified HKEY */
BYTE *pathAndFileName); /* path and file name point the hive created by a RegSaveKey */
extern LONG RegNotifyChangeKeyValue(
HKEY hKey,
BOOL bWatchSubtree,
LONG dwNotifyFilter,
REGEVT hEvent,
BOOL fAsynchronus);
extern LONG RegOpenKeyEx(
HKEY hKey,
BYTE *SubKey, /* string identifying subkey of $key */
LONG ulOptions,
REGSAM samDesired, /* requested security access mask */
HKEY *newHKey); /* returned key handle */
extern LONG RegQueryInfoKey(
HKEY hKey,
BYTE *reserved2,
LONG *reserved3,
LONG *Reserved, /* reserved for future use */
LONG *rtnSubKeys, /* number of subkeys for this key */
LONG *rtnMaxSubKeyLen, /* size of largest subkey */
LONG *Reserved0, /* reserved for future use */
LONG *rtnValues, /* number of values associated with this key */
LONG *MaxValueNameLen, /* size of largest value name */
LONG *MaxValueLen, /* size of largest value data */
LONG Reserved1, /* reserved for future use */
LONG *ptrLastWriteTime); /* time of last write (DOS Time Format )*/
extern LONG RegQueryMultipleValues(
HKEY hKey,
VALENT *pValent,
LONG numOfValents,
void *data,
LONG *totalSize);
extern LONG RegQueryValue(
HKEY hKey,
BYTE *SubKey, /* string identifying subkey of $key */
void *lpData, /* returned type of $data */
LONG *DataLen); /* returned data associated with $valname */
extern LONG RegQueryValueEx(
HKEY hKey,
BYTE *ptrValueName, /* string identifying value to retreive */
LONG *Reserved, /* reserved for future use */
LONG *lpType, /* returned type of data */
void *lpData, /* returned data associated with $valname */
LONG *DataLen); /* sizeof returned data */
extern LONG RegSaveKey(
HKEY hkey,
BYTE *pathAndFileName, /* path and file name */
SECURITY_ATTRIBUTES SecurityAttrs); /* security attributes */
extern LONG RegSetValue(
HKEY hKey,
BYTE *SubKey,
LONG dataType, /* data type of $data */
void *Data, /* data to associate with valname */
LONG sizeOfData); /* sizeof $data */
extern LONG RegSetValueEx(
HKEY hKey,
BYTE *ValueName, /* name of value to set */
LONG Reserved, /* reserved for future use */
LONG dataType, /* data type of $data */
BYTE *Data, /* data to associate with valname */
LONG sizeOfData); /* sizeof $data */
/*------------------------------------------------------------------------------------------------------------------**
** extern LONG CloseConfigFile(); * THIS API IS ONLY TO BE USED BY ORION NLMs * **
** extern void InitializeClusterCfgFileJumpTable(void *, ...); * THIS API IS ONLY TO BE USED BY ORION NLMs * **
** extern void InitializeLocalCfgFileJumpTable(void); * THIS API IS ONLY TO BE USED BY ORION NLMs * **
**------------------------------------------------------------------------------------------------------------------*/
/* ----------------------------------------------------------------------------
NetWare Remote Registry Access NCPs
----------------------------------
ncp xx 00 f_RegCloseKey
ncp xx 01 f_RegCreateKeyEx
ncp xx 02 f_RegDeleteKey
ncp xx 03 f_RegDeleteValue
ncp xx 04 f_RegEnumKeyEx
ncp xx 05 f_RegEnumValue
ncp xx 06 f_RegNotifyChangeKeyValue
ncp xx 07 f_RegOpenKeyEx
ncp xx 08 f_RegQueryInfoKey
ncp xx 09 f_RegQueryValueEx
ncp xx 10 f_RegSetValueEx
---------------------------------------------------------------------------- */
/*
Error Codes
*/
#define REG_ERR_INVALID_HANDLE 0x40000001
#define REG_ERR_INPUT_PARAMETER_NO_DATA 0x40000002
#define REG_ERR_VALUE_NOT_SET 0x40000003
#define REG_ERR_ENUM_INDEX_OUT_OF_RANGE 0x40000004
#define REG_ERR_NAME_BUFFER_TOO_SMALL 0x40000005
#define REG_ERR_VALUE_BUFFER_TOO_SMALL 0x40000006
#define REG_ERR_SAM_CHECK_FAILED 0x40000007
#define REG_ERR_DATABASE_IS_CORRUPT 0x40000008
#define REG_ERR_INCOMPLETE_SUBKEY_PATH 0x40000009
#define REG_ERR_VALUE_SEARCH_FAILED 0x4000000a
#define REG_ERR_INTERNAL_RESOURCE_FAILURE 0x4000000b
#define REG_ERR_DB_WRITE_ERROR 0x4000000c
#define REG_ERR_RESERVED_KEYS_NO_DELETE 0x4000000d
#define REG_ERR_SUBKEY_SEARCH_FAILED 0x4000000e
#define REG_ERR_NOT_ACCESSIBLE 0x4000000f
#define REG_ERR_REG_SZ_ONLY_ALLOWED 0x40000010
#define REG_ERR_NO_FREE_HANDLE_SLOTS 0x40000011
#define REG_ERR_DATABASE_NOT_ACCESSIBLE 0x40000012
#define REG_ERR_INVALID_CHARACTER 0x40000013
#define REG_ERR_FILE_CREATION_FOR_SAVEKEY 0x40000014
#define REG_ERR_SERVICE_NOT_AVAILABLE 0x40000015
#define REG_ERR_VALUE_SIZE_TOO_LARGE 0x40000016
/* ----------------------------------------------------------------------------
Reserved NetWare PATHS & KEYS under HKEY_LOCAL_MACHINE
---------------------------------------------------------------------------- */
#define REGSTR_SET_PARAMETERS "Setable Parameters"
#define REGSTR_SET_PARAMETER_CURRENT_VALUE "Current Value"
#define REGSTR_SET_PARAMETER_PENDING_VALUE "Pending Value"
#define REGSTR_SET_PARAMETER_CONTROL_INFO "Control Info"
#define REGSTR_SET_PARAMETER_DEFAULT_VALUE "Default Value"
#define REGSTR_SERVER_NAME "Server Name"
#define REGSTR_SERVER_OPERATION_MODE "Operational Mode"
#define REGSTR_NO_SPLASH "No Splash"
#define REGSTR_PROTOCOL_IPX_INTERNAL_NET_NUMBER "Protocols\\IPX\\Internal Net Number"
#define REGSTR_LOAD_ORDER "Load Control"
#define REGSTR_LOAD_ORDER_CREATOR "Load Control\\Creator Info"
#define REGSTR_LOAD_ORDER_STAGE0 "Load Control\\Stage0"
#define REGSTR_LOAD_ORDER_STAGE1 "Load Control\\Stage1"
#define REGSTR_LOAD_ORDER_STAGE2 "Load Control\\Stage2"
#define REGSTR_LOAD_ORDER_STAGE3 "Load Control\\Stage3"
#define REGSTR_LOAD_ORDER_STAGE4 "Load Control\\Stage4"
#define REGSTR_LOAD_ORDER_STAGE5 "Load Control\\Stage5"
#define REGSTR_CREATOR_INFO "Creator Info"
#define REGSTR_LOAD_ORDER_BOOT_INFO "Load Control\\Boot Info"
#define REGSTR_BOOT_NCF_DATE_TIME_INFO "Startup & AutoExec Info"
#define REGSTR_NCP_CONTROL_INFO "NCP Control"
#define REGSTR_SERVER_GUID_INFO "Server GUID"
#define REGSTR_LAST_ISSUED_GUID "Last Issued GUID"
#define REGSTR_ALERT_CONTROL "Alert Control"
/* ----------------------------------------------------------------------------
Reserved NetWare PATHS & KEYS under HKEY_PERFORMANCE_DATA
---------------------------------------------------------------------------- */
#define REGSTR_SERVER_WORKING_SET "Server Working Set"
#define REGSTR_LEGACY_FILE_SYSTEM "Legacy File System"
#define REGSTR_LEGACY_CACHE "Legacy Cache"
#define REGSTR_LEGACY_PROCESSES "Legacy Processes"
#define REGSTR_LEGACY_DIRECTORY_CACHE "Legacy Directory Cache"
#define REGSTR_LEGACY_VOLUMES "Legacy Volumes"