windows-nt/Source/XPSP1/NT/ds/netapi/svcdlls/srvsvc/server/srvconfg.h
2020-09-26 16:20:57 +08:00

731 lines
18 KiB
C

/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
SrvConfg.h
Abstract:
This file contains default server settings for startup.
Author:
David Treadwell (davidtr) 1-Mar-1991
Revision History:
--*/
#ifndef _SRVCONFG_
#define _SRVCONFG_
//
// The platform ID for NT servers. This indicates the info level that
// should be called for platform-specific information.
//
#define DEF_PLATFORM_ID SV_PLATFORM_ID_NT
#define MIN_PLATFORM_ID SV_PLATFORM_ID_NT
#define MAX_PLATFORM_ID SV_PLATFORM_ID_NT
//
// The default name is used for the server set and get info APIs as well
// as the transport name if no overriding transport name is specified.
//
#define DEF_NAME L"NTSERVER"
//
// Version definitions--these indicate LM 3.0.
//
#define DEF_VERSION_MAJOR 3
#define MIN_VERSION_MAJOR 3
#define MAX_VERSION_MAJOR 3
#define DEF_VERSION_MINOR 10
#define MIN_VERSION_MINOR 10
#define MAX_VERSION_MINOR 10
//
// The server type.
//
#define DEF_TYPE 0
#define MIN_TYPE 0
#define MAX_TYPE 0xFFFFFFFF
//
// The server comment is used only for the server get and set info APIs.
//
#define DEF_COMMENT L""
//
// The maximum number of users that may be logged on to the server
// simultaneously.
//
#define DEF_USERS 0xFFFFFFFF
#define MIN_USERS 1
#define MAX_USERS 0xFFFFFFFF
//
// The autodisconnect time: when a client is idle for this many minutes,
// the server closes the connection, but only if the client has no open
// files/pipes.
//
#define DEF_DISC 15
#define MIN_DISC 0 // zero minutes -- disconnect ASAP
#define MAX_DISC 0xFFFFFFFF
//
// The IPX autodisconnect time: when a client doesn't send any SMBs
// for this many minutes, the server closes the 'connection', even if
// the client has open files/pipes.
//
#define DEF_CONNECTIONLESSAUTODISC 15
#define MIN_CONNECTIONLESSAUTODISC 15
#define MAX_CONNECTIONLESSAUTODISC 0xFFFFFFFF
//
// The number of minutes to wait between the time a client establishes a virtual
// circuit to the server and the time it gets around to doing a session setup. This
// time is reset if the client keeps sending messages
//
#define DEF_CONNECTIONNOSESSIONSTIMEOUT 2
#define MIN_CONNECTIONNOSESSIONSTIMEOUT 1
#define MAX_CONNECTIONNOSESSIONSTIMEOUT 0xFFFFFFFF
//
// The minimum allowed negotiate buffer size from the client
//
#define DEF_MINCLIENTBUFFERSIZE 500
#define MIN_MINCLIENTBUFFERSIZE 64
#define MAX_MINCLIENTBUFFERSIZE (64*1024)
//
// Parameters dealing with server announcements: whether the server is
// hidden (no announcements), the announce interval, the randomization
// factor for the accounce interval, and whether the server announces
// itself as a time source.
//
#define DEF_HIDDEN FALSE
#define DEF_ANNOUNCE 4 * 60
#define MIN_ANNOUNCE 1
#define MAX_ANNOUNCE 65535
#define DEF_ANNDELTA 3000
#define MIN_ANNDELTA 0
#define MAX_ANNDELTA 65535
#define DEF_TIMESOURCE FALSE
#define DEF_ACCEPTDOWNLEVELAPIS TRUE
#define DEF_LMANNOUNCE FALSE
//
// A fully qualified path to the user directories.
//
#define DEF_USERPATH L"c:\\"
//
// The domain name to which to send server announcements.
//
#define DEF_DOMAIN L"DOMAIN"
//
// Server "heuristics", enabling various capabilities.
//
#define DEF_ENABLEOPLOCKS TRUE
#define DEF_ENABLEFCBOPENS TRUE
#define DEF_ENABLESOFTCOMPAT TRUE
#define DEF_ENABLERAW TRUE
#define DEF_ENABLESHAREDNETDRIVES FALSE
#define DEF_ENABLEFORCEDLOGOFF TRUE
#define DEF_ENABLEOPLOCKFORCECLOSE FALSE
#define DEF_REMOVEDUPLICATESEARCHES TRUE
#define DEF_RESTRICTNULLSESSACCESS TRUE
#define DEF_ENABLEWFW311DIRECTIPX TRUE
//
// Receive buffer size, receive work item count, and receive IRP stack
// size.
//
#define DEF_SIZREQBUF 4356
#define MIN_SIZREQBUF 1024
#define MAX_SIZREQBUF 65535
//
// If we have a large memory system, we use DEF_LARGE_SIZREQBUF instead of DEF_SIZREQBUF
//
#define DEF_LARGE_SIZREQBUF 16644
#define DEF_INITWORKITEMS 4
#define MIN_INITWORKITEMS 1
#define MAX_INITWORKITEMS 512
#define DEF_MAXWORKITEMS 128
#define MIN_MAXWORKITEMS 1
#define MAX_MAXWORKITEMS 65535 // arbitrary
#define DEF_RAWWORKITEMS 4
#define MIN_RAWWORKITEMS 1
#define MAX_RAWWORKITEMS 512
#define DEF_MAXRAWWORKITEMS 16
#define MIN_MAXRAWWORKITEMS 1
#define MAX_MAXRAWWORKITEMS 512
#define DEF_IRPSTACKSIZE 15
#define MIN_IRPSTACKSIZE 11
#define MAX_IRPSTACKSIZE 50
//
// Maximum raw mode buffer size. (This isn't actually configurable --
// the server must always be prepared to receive raw requests for up to
// 65535 bytes.)
//
#define DEF_MAXRAWBUFLEN 65535
#define MIN_MAXRAWBUFLEN 65535
#define MAX_MAXRAWBUFLEN 65535
//
// Cache-related parameters.
//
#define DEF_MAXCOPYREADLEN 8192
#define MIN_MAXCOPYREADLEN 0
#define MAX_MAXCOPYREADLEN 0xFFFFFFFF
#define DEF_MAXCOPYWRITELEN 0
#define MIN_MAXCOPYWRITELEN 0
#define MAX_MAXCOPYWRITELEN 0xFFFFFFFF
//
// Free connection count.
//
#define DEF_MAXFREECONNECTIONS 2
#define MIN_MAXFREECONNECTIONS 2
#define MAX_MAXFREECONNECTIONS 100 // arbitrary
#define DEF_MINFREECONNECTIONS 2
#define MIN_MINFREECONNECTIONS 2
#define MAX_MINFREECONNECTIONS 32 // arbitrary
// Small free connection limits (machine < 1 GB memory)
#define SRV_MIN_CONNECTIONS_SMALL 4
#define SRV_MAX_CONNECTIONS_SMALL 8
// Medium free connection limits (machine 1-16 GB memory)
#define SRV_MIN_CONNECTIONS_MEDIUM 8
#define SRV_MAX_CONNECTIONS_MEDIUM 16
// Large free connection limits (machine > 16 GB memory)
#define SRV_MIN_CONNECTIONS_LARGE 12
#define SRV_MAX_CONNECTIONS_LARGE 24
//
// Initial and maximum table sizes.
//
#define DEF_INITSESSTABLE 4
#define MIN_INITSESSTABLE 1
#define MAX_INITSESSTABLE 64
#define DEF_SESSUSERS 2048
#define MIN_SESSUSERS 1
#define MAX_SESSUSERS 2048
#define ABSOLUTE_MAX_SESSION_TABLE_SIZE 2048 // Limited by index bits
#define DEF_INITCONNTABLE 8
#define MIN_INITCONNTABLE 1
#define MAX_INITCONNTABLE 128
#define DEF_SESSCONNS 2048
#define MIN_SESSCONNS 1
#define MAX_SESSCONNS 2048
#define ABSOLUTE_MAX_TREE_TABLE_SIZE 2048 // Limited by index bits
#define DEF_INITFILETABLE 16
#define MIN_INITFILETABLE 1
#define MAX_INITFILETABLE 256
#define DEF_SESSOPENS 16384
#define MIN_SESSOPENS 1
#define MAX_SESSOPENS 16384
// #define ABSOLUTE_MAX_FILE_TABLE_SIZE 16384 // Limited by index bits
#define DEF_INITSEARCHTABLE 8
#define MIN_INITSEARCHTABLE 1
#define MAX_INITSEARCHTABLE 2048
#define DEF_OPENSEARCH 2048
#define MIN_OPENSEARCH 1
#define MAX_OPENSEARCH 2048
#define ABSOLUTE_MAX_SEARCH_TABLE_SIZE 2048 // Limited by index bits
#define DEF_MAXGLOBALOPENSEARCH 4096
#define MIN_MAXGLOBALOPENSEARCH 1
#define MAX_MAXGLOBALOPENSEARCH 0xFFFFFFFF
#define DEF_INITCOMMTABLE 4
#define MIN_INITCOMMTABLE 1
#define MAX_INITCOMMTABLE 32
#define DEF_CHDEVS 32
#define MIN_CHDEVS 1
#define MAX_CHDEVS 32
#define ABSOLUTE_MAX_COMM_DEVICE_TABLE_SIZE 32
//
// Core search timeouts. The first is for active core searches, the second
// is for core searches where we have returned STATUS_NO_MORE_FILES. The
// second should be shorter, as these are presumably complete. All values
// are specified in seconds.
//
#define DEF_MAXKEEPSEARCH (60 * 60)
#define MIN_MAXKEEPSEARCH 10
#define MAX_MAXKEEPSEARCH 10000
//
// *** These 3 parameters are no longer used.
//
#define DEF_MINKEEPSEARCH (60 * 8)
#define MIN_MINKEEPSEARCH 5
#define MAX_MINKEEPSEARCH 5000
#define DEF_MAXKEEPCOMPLSEARCH (60 * 10)
#define MIN_MAXKEEPCOMPLSEARCH 2
#define MAX_MAXKEEPCOMPLSEARCH 10000
#define DEF_MINKEEPCOMPLSEARCH (60 * 4)
#define MIN_MINKEEPCOMPLSEARCH 1
#define MAX_MINKEEPCOMPLSEARCH 1000
//
// SrvWorkerThreadCountAdd is added to the system CPU count to determine
// how many worker threads the server will have.
//
// *** THIS PARAMETER IS NO LONGER USED!
//
#define DEF_THREADCOUNTADD 2
#define MIN_THREADCOUNTADD 0
#define MAX_THREADCOUNTADD 10
//
// SrvBlockingThreadCount is the number of blocking threads that get
// started at server initialization.
//
// *** THIS PARAMETER IS NO LONGER USED!
//
#define DEF_NUMBLOCKTHREADS 2
#define MIN_NUMBLOCKTHREADS 1
#define MAX_NUMBLOCKTHREADS 10
//
// This is the maximum number of threads for each server queue per processor
//
#define DEF_MAXTHREADSPERQUEUE 10
#define MIN_MAXTHREADSPERQUEUE 1
#define MAX_MAXTHREADSPERQUEUE 65535
//
// If a server worker thread remains idle for this many seconds, it will terminate
//
#define DEF_IDLETHREADTIMEOUT 30
#define MIN_IDLETHREADTIMEOUT 1
#define MAX_IDLETHREADTIMEOUT 65535
//
// Scavenger thread idle wait time.
//
#define DEF_SCAVTIMEOUT 30
#define MIN_SCAVTIMEOUT 1
#define MAX_SCAVTIMEOUT 300
//
// The server periodically recomputes the average work queue depth.
// This is how often the recomputation is done (in secs)
//
#define DEF_QUEUESAMPLESECS 5
#define MIN_QUEUESAMPLESECS 1
#define MAX_QUEUESAMPLESECS 65535
//
// For multiprocessor systems, the server tries to dynamically
// balance the workload over the processors in the system. The
// processor handling the client's dpc's is known as the preferred
// processor for this client. The server looks at the average work
// queue depth for each of the processors in the system. If the
// client is currently on the preferred processor, but some other
// processor's average work queue length + current queue length is
// OTHERQUEUEAFFINITY shorter, then the client is reassigned to
// that processor
//
#define DEF_OTHERQUEUEAFFINITY 3
#define MIN_OTHERQUEUEAFFINITY 1
#define MAX_OTHERQUEUEAFFINITY 65535
//
// If the client is not currently its preferred processor, but the
// preferred processor's average work queue length + current queue
// length is no more than PREFERREDAFFINITY items longer, then this
// client is reassigned to its preferred processor
//
#define DEF_PREFERREDAFFINITY 1
#define MIN_PREFERREDAFFINITY 0
#define MAX_PREFERREDAFFINITY 65535
//
// Each client looks at the other processor queues every BALANCECOUNT
// operations to see if it would be better served by a different
// processor
//
#define DEF_BALANCECOUNT 1500
#define MIN_BALANCECOUNT 10
#define MAX_BALANCECOUNT 65535
//
// If a client is not currently assigned to its preferred processor, we've
// found that cpu utilization can drop if server responses are sent from the
// client's preferred processor (most certainly because transport data is not
// sloshed between cpus). Unfortunately this can adversely affect throughput
// by a couple of percentage points on some platforms. This setting affects
// whether these responses are requeued to the preferred processor.
//
// OBSOLETE!
//
#define DEF_SENDSFROMPREFERREDPROCESSOR TRUE
//
// Does the server support compressed data transfers?
//
#define DEF_ENABLECOMPRESSION FALSE
//
// If an NTAS, should the server automatically create the drive$ shares?
//
#define DEF_AUTOSHARESERVER TRUE
//
// If a workstation, should the server automaticaly create the drive$ shares?
//
#define DEF_AUTOSHAREWKS TRUE
//
// Should security signatures be enabled?
//
#define DEF_ENABLESECURITYSIGNATURE FALSE
//
// Should security signatures be required?
//
#define DEF_REQUIRESECURITYSIGNATURE FALSE
//
// Should security signatures be enabled for W9x clients?
// This is here because there is a bug in W95 and some W98 vredir.vxd
// versions that cause them to improperly sign.
//
#define DEF_ENABLEW9XSECURITYSIGNATURE TRUE
//
// Should we enforce reauthentication on kerberos tickets (perhaps causing Win2K clients to be
// disconnected since they don't do dynamic reauth)
//
#define DEF_ENFORCEKERBEROSREAUTHENTICATION FALSE
//
// Should we disable the Denial-of-Service checking
//
#define DEF_DISABLEDOS FALSE
//
// What is the minimum amount of disk space necessary to generate a "low disk space" warning event
//
#define DEF_LOWDISKSPACEMINIMUM 400
#define MIN_LOWDISKSPACEMINIMUM 0
#define MAX_LOWDISKSPACEMINIMUM 0xFFFFFFFF
//
// Should we do strict name checking
//
#define DEF_DISABLESTRICTNAMECHECKING FALSE
//
// Various information variables for the server.
//
#define DEF_MAXMPXCT 50
#define MIN_MAXMPXCT 1
#define MAX_MAXMPXCT 65535 // We will only send 125 to W9X clients
//
// Time server waits for an an oplock to break before failing an open
// request
//
#define DEF_OPLOCKBREAKWAIT 35
#define MIN_OPLOCKBREAKWAIT 10
#define MAX_OPLOCKBREAKWAIT 180
//
// Time server waits for an oplock break response.
//
#define DEF_OPLOCKBREAKRESPONSEWAIT 35
#define MIN_OPLOCKBREAKRESPONSEWAIT 10
#define MAX_OPLOCKBREAKRESPONSEWAIT 180
//
// This is supposed to indicate how many virtual connections are allowed
// between this server and client machines. It should always be set to
// one, though more VCs can be established. This duplicates the LM 2.0
// server's behavior.
//
#define DEF_SESSVCS 1
#define MIN_SESSVCS 1
#define MAX_SESSVCS 1
//
// Receive work item thresholds
//
//
// The minimum desirable number of free receive workitems
//
#define DEF_MINRCVQUEUE 2
#define MIN_MINRCVQUEUE 0
#define MAX_MINRCVQUEUE 10
//
// The minimum number of free receive work items available before
// the server will start processing a potentially blocking SMB.
//
#define DEF_MINFREEWORKITEMS 2
#define MIN_MINFREEWORKITEMS 0
#define MAX_MINFREEWORKITEMS 10
//
// The maximum amount of time an "extra" work item can be idle before it
// is freed back to the system.
//
#define DEF_MAXWORKITEMIDLETIME 30 // seconds
#define MIN_MAXWORKITEMIDLETIME 10
#define MAX_MAXWORKITEMIDLETIME 1800
//
// Size of the shared memory section used for communication between the
// server and XACTSRV.
//
#define DEF_XACTMEMSIZE 0x100000 // 1 MB
#define MIN_XACTMEMSIZE 0x10000 // 64k
#define MAX_XACTMEMSIZE 0x1000000 // 16 MB
//
// Priority of server FSP threads. Specified relative to the base
// priority of the process. Valid values are between -2 and 2, or 15.
//
#define DEF_THREADPRIORITY 1
#define MIN_THREADPRIORITY 0
#define MAX_THREADPRIORITY THREAD_BASE_PRIORITY_LOWRT
//
// Limits on server memory usage.
//
#define DEF_MAXPAGEDMEMORYUSAGE 0xFFFFFFFF
#define MIN_MAXPAGEDMEMORYUSAGE 0x100000 // 1MB
#define MAX_MAXPAGEDMEMORYUSAGE 0xFFFFFFFF
#define DEF_MAXNONPAGEDMEMORYUSAGE 0xFFFFFFFF
#define MIN_MAXNONPAGEDMEMORYUSAGE 0x100000 // 1MB
#define MAX_MAXNONPAGEDMEMORYUSAGE 0xFFFFFFFF
//
// The server keeps a small list of free RFCB structures to avoid hitting
// the heap. This is the number in that list, per processor
//
#define DEF_MAXFREERFCBS 20
#define MIN_MAXFREERFCBS 0
#define MAX_MAXFREERFCBS 65535
//
// The server keeps a small list of free MFCB structures to avoid hitting
// the heap. This is the number in that list, per processor
//
#define DEF_MAXFREEMFCBS 20
#define MIN_MAXFREEMFCBS 0
#define MAX_MAXFREEMFCBS 65535
//
// The server keeps a small list of free LFCB structures to avoid hitting
// the heap. This is the number in that list, per processor
//
#define DEF_MAXFREELFCBS 20
#define MIN_MAXFREELFCBS 0
#define MAX_MAXFREELFCBS 65535
//
// The server keeps a small list of freed pool memory chunks to avoid hitting
// the heap. This is the number in that list, per processor
//
#define DEF_MAXFREEPAGEDPOOLCHUNKS 50
#define MIN_MAXFREEPAGEDPOOLCHUNKS 0
#define MAX_MAXFREEPAGEDPOOLCHUNKS 65535
//
// The chunks that are kept in the free pool list must be at least this size:
//
#define DEF_MINPAGEDPOOLCHUNKSIZE 128
#define MIN_MINPAGEDPOOLCHUNKSIZE 0
#define MAX_MINPAGEDPOOLCHUNKSIZE 65535
//
// The chunks must be no larger than this
//
#define DEF_MAXPAGEDPOOLCHUNKSIZE 512
#define MIN_MAXPAGEDPOOLCHUNKSIZE 0
#define MAX_MAXPAGEDPOOLCHUNKSIZE 65535
//
// Alert information
//
#define DEF_ALERTSCHEDULE 5 // 5 minutes
#define MIN_ALERTSCHEDULE 1
#define MAX_ALERTSCHEDULE 65535
#define DEF_ERRORTHRESHOLD 10 // 10 errors
#define MIN_ERRORTHRESHOLD 1
#define MAX_ERRORTHRESHOLD 65535
#define DEF_NETWORKERRORTHRESHOLD 5 // 5% errors
#define MIN_NETWORKERRORTHRESHOLD 1
#define MAX_NETWORKERRORTHRESHOLD 100
#define DEF_DISKSPACETHRESHOLD 10 // 10% free disk space
#define MIN_DISKSPACETHRESHOLD 0
#define MAX_DISKSPACETHRESHOLD 99
//
// Link speed parameters
//
#define DEF_MAXLINKDELAY 60 // seconds
#define MIN_MAXLINKDELAY 0
#define MAX_MAXLINKDELAY 0x100000
#define DEF_MINLINKTHROUGHPUT 0 // bytes per second
#define MIN_MINLINKTHROUGHPUT 0
#define MAX_MINLINKTHROUGHPUT 0xFFFFFFFF
#define DEF_LINKINFOVALIDTIME 60 // seconds
#define MIN_LINKINFOVALIDTIME 0
#define MAX_LINKINFOVALIDTIME 0x100000
#define DEF_SCAVQOSINFOUPDATETIME 300 // seconds
#define MIN_SCAVQOSINFOUPDATETIME 0
#define MAX_SCAVQOSINFOUPDATETIME 0x100000
//
// Sharing violation retry delays/count
//
#define DEF_SHARINGVIOLATIONRETRIES 5 // number of retries
#define MIN_SHARINGVIOLATIONRETRIES 0
#define MAX_SHARINGVIOLATIONRETRIES 1000
#define DEF_SHARINGVIOLATIONDELAY 200 // milliseconds
#define MIN_SHARINGVIOLATIONDELAY 0
#define MAX_SHARINGVIOLATIONDELAY 1000
//
// Lock violation delay
//
#define DEF_LOCKVIOLATIONDELAY 250 // milliseconds
#define MIN_LOCKVIOLATIONDELAY 0
#define MAX_LOCKVIOLATIONDELAY 1000
#define DEF_LOCKVIOLATIONOFFSET 0xEF000000
#define MIN_LOCKVIOLATIONOFFSET 0
#define MAX_LOCKVIOLATIONOFFSET 0xFFFFFFFF
//
// length to switchover to mdl reads
//
#define DEF_MDLREADSWITCHOVER 1024
#define MIN_MDLREADSWITCHOVER 512
#define MAX_MDLREADSWITCHOVER 65535
//
// Number of closed RFCBs that can be cached
//
#define DEF_CACHEDOPENLIMIT 10
#define MIN_CACHEDOPENLIMIT 0
#define MAX_CACHEDOPENLIMIT 65535
//
// Number of directory names to cache for quick checkpath calls
//
#define DEF_CACHEDDIRECTORYLIMIT 5
#define MIN_CACHEDDIRECTORYLIMIT 0
#define MAX_CACHEDDIRECTORYLIMIT 65535
//
// Max length for a copy buffer operation, as opposed to taking the
// NDIS buffer in total.
//
#define DEF_MAXCOPYLENGTH 512
#define MIN_MAXCOPYLENGTH 40
#define MAX_MAXCOPYLENGTH 65535
//
// *** Change the following defines to limit WinNT (vs. NTAS) parameters.
//
// *** If you make a change here, you need to make the same change in
// srv\srvconfg.h!
#define MAX_USERS_WKSTA 10
#define MAX_USERS_PERSONAL 5
#define MAX_USERS_WEB_BLADE 10
#define MAX_USERS_EMBEDDED 10
#define MAX_MAXWORKITEMS_EMBEDDED 256
#define MAX_THREADS_EMBEDDED 5
#define DEF_MAXMPXCT_EMBEDDED 16
#define MAX_MAXWORKITEMS_WKSTA 64
#define MAX_THREADS_WKSTA 5
#define DEF_MAXMPXCT_WKSTA 10 // since there are fewer workitems on a wksta
#endif // ifndef _SRVCONFG_