windows-nt/Source/XPSP1/NT/base/fs/dfs/dfsm/server/headers.hxx
2020-09-26 16:20:57 +08:00

145 lines
3.9 KiB
C++

//-------------------------------------------------------------------------
//
// File: Headers.hxx
//
// Contents: This has all the macros that are necessary for the Klass code
// including the DEBUG macros etc. Some declarations for SmartPs.
//
// History: 05-10-1993 SudK Created.
// 11-29-1993 SudK Cleanup for CR changes.
//
//-------------------------------------------------------------------------
#ifndef _DFS_HEADER_HXX_DEFINED
#define _DFS_HEADER_HXX_DEFINED
extern "C" {
#include <ntos.h>
}
#include <ntrtl.h>
#include <nturtl.h>
#include <tdi.h>
#include <windows.h>
#include <ole2.h>
#include "lm.h"
#include "lmdfs.h"
#include "lmerrext.h"
#include "netdfs.h"
#include "dfspriv.h"
#include "dfserr.h"
#include "dfsmerr.h"
#include "dfsstr.h"
#include "nodetype.h"
#include "dfsmrshl.h"
#include "upkt.h"
#include "dfsm.hxx"
#include "cref.hxx"
#include "cstorage.hxx"
#include "cregstor.hxx"
#include "cldpstor.hxx"
#include "message.hxx"
#include "csites.hxx"
extern "C" {
#include "recover.hxx"
}
//
// Handy macro for printing out errors to the debugger
//
#if DBG
#define CHECK_RESULT(dwErr) \
if (dwErr != ERROR_SUCCESS) \
IDfsVolInlineDebOut( \
(DEB_ERROR, \
"ERROR RETURN <%s @line %d> -> %08lx\n", \
__FILE__, __LINE__, dwErr));
#else
#define CHECK_RESULT(dwErr)
#endif
//
// Some global data. These will be initialized at service startup time, and
// then left unmodified.
//
#define VOL_OBJ_VERSION_NUMBER 0x03
extern CRITICAL_SECTION globalCritSec;
extern ULONG GTimeout;
#define ENTER_DFSM_OPERATION \
EnterCriticalSection(&globalCritSec);
#define EXIT_DFSM_OPERATION \
LeaveCriticalSection(&globalCritSec);
extern ULONG ulDfsManagerType;
extern LPWSTR pwszDomainName;
extern LPWSTR pwszComputerName;
extern LPWSTR pwszDfsRootName;
extern ULONG cbOpenIfJPEa;
extern LPWSTR pwszLocalDomainDS;
extern PFILE_FULL_EA_INFORMATION pOpenIfJPEa;
extern CStorageDirectory *pDfsmStorageDirectory;
extern CSites *pDfsmSites;
extern LPWSTR pwszDSMachineName;
extern WCHAR wszDSMachineName[];
extern LPWSTR gConfigurationDN;
extern WCHAR DfsConfigContainer[];
extern "C" {
extern ULONG DfsSvcVerbose;
extern ULONG DfsSvcLdap;
extern ULONG DfsEventLog;
extern ULONG DfsDnsConfig;
}
//
// Following are the recovery states that can be associated with the
// volumes. These are only the operations that can be in progress i.e. the
// first part of the recovery state. The exact stage of operations are
// denoted by the states below this.
//
#define DFS_RECOVERY_STATE_NONE (0x0000)
#define DFS_RECOVERY_STATE_CREATING (0x0001)
#define DFS_RECOVERY_STATE_ADD_SERVICE (0x0002)
#define DFS_RECOVERY_STATE_REMOVE_SERVICE (0x0003)
#define DFS_RECOVERY_STATE_DELETE (0x0004)
#define DFS_RECOVERY_STATE_MOVE (0x0005)
typedef enum _DFS_RECOVERY_STATE {
DFS_OPER_STAGE_START=1,
DFS_OPER_STAGE_SVCLIST_UPDATED=2,
DFS_OPER_STAGE_INFORMED_SERVICE=3,
DFS_OPER_STAGE_INFORMED_PARENT=4
} DFS_RECOVERY_STATE;
//
// Some MACROS to help in manipulating state and stage of VOL_RECOVERY_STATE.
//
#define DFS_COMPOSE_RECOVERY_STATE(op, s) ((op<<16)|(s))
#define DFS_SET_RECOVERY_STATE(State, s) ((State&0xffff)|(s<<16))
#define DFS_SET_OPER_STAGE(State, s) ((State&0xffff0000)|s)
#define DFS_GET_RECOVERY_STATE(s) ((s & 0xffff0000) >> 16)
#define DFS_GET_OPER_STAGE(s) (s & 0xffff)
#define LPWSTR_TO_OFFSET(f,b) \
(f) = (WCHAR *)((PCHAR)(f) - (ULONG_PTR)(b))
#endif // _DFS_HEADER_HXX_DEFINED