' ########################################################################################
' Microsoft Windows
' File: LMCons.inc
' Copyright (c) 2011 Jos? Roca
' Portions Copyright (c) Microsoft Corporation.
' All Rights Reserved.
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ########################################################################################
#IF NOT %DEF(PBX_LMCons_PBI)
#DEFINE PBX_LMCons_PBI
%EQUATE `LMCONS_INC = 1
' This file contains constants used throughout the LAN Manager
' API header files. It should be included in any source file
' that is going to include other LAN Manager API header files or
' call a LAN Manager API.
' NOTE: Lengths of strings are given as the maximum lengths of the
' string in characters (not bytes). This does not include space for the
' terminating 0-characters. When allocating space for such an item,
' use the form:
' TCHAR username[UNLEN+1];
' Definitions of the form LN20_* define those values in effect for
' LanMan 2.0.
'/*INC*/
'//
'// String Lengths for various LanMan names
'//
%EQUATE `CNLEN = 15 ' Computer name length
%EQUATE `LM20_CNLEN = 15 ' LM 2.0 Computer name length
%EQUATE `DNLEN = %CNLEN ' Maximum domain name length
%EQUATE `LM20_DNLEN = %LM20_CNLEN ' LM 2.0 Maximum domain name length
%EQUATE `UNCLEN = %CNLEN + 2 ' UNC computer name length
%EQUATE `LM20_UNCLEN = %LM20_CNLEN + 2 ' LM 2.0 UNC computer name length
%EQUATE `NNLEN = 80 ' Net name length (share name)
%EQUATE `LM20_NNLEN = 12 ' LM 2.0 Net name length
%EQUATE `RMLEN = %UNCLEN + 1 + %NNLEN ' Max remote name length
%EQUATE `LM20_RMLEN = %LM20_UNCLEN + 1 + %LM20_NNLEN ' LM 2.0 Max remote name length
%EQUATE `SNLEN = 80 ' Service name length
%EQUATE `LM20_SNLEN = 15 ' LM 2.0 Service name length
%EQUATE `STXTLEN = 256 ' Service text length
%EQUATE `LM20_STXTLEN = 63 ' LM 2.0 Service text length
%EQUATE `PATHLEN = 256 ' Max. path (not including drive name)
%EQUATE `LM20_PATHLEN = 256 ' LM 2.0 Max. path
%EQUATE `DEVLEN = 80 ' Device name length
%EQUATE `LM20_DEVLEN = 8 ' LM 2.0 Device name length
%EQUATE `EVLEN = 16 ' Event name length
'//
'// User, Group and Password lengths
'//
%EQUATE `UNLEN = 256 ' Maximum user name length
%EQUATE `LM20_UNLEN = 20 ' LM 2.0 Maximum user name length
%EQUATE `GNLEN = %UNLEN ' Group name
%EQUATE `LM20_GNLEN = %LM20_UNLEN ' LM 2.0 Group name
%EQUATE `PWLEN = 256 ' Maximum password length
%EQUATE `LM20_PWLEN = 14 ' LM 2.0 Maximum password length
%EQUATE `SHPWLEN = 8 ' Share password length (bytes)
%EQUATE `CLTYPE_LEN = 12 ' Length of client type string
%EQUATE `MAXCOMMENTSZ = 256 ' Multipurpose comment length
%EQUATE `LM20_MAXCOMMENTSZ = 48 ' LM 2.0 Multipurpose comment length
%EQUATE `QNLEN = %NNLEN ' Queue name maximum length
%EQUATE `LM20_QNLEN = %LM20_NNLEN ' LM 2.0 Queue name maximum length
'//
'// The ALERTSZ and MAXDEVENTRIES defines have not yet been NT'ized.
'// Whoever ports these components should change these values appropriately.
'//
%EQUATE `ALERTSZ = 128 ' size of alert string in server
%EQUATE `MAXDEVENTRIES = (4*8) ' Max number of device entries (SIZEOF(LONG) * 8)
 ' We use int bitmap to represent
