240 lines
5.6 KiB
C
240 lines
5.6 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1995 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
defs.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Main definitions of the jetconv.exe process
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Sanjay Anand (SanjayAn) Nov. 14, 1995
|
||
|
|
||
|
Environment:
|
||
|
|
||
|
User mode
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
Sanjay Anand (SanjayAn) Nov. 14, 1995
|
||
|
Created
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include <nt.h>
|
||
|
#include <ntrtl.h>
|
||
|
#include <nturtl.h>
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <windows.h>
|
||
|
|
||
|
#include "locmsg.h"
|
||
|
|
||
|
#define NUM_SERVICES 3
|
||
|
#define MAX_NAME_LEN 20
|
||
|
#define PAD 44444
|
||
|
|
||
|
#define JCONVMUTEXNAME TEXT("JCMUTEX")
|
||
|
|
||
|
#define JCONVSHAREDMEMNAME TEXT("JCSHAREDMEM")
|
||
|
|
||
|
#define SYSTEM_ROOT TEXT("%systemroot%\\system32\\")
|
||
|
|
||
|
#define CONVERT_EXE_PATH TEXT("%systemroot%\\system32\\upg351db.exe")
|
||
|
|
||
|
|
||
|
#define JCONV_LOG_KEY_PREFIX TEXT("System\\CurrentControlSet\\Services\\EventLog\\Application\\")
|
||
|
|
||
|
#define WINS_REGISTRY_SERVICE_PATH TEXT("System\\CurrentControlSet\\Services\\Wins")
|
||
|
#define DHCP_REGISTRY_SERVICE_PATH TEXT("System\\CurrentControlSet\\Services\\DHCPServer")
|
||
|
#define RPL_REGISTRY_SERVICE_PATH TEXT("System\\CurrentControlSet\\Services\\RemoteBoot")
|
||
|
|
||
|
#define WINS_REGISTRY_PARAMETERS_PATH TEXT("System\\CurrentControlSet\\Services\\Wins\\Parameters")
|
||
|
#define DHCP_REGISTRY_PARAMETERS_PATH TEXT("System\\CurrentControlSet\\Services\\DHCPServer\\Parameters")
|
||
|
#define RPL_REGISTRY_PARAMETERS_PATH TEXT("System\\CurrentControlSet\\Services\\RemoteBoot\\Parameters")
|
||
|
|
||
|
#define WINS_REGISTRY_DBFILE_PATH TEXT("DbFileNm")
|
||
|
#define DHCP_REGISTRY_DBFILE_PATH TEXT("DatabasePath")
|
||
|
#define DHCP_REGISTRY_DBFILE_NAME TEXT("DatabaseName")
|
||
|
#define RPL_REGISTRY_DBFILE_PATH TEXT("Directory")
|
||
|
|
||
|
#define WINS_REGISTRY_LOGFILE_PATH TEXT("LogFilePath")
|
||
|
#define DHCP_REGISTRY_LOGFILE_PATH TEXT("LogFilePath")
|
||
|
// no such path
|
||
|
// #define RPL_REGISTRY_LOGFILE_PATH TEXT("LogFilePath")
|
||
|
|
||
|
#define WINS_REGISTRY_BACKUP_PATH TEXT("BackupDirPath")
|
||
|
#define DHCP_REGISTRY_BACKUP_PATH TEXT("BackupDatabasePath")
|
||
|
// no such path
|
||
|
// #define RPL_REGISTRY_BACKUP_PATH TEXT("BackupDatabasePath")
|
||
|
|
||
|
#define DEFAULT_WINS_DBFILE_PATH TEXT("%systemroot%\\system32\\Wins\\wins.mdb")
|
||
|
#define DEFAULT_DHCP_DBFILE_PATH TEXT("%systemroot%\\system32\\Dhcp\\dhcp.mdb")
|
||
|
#define DEFAULT_RPL_DBFILE_PATH TEXT("%systemroot%\\Rpl\\rplsvc.mdb")
|
||
|
|
||
|
#define DEFAULT_WINS_LOGFILE_PATH TEXT("%systemroot%\\system32\\Wins")
|
||
|
#define DEFAULT_DHCP_LOGFILE_PATH TEXT("%systemroot%\\system32\\Dhcp")
|
||
|
#define DEFAULT_RPL_LOGFILE_PATH TEXT("%systemroot%\\Rpl")
|
||
|
|
||
|
#define DEFAULT_WINS_BACKUP_PATH TEXT("")
|
||
|
#define DEFAULT_DHCP_BACKUP_PATH TEXT("%systemroot%\\system32\\Dhcp\\Backup")
|
||
|
#define DEFAULT_RPL_BACKUP_PATH TEXT("%systemroot%\\Rpl\\Backup")
|
||
|
|
||
|
#define DEFAULT_WINS_SYSTEM_PATH TEXT("%systemroot%\\system32\\Wins\\system.mdb")
|
||
|
#define DEFAULT_DHCP_SYSTEM_PATH TEXT("%systemroot%\\system32\\Dhcp\\system.mdb")
|
||
|
#define DEFAULT_RPL_SYSTEM_PATH TEXT("%systemroot%\\Rpl\\system.mdb")
|
||
|
|
||
|
//
|
||
|
// Jet500 to Jet600 definitions, etc.
|
||
|
//
|
||
|
|
||
|
#define CONVERT_EXE_PATH_ESE TEXT("%systemroot%\\system32\\esentutl.exe")
|
||
|
|
||
|
#define DEFAULT_WINS_BACKUP_PATH_ESE TEXT("") // TEXT("%systemroot%\\system32\\Wins\\winsb.mdb")
|
||
|
#define DEFAULT_DHCP_BACKUP_PATH_ESE TEXT("%systemroot%\\system32\\Dhcp\\Backup\\dhcp.mdb")
|
||
|
#define DEFAULT_RPL_BACKUP_PATH_ESE TEXT("%systemroot%\\Rpl\\Backup\\rplsvc.mdb")
|
||
|
|
||
|
#define DEFAULT_WINS_PRESERVE_PATH_ESE TEXT("%systemroot%\\system32\\Wins\\40Db\\wins.mdb")
|
||
|
#define DEFAULT_DHCP_PRESERVE_PATH_ESE TEXT("%systemroot%\\system32\\Dhcp\\40Db\\dhcp.mdb")
|
||
|
#define DEFAULT_RPL_PRESERVE_PATH_ESE TEXT("")
|
||
|
|
||
|
#if DBG
|
||
|
|
||
|
#define MYDEBUG(_Print) { \
|
||
|
if (JCDebugLevel == 1) { \
|
||
|
DbgPrint ("JCONV: "); \
|
||
|
DbgPrint _Print; \
|
||
|
} else { \
|
||
|
printf ("JCONV: "); \
|
||
|
printf _Print; \
|
||
|
}\
|
||
|
}
|
||
|
|
||
|
#else
|
||
|
|
||
|
#define MYDEBUG(_Print)
|
||
|
|
||
|
#endif
|
||
|
|
||
|
typedef enum _SERVICES {
|
||
|
|
||
|
DHCP,
|
||
|
|
||
|
WINS,
|
||
|
|
||
|
RPL
|
||
|
|
||
|
} SERVICES, *PSERVICES;
|
||
|
|
||
|
typedef struct _SERVICE_INFO {
|
||
|
|
||
|
TCHAR ServiceName[MAX_NAME_LEN];
|
||
|
|
||
|
BOOLEAN Installed;
|
||
|
|
||
|
BOOLEAN DefaultDbPath;
|
||
|
|
||
|
BOOLEAN DefaultLogFilePath;
|
||
|
|
||
|
BOOLEAN DBConverted;
|
||
|
|
||
|
BOOLEAN ServiceStarted;
|
||
|
|
||
|
TCHAR DBPath[MAX_PATH];
|
||
|
|
||
|
TCHAR SystemFilePath[MAX_PATH];
|
||
|
|
||
|
TCHAR LogFilePath[MAX_PATH];
|
||
|
|
||
|
TCHAR BackupPath[MAX_PATH];
|
||
|
|
||
|
//
|
||
|
// ESE has a different backup path specification format
|
||
|
// Which gives rise to the following spud.
|
||
|
//
|
||
|
|
||
|
TCHAR ESEBackupPath[MAX_PATH];
|
||
|
|
||
|
TCHAR ESEPreservePath[MAX_PATH];
|
||
|
|
||
|
LARGE_INTEGER DBSize;
|
||
|
|
||
|
} SERVICE_INFO, *PSERVICE_INFO;
|
||
|
|
||
|
typedef struct _SHARED_MEM {
|
||
|
|
||
|
BOOLEAN InvokedByService[NUM_SERVICES];
|
||
|
|
||
|
} SHARED_MEM, *PSHARED_MEM;
|
||
|
|
||
|
extern TCHAR SystemDrive[4];
|
||
|
extern LONG JCDebugLevel;
|
||
|
extern HANDLE EventLogHandle;
|
||
|
extern PSHARED_MEM shrdMemPtr;
|
||
|
extern HANDLE hMutex;
|
||
|
extern HANDLE hFileMapping;
|
||
|
extern BOOLEAN Jet200;
|
||
|
|
||
|
//
|
||
|
// Prototypes
|
||
|
//
|
||
|
NTSTATUS
|
||
|
JCRegisterEventSrc();
|
||
|
|
||
|
NTSTATUS
|
||
|
JCDeRegisterEventSrc();
|
||
|
|
||
|
VOID
|
||
|
JCLogEvent(
|
||
|
IN DWORD EventId,
|
||
|
IN LPSTR MsgTypeString1,
|
||
|
IN LPSTR MsgTypeString2,
|
||
|
IN LPSTR MsgTypeString3
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
JCReadRegistry(
|
||
|
IN PSERVICE_INFO pServiceInfo
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
JCGetMutex (
|
||
|
IN HANDLE mutex,
|
||
|
IN DWORD To
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
JCFreeMutex (
|
||
|
IN HANDLE mutex
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
JCCallUpg(
|
||
|
IN SERVICES Id,
|
||
|
IN PSERVICE_INFO pServiceInfo
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
JCConvert(
|
||
|
IN PSERVICE_INFO pServiceInfo
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
DeleteLogFiles(
|
||
|
TCHAR * LogFilePath
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
PreserveCurrentDb( TCHAR * szBasePath,
|
||
|
TCHAR * szSourceDb,
|
||
|
TCHAR * szPreserveDbPath,
|
||
|
TCHAR * szPreserveDB
|
||
|
);
|
||
|
|
||
|
|