You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
251 lines
5.8 KiB
251 lines
5.8 KiB
|
|
/*++
|
|
|
|
Microsoft Windows NT RPC Name Service
|
|
Copyright (C) Microsoft Corporation, 1995 - 1999
|
|
|
|
Module Name:
|
|
|
|
globals.hxx
|
|
|
|
Abstract:
|
|
|
|
This module, contains all global definitions and declarations needed by
|
|
other modules, except those which depend on locator-related classes.
|
|
The latter are in "var.hxx".
|
|
|
|
Author:
|
|
|
|
Satish Thatte (SatishT) 08/16/95 Created all the code below except where
|
|
otherwise indicated.
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef _GLOBALS_
|
|
#define _GLOBALS_
|
|
|
|
typedef unsigned short STATUS;
|
|
|
|
#ifndef TRUE
|
|
#define TRUE 1
|
|
#define FALSE 0
|
|
#endif
|
|
|
|
#define IN // Attributes to describe parms on functions
|
|
#define OUT // for documention purposes only.
|
|
#define IO
|
|
#define OPT
|
|
|
|
#define WNL TEXT("\n")
|
|
|
|
// extern RPC_SYNTAX_IDENTIFIER NilSyntaxID;
|
|
|
|
// extern NSI_INTERFACE_ID_T NilNsiIfIdOnWire;
|
|
|
|
// extern NSI_UUID_T NilGlobalID;
|
|
|
|
const WCHAR NSnameDelimiter = L'/';
|
|
const WCHAR WStringTerminator = UNICODE_NULL;
|
|
|
|
|
|
#define RelativePrefix TEXT("/.:/")
|
|
#define GlobalPrefix TEXT("/.../")
|
|
#define LDAPPrefix TEXT("LDAP:")
|
|
|
|
#define RelativePrefixLength 4
|
|
#define GlobalPrefixLength 5
|
|
#define LDAPPrefixLength 5
|
|
#define DSDomainBeginLength 2
|
|
#define DSDomainEndLength 1
|
|
|
|
#define X500NameDelimiter TEXT("/CN=")
|
|
#define DNNamePrefix TEXT("CN=")
|
|
#define DNNameDelimiter TEXT(",")
|
|
#define DSDomainBegin TEXT("//")
|
|
#define DSDomainEnd TEXT('/')
|
|
#define DSDomainEndStr TEXT("/")
|
|
|
|
#define X500NameDelimiterLength 4
|
|
#define DNNamePrefixLength 3
|
|
#define DNNameDelimiterLength 1
|
|
|
|
// need to regularize these codes --
|
|
// punt for now since we are cloning the old locator
|
|
|
|
#define NSI_S_ENTRY_TYPE_MISMATCH 1112
|
|
#define NSI_S_INTERNAL_ERROR 1113
|
|
#define NSI_S_CORRUPTED_ENTRY 1114
|
|
#define NSI_S_HEAP_TRASHED 1115
|
|
#define NSI_S_UNMARSHALL_UNSUCCESSFUL 1116
|
|
#define NSI_S_UNSUPPORTED_BUFFER_TYPE 1117
|
|
#define NSI_S_ENTRY_NO_NEW_INFO 1118
|
|
#define NSI_S_DC_BINDING_FAILURE 1119
|
|
#define NSI_S_MAILSLOT_ERROR 1120
|
|
|
|
// This needs to go into rpcdce.h --
|
|
// punt for now since we are cloning the old locator
|
|
|
|
#define RPC_C_BINDING_MAX_COUNT 100
|
|
#define RPC_NS_HANDLE_LIFETIME 300 // this is in seconds
|
|
#define RPC_NS_MAX_CALLS 100
|
|
#define RPC_NS_MAX_THREADS 200
|
|
#define NET_REPLY_INITIAL_TIMEOUT 10000
|
|
#define CONNECTION_TIMEOUT 10
|
|
|
|
|
|
/* The following four constants affect compatibility with the old locator */
|
|
|
|
#define MAX_DOMAIN_NAME_LENGTH 20 // this is dictated by the old locator
|
|
#define MAX_ENTRY_NAME_LENGTH 100 // this is dictated by the old locator
|
|
#define NET_REPLY_BUFFER_SIZE 1000 // this is dictated by the old locator
|
|
#define NET_REPLY_MAILSLOT_BUFFER_SIZE 350 // nt5 mailslot size. This should be the size used
|
|
// in marshalling. Unmarshall uses the bigger size.
|
|
|
|
#define INITIAL_MAILSLOT_READ_WAIT 3000 // in milliseconds (for broadcasts)
|
|
// The master seems to be timing out.
|
|
|
|
typedef const WCHAR * const CONST_STRING_T;
|
|
|
|
#define MAX_CACHE_AGE (2*3600L) // Default expiration age (ditto)
|
|
|
|
#define CACHE_GRACE 5
|
|
|
|
/* interval between cleanup of delayed destruct objects, in seconds */
|
|
|
|
#define RPC_NS_CLEANUP_INTERVAL 300
|
|
|
|
extern unsigned long CurrentTime(void);
|
|
|
|
extern unsigned long LocatorCount;
|
|
// the version number of locator structure. (number of times locator structure was created.)
|
|
|
|
extern CReadWriteSection rwLocatorGuard;
|
|
|
|
void
|
|
StopLocator(
|
|
char * szReason,
|
|
long code = 0
|
|
);
|
|
|
|
STRING_T catenate(
|
|
STRING_T pszPrefix,
|
|
STRING_T pszSuffix
|
|
);
|
|
|
|
RPC_BINDING_HANDLE
|
|
MakeDClocTolocHandle(
|
|
STRING_T pszDCName
|
|
);
|
|
|
|
inline void
|
|
Raise(unsigned long ErrorCode) {
|
|
RaiseException(
|
|
ErrorCode,
|
|
EXCEPTION_NONCONTINUABLE,
|
|
0,
|
|
NULL
|
|
);
|
|
}
|
|
|
|
STRING_T
|
|
makeBindingStringWithObject(
|
|
STRING_T binding,
|
|
STRING_T object
|
|
);
|
|
|
|
void NSI_NS_HANDLE_T_done(
|
|
/* [out][in] */ NSI_NS_HANDLE_T __RPC_FAR *inq_context,
|
|
/* [out] */ UNSIGNED16 __RPC_FAR *status);
|
|
|
|
BOOL
|
|
IsStillCurrent(
|
|
ULONG ulCacheTime,
|
|
ULONG ulTolerance
|
|
);
|
|
|
|
|
|
typedef int (__cdecl * _PNH)( size_t );
|
|
|
|
void *new_handler(size_t);
|
|
|
|
STRING_T
|
|
makeGlobalName(
|
|
const STRING_T szDomainName,
|
|
const STRING_T szEntryName
|
|
);
|
|
|
|
extern
|
|
RPC_BINDING_HANDLE
|
|
ConnectToMasterLocator(
|
|
ULONG& Status
|
|
);
|
|
|
|
int
|
|
IsNormalCode(
|
|
IN ULONG StatusCode
|
|
);
|
|
|
|
|
|
void InitializeLocator();
|
|
|
|
inline int
|
|
IsNilIfId(
|
|
RPC_SYNTAX_IDENTIFIER* IID
|
|
)
|
|
/*++
|
|
Routine Description:
|
|
|
|
Check the given interface to see if it has a null UUID in it.
|
|
|
|
Arguments:
|
|
|
|
IID - input interface
|
|
|
|
Returns:
|
|
|
|
TRUE, FALSE
|
|
--*/
|
|
{
|
|
RPC_STATUS status;
|
|
return UuidIsNil(&(IID->SyntaxGUID),&status);
|
|
}
|
|
|
|
|
|
unsigned
|
|
RandomBit(
|
|
unsigned long *pState
|
|
);
|
|
|
|
|
|
BOOL
|
|
hasWhacksInMachineName(
|
|
STRING_T szName
|
|
);
|
|
|
|
enum ExportType {
|
|
Local,
|
|
NonLocal
|
|
};
|
|
|
|
extern CReadWriteSection rwEntryGuard; // single shared guard for all local entries
|
|
extern CReadWriteSection rwNonLocalEntryGuard; // single shared guard for all nonlocal entries
|
|
extern CReadWriteSection rwFullEntryGuard; // single shared guard for all full entries
|
|
extern CPrivateCriticalSection csBindingBroadcastGuard;
|
|
extern CPrivateCriticalSection csMasterBroadcastGuard;
|
|
extern CPrivateCriticalSection csDSSettingsGuard; // critical section for reading vals frm DS.
|
|
|
|
extern BOOL fDC;
|
|
|
|
BOOL
|
|
IsClientLocal (
|
|
void
|
|
);
|
|
|
|
#define CheckForLocalClientIfNecessary() \
|
|
if (!fDC && !IsClientLocal()) \
|
|
{ \
|
|
RpcRaiseException(RPC_S_ACCESS_DENIED); \
|
|
}
|
|
|
|
#endif // _GLOBALS_
|