%EQUATE `NETBIOS_NAME_LEN = 16 ' NetBIOS net name (bytes)
'//
'// Value to be used with APIs which have a "preferred maximum length"
'// parameter. This value indicates that the API should just allocate
'// "as much as it takes."
'//
'#define MAX_PREFERRED_LENGTH ((DWORD) -1)
%EQUATE `MAX_PREFERRED_LENGTH = &HFFFFFFFF ' ((DWORD) -1)
'//
'// Constants used with encryption
'//
%EQUATE `CRYPT_KEY_LEN = 7
%EQUATE `CRYPT_TXT_LEN = 8
%EQUATE `ENCRYPTED_PWLEN = 16
%EQUATE `SESSION_PWLEN = 24
%EQUATE `SESSION_CRYPT_KLEN = 21
'//
'// Value to be used with SetInfo calls to allow setting of all
'// settable parameters (parmnum zero option)
'//
#IF NOT %DEF(%PARMNUM_ALL)
%EQUATE `PARMNUM_ALL = 0
#ENDIF
%EQUATE `PARM_ERROR_UNKNOWN = &HFFFFFFFF ' ( (DWORD) (-1) )
%EQUATE `PARM_ERROR_NONE = 0
%EQUATE `PARMNUM_BASE_INFOLEVEL = 1000
'//
'// Only the UNICODE version of the LM APIs are available on NT.
'// Non-UNICODE version on other platforms
'//
'//
'// Message File Names
'//
'#define MESSAGE_FILENAME TEXT("NETMSG")
'#define OS2MSG_FILENAME TEXT("BASE")
'#define HELP_MSG_FILENAME TEXT("NETH")
$$MESSAGE_FILENAME = "NETMSG"$$
$$OS2MSG_FILENAME = "BASE"$$
$$HELP_MSG_FILENAME = "NETH"$$
'/**INTERNAL_ONLY**/
'// The backup message file named here is a duplicate of net.msg. It
'// is not shipped with the product, but is used at buildtime to
'// msgbind certain messages to netapi.dll and some of the services.
'// This allows for OEMs to modify the message text in net.msg and
'// have those changes show up. Only in case there is an error in
'// retrieving the messages from net.msg do we then get the bound
'// messages out of bak.msg (really out of the message segment).
'#define BACKUP_MSG_FILENAME TEXT("BAK.MSG")
$$BACKUP_MSG_FILENAME = "BAK.MSG"$$
'/**END_INTERNAL**/
#IF NOT %DEF(%NULL)
%EQUATE `NULL = 0
#ENDIF
'//
'// Keywords used in Function Prototypes
'//
'//
'// The platform ID indicates the levels to use for platform-specific
'// information.
'//
%EQUATE `PLATFORM_ID_DOS = 300
%EQUATE `PLATFORM_ID_OS2 = 400
%EQUATE `PLATFORM_ID_NT = 500
%EQUATE `PLATFORM_ID_OSF = 600
%EQUATE `PLATFORM_ID_VMS = 700
'//
'// There message numbers assigned to different LANMAN components
'// are as defined below.
'//
'// lmerr.h: 2100 - 2999 NERR_BASE
'// alertmsg.h: 3000 - 3049 ALERT_BASE
'// lmsvc.h: 3050 - 3099 SERVICE_BASE
'// lmerrlog.h: 3100 - 3299 ERRLOG_BASE
'// msgtext.h: 3300 - 3499 MTXT_BASE
'// apperr.h: 3500 - 3999 APPERR_BASE
'// apperrfs.h: 4000 - 4299 APPERRFS_BASE
'// apperr2.h: 4300 - 5299 APPERR2_BASE
'// ncberr.h: 5300 - 5499 NRCERR_BASE
'// alertmsg.h: 5500 - 5599 ALERT2_BASE
'// lmsvc.h: 5600 - 5699 SERVICE2_BASE
'// lmerrlog.h 5700 - 5899 ERRLOG2_BASE
'//
%EQUATE `MIN_LANMAN_MESSAGE_ID = 2100 ' %NERR_BASE
%EQUATE `MAX_LANMAN_MESSAGE_ID = 5899
#ENDIF
