420 lines
9.1 KiB
C
420 lines
9.1 KiB
C
/*++
|
||
|
||
Copyright (c) 1989 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
srvconfg.h
|
||
|
||
Abstract:
|
||
|
||
This module defines global configuration data for the LAN Manager
|
||
server.
|
||
|
||
Author:
|
||
|
||
Chuck Lenzmeier (chuckl) 31-Dec-1989
|
||
|
||
Revision History:
|
||
|
||
--*/
|
||
|
||
#ifndef _SRVCONFG_
|
||
#define _SRVCONFG_
|
||
|
||
//#include <ntos.h>
|
||
|
||
//#include "srvconst.h"
|
||
|
||
//
|
||
// All global variables referenced in this module are defined in
|
||
// srvconfg.c. See that module for complete descriptions.
|
||
//
|
||
// The variables referenced herein, because they are part of the driver
|
||
// image, are not pageable.
|
||
//
|
||
|
||
|
||
//
|
||
// Product type and server size.
|
||
//
|
||
|
||
extern BOOLEAN SrvProductTypeServer; // FALSE for Workstation, TRUE for Server
|
||
extern ULONG SrvServerSize;
|
||
|
||
//
|
||
// Server "heuristics", enabling various capabilities.
|
||
//
|
||
|
||
extern BOOLEAN SrvEnableOplocks;
|
||
extern BOOLEAN SrvEnableFcbOpens;
|
||
extern BOOLEAN SrvEnableSoftCompatibility;
|
||
extern BOOLEAN SrvEnableRawMode;
|
||
|
||
//
|
||
// Receive buffer size, receive work item count, and receive IRP stack
|
||
// size.
|
||
//
|
||
|
||
extern CLONG SrvReceiveBufferLength;
|
||
extern CLONG SrvReceiveBufferSize;
|
||
|
||
extern CLONG SrvInitialReceiveWorkItemCount;
|
||
extern CLONG SrvMaxReceiveWorkItemCount;
|
||
|
||
extern CLONG SrvInitialRawModeWorkItemCount;
|
||
extern CLONG SrvMaxRawModeWorkItemCount;
|
||
|
||
extern CCHAR SrvReceiveIrpStackSize;
|
||
extern CLONG SrvReceiveIrpSize;
|
||
extern CLONG SrvReceiveMdlSize;
|
||
extern CLONG SrvMaxMdlSize;
|
||
|
||
//
|
||
// Minimum negotiated buffer size we'll allow from a client
|
||
//
|
||
extern CLONG SrvMinClientBufferSize;
|
||
|
||
//
|
||
// Minimum and maximum number of free connections for an endpoint. When
|
||
// the minimum is reached, the resource thread creates more. When the
|
||
// maximum is reached, connections are closed as they are disconnected.
|
||
//
|
||
|
||
extern ULONG SrvFreeConnectionMinimum;
|
||
extern ULONG SrvFreeConnectionMaximum;
|
||
|
||
//
|
||
// Initial and maximum table sizes.
|
||
//
|
||
|
||
extern USHORT SrvInitialSessionTableSize;
|
||
extern USHORT SrvMaxSessionTableSize;
|
||
|
||
extern USHORT SrvInitialTreeTableSize;
|
||
extern USHORT SrvMaxTreeTableSize;
|
||
|
||
extern USHORT SrvInitialFileTableSize;
|
||
extern USHORT SrvMaxFileTableSize;
|
||
|
||
extern USHORT SrvInitialSearchTableSize;
|
||
extern USHORT SrvMaxSearchTableSize;
|
||
|
||
//
|
||
// 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.
|
||
//
|
||
|
||
extern LARGE_INTEGER SrvSearchMaxTimeout;
|
||
|
||
//
|
||
// Should we remove duplicate searches?
|
||
//
|
||
|
||
extern BOOLEAN SrvRemoveDuplicateSearches;
|
||
|
||
//
|
||
// restrict null session access ?
|
||
//
|
||
|
||
extern BOOLEAN SrvRestrictNullSessionAccess;
|
||
|
||
//
|
||
// This flag is needed to enable old (snowball) clients to connect to the
|
||
// server over direct hosted ipx. It is disabled by default because
|
||
// snowball ipx clients don't do pipes correctly.
|
||
//
|
||
|
||
extern BOOLEAN SrvEnableWfW311DirectIpx;
|
||
|
||
//
|
||
// The maximum number of threads allowed on each work queue. The
|
||
// server tries to minimize the number of threads -- this value is
|
||
// just to keep the threads from getting out of control.
|
||
//
|
||
// Since the blocking work queue is not per-processor, the max thread
|
||
// count for the blocking work queue is the following value times the
|
||
// number of processors in the system.
|
||
//
|
||
extern ULONG SrvMaxThreadsPerQueue;
|
||
|
||
//
|
||
// Load balancing variables
|
||
//
|
||
extern ULONG SrvPreferredAffinity;
|
||
extern ULONG SrvOtherQueueAffinity;
|
||
extern ULONG SrvBalanceCount;
|
||
extern LARGE_INTEGER SrvQueueCalc;
|
||
|
||
//
|
||
// Scavenger thread idle wait time.
|
||
//
|
||
|
||
extern LARGE_INTEGER SrvScavengerTimeout;
|
||
extern ULONG SrvScavengerTimeoutInSeconds;
|
||
|
||
//
|
||
// Various information variables for the server.
|
||
//
|
||
|
||
extern USHORT SrvMaxMpxCount;
|
||
|
||
//
|
||
// 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.
|
||
//
|
||
|
||
extern CLONG SrvMaxNumberVcs;
|
||
|
||
//
|
||
// Receive work item thresholds
|
||
//
|
||
|
||
//
|
||
// The minimum desirable number of free receive work items.
|
||
//
|
||
|
||
extern CLONG SrvMinReceiveQueueLength;
|
||
|
||
//
|
||
// The number of freed RFCBs that we keep internally, per processor
|
||
//
|
||
extern CLONG SrvMaxFreeRfcbs;
|
||
|
||
//
|
||
// The number of freed MFCBs that we keep internally, per processor
|
||
//
|
||
extern CLONG SrvMaxFreeMfcbs;
|
||
|
||
//
|
||
// Enforced maximum size of a saved pool chunk per processor
|
||
//
|
||
extern CLONG SrvMaxPagedPoolChunkSize;
|
||
|
||
//
|
||
// Enforced maximum size of a saved non paged pool chunk per processor
|
||
//
|
||
extern CLONG SrvMaxNonPagedPoolChunkSize;
|
||
|
||
//
|
||
// The minimum number of free receive work items available before
|
||
// the server will start processing a potentially blocking SMB.
|
||
//
|
||
|
||
extern CLONG SrvMinFreeWorkItemsBlockingIo;
|
||
|
||
//
|
||
// The number of cached directory names per connection
|
||
//
|
||
extern CLONG SrvMaxCachedDirectory;
|
||
|
||
//
|
||
// Size of the shared memory section used for communication between the
|
||
// server and XACTSRV.
|
||
//
|
||
|
||
extern LARGE_INTEGER SrvXsSectionSize;
|
||
|
||
//
|
||
// The time sessions may be idle before they are automatically
|
||
// disconnected. The scavenger thread does the disconnecting.
|
||
//
|
||
|
||
extern LARGE_INTEGER SrvAutodisconnectTimeout;
|
||
extern ULONG SrvIpxAutodisconnectTimeout;
|
||
|
||
//
|
||
// The time a connection structure can hang around without any sessions
|
||
//
|
||
extern ULONG SrvConnectionNoSessionsTimeout;
|
||
|
||
//
|
||
// The maximum number of users the server will permit.
|
||
//
|
||
|
||
extern ULONG SrvMaxUsers;
|
||
|
||
//
|
||
// Priority of server worker and blocking threads.
|
||
//
|
||
|
||
extern KPRIORITY SrvThreadPriority;
|
||
|
||
//
|
||
// The time to wait before timing out a wait for oplock break.
|
||
//
|
||
|
||
extern LARGE_INTEGER SrvWaitForOplockBreakTime;
|
||
|
||
//
|
||
// The time to wait before timing out a an oplock break request.
|
||
//
|
||
|
||
extern LARGE_INTEGER SrvWaitForOplockBreakRequestTime;
|
||
|
||
//
|
||
// This BOOLEAN determines whether files with oplocks that have had
|
||
// an oplock break outstanding for longer than SrvWaitForOplockBreakTime
|
||
// should be closed or if the subsequest opens should fail.
|
||
//
|
||
|
||
extern BOOLEAN SrvEnableOplockForceClose;
|
||
|
||
//
|
||
// Overall limits on server memory usage.
|
||
//
|
||
|
||
extern ULONG SrvMaxPagedPoolUsage;
|
||
extern ULONG SrvMaxNonPagedPoolUsage;
|
||
|
||
//
|
||
// This BOOLEAN indicates whether the forced logoff code in the scavenger
|
||
// thread should actually disconnect a user that remains on beyond
|
||
// his logon hours, or just send messages coaxing them to log off.
|
||
//
|
||
|
||
extern BOOLEAN SrvEnableForcedLogoff;
|
||
|
||
//
|
||
// The delay and throughput thresholds used to determine if a link
|
||
// is unreliable. The delay is in 100ns. The Throughput is in bytes/s
|
||
// SrvLinkInfoValidTime is the time within which the link info is still
|
||
// considered valid.
|
||
//
|
||
|
||
extern LARGE_INTEGER SrvMaxLinkDelay;
|
||
extern LARGE_INTEGER SrvMinLinkThroughput;
|
||
extern LARGE_INTEGER SrvLinkInfoValidTime;
|
||
extern LONG SrvScavengerUpdateQosCount;
|
||
|
||
//
|
||
// Used to determine how long a work context block can stay idle
|
||
// before being freed.
|
||
//
|
||
|
||
extern ULONG SrvWorkItemMaxIdleTime;
|
||
|
||
//
|
||
// Alert information
|
||
//
|
||
|
||
extern LARGE_INTEGER SrvAlertSchedule;
|
||
extern ULONG SrvAlertMinutes;
|
||
extern ULONG SrvFreeDiskSpaceThreshold;
|
||
extern ULONG SrvFreeDiskSpaceCeiling;
|
||
extern ULONG SrvDiskConfiguration;
|
||
|
||
//
|
||
// List of pipes and shares that can be opened by the NULL session.
|
||
//
|
||
|
||
extern PWSTR *SrvNullSessionPipes;
|
||
extern PWSTR *SrvNullSessionShares;
|
||
|
||
#if SRVNTVERCHK
|
||
//
|
||
// List of domain names that we disallow
|
||
//
|
||
extern PWSTR *SrvInvalidDomainNames;
|
||
#endif
|
||
|
||
//
|
||
// List of pipes that are not remapped, even when we are in a cluster environment
|
||
//
|
||
extern PWSTR *SrvNoRemapPipeNames;
|
||
|
||
//
|
||
// List of error codes that we do not log to the error log
|
||
//
|
||
extern NTSTATUS SrvErrorLogIgnore[ SRVMAXERRLOGIGNORE + 1 ];
|
||
|
||
//
|
||
// List of pipes that require a license from the license server
|
||
//
|
||
extern PWSTR *SrvPipesNeedLicense;
|
||
|
||
//
|
||
// Interval at which SMB statistics are calculated.
|
||
//
|
||
|
||
#define STATISTICS_SMB_INTERVAL 16
|
||
|
||
//
|
||
// Interval at which each thread determines the current system time
|
||
//
|
||
#define TIME_SMB_INTERVAL 16
|
||
|
||
//
|
||
// Delay and number of retries for opens returning sharing violation
|
||
//
|
||
|
||
extern ULONG SrvSharingViolationRetryCount;
|
||
extern LARGE_INTEGER SrvSharingViolationDelay;
|
||
|
||
//
|
||
// Delay for lock requests returning lock violation
|
||
//
|
||
|
||
extern ULONG SrvLockViolationDelay;
|
||
extern LARGE_INTEGER SrvLockViolationDelayRelative;
|
||
extern ULONG SrvLockViolationOffset;
|
||
|
||
//
|
||
// Upper limit for searches.
|
||
//
|
||
|
||
extern ULONG SrvMaxOpenSearches;
|
||
|
||
//
|
||
// length to switchover to mdl read
|
||
//
|
||
|
||
extern ULONG SrvMdlReadSwitchover;
|
||
extern ULONG SrvMpxMdlReadSwitchover;
|
||
|
||
|
||
//
|
||
// maximum length of buffers to copy, rather than take the whole buffer.
|
||
// currently this is only enabled for WRITE_MPX on direct host IPX.
|
||
//
|
||
|
||
extern ULONG SrvMaxCopyLength;
|
||
|
||
//
|
||
// Globally unique id identifying this server
|
||
//
|
||
|
||
extern
|
||
GUID ServerGuid;
|
||
|
||
//
|
||
// Number of open files that can be cached after close.
|
||
//
|
||
|
||
extern ULONG SrvCachedOpenLimit;
|
||
|
||
//
|
||
// Does the server support compressed read/write transfers?
|
||
//
|
||
extern BOOLEAN SrvSupportsCompression;
|
||
|
||
//
|
||
// *** Change the following defines to limit WinNT (vs. NTAS) parameters.
|
||
//
|
||
// *** If you make a change here, you need to make the same change in
|
||
// srvsvc\server\srvconfg.h!
|
||
|
||
#define MAX_USERS_WKSTA 10
|
||
#define MAX_MAXWORKITEMS_WKSTA 64
|
||
#define MAX_THREADS_WKSTA 5
|
||
|
||
#define MAX_USERS_PERSONAL 5
|
||
#define MAX_USERS_WEB_BLADE 10
|
||
|
||
|
||
#endif // def _SRVCONFG_
|
||
|