Leaked source code of windows server 2003
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.
 
 
 
 
 
 

280 lines
6.2 KiB

//+--------------------------------------------------------------------------
//
// Copyright (c) 1997-1999 Microsoft Corporation
//
// File: version.h
//
// Contents:
//
// History:
//
//---------------------------------------------------------------------------
#ifndef __TLS_VERSION_H__
#define __TLS_VERSION_H__
#include "JetBlue.h"
#include "TlsDb.h"
#define VERSION_TABLE_PROCESS_VERSION 0x00000001
#define VERSION_TABLE_PROCESS_INSTALLID 0x00000002
#define VERSION_TABLE_PROCESS_DOMAINID 0x00000004
//
// Only one row in Version
//
#define VERSION_TABLE_NAME _TEXT("Version")
#define VERSION_TABLE_VERSION _TEXT("DataBaseVersion")
#define VERSION_TABLE_INSTALLID _TEXT("TLSSetupId")
#define VERSION_TABLE_DOMAINID _TEXT("TLSDomainSetupId")
typedef struct __Version : public TLSReplVersion
{
//----------------------------------------------------
__Version()
{
pbDomainSid = NULL;
dwVersion = 0;
cbDomainSid = 0;
memset(szInstallId, 0, sizeof(szInstallId));
}
//----------------------------------------------------
~__Version()
{
if(pbDomainSid != NULL)
{
FreeMemory(pbDomainSid);
}
}
//----------------------------------------------------
__Version(const __Version& v)
{
*this = v;
}
//----------------------------------------------------
__Version&
operator=(const TLSReplVersion& v)
{
BOOL bSuccess;
dwVersion = v.dwVersion;
_tcscpy(szInstallId, v.szInstallId);
bSuccess = TLSDBCopySid(
v.pbDomainSid,
v.cbDomainSid,
(PSID *)&pbDomainSid,
&cbDomainSid
);
JB_ASSERT(bSuccess == TRUE);
return *this;
}
__Version&
operator=(const __Version& v)
{
BOOL bSuccess;
if(this == &v)
return *this;
dwVersion = v.dwVersion;
_tcscpy(szInstallId, v.szInstallId);
bSuccess = TLSDBCopySid(
v.pbDomainSid,
v.cbDomainSid,
(PSID *)&pbDomainSid,
&cbDomainSid
);
JB_ASSERT(bSuccess == TRUE);
return *this;
}
} TLSVersion;
//
// Index on version ID
//
#define VERSION_ID_INDEXNAME \
VERSION_TABLE_NAME SEPERATOR VERSION_TABLE_VERSION SEPERATOR INDEXNAME
//
// Primary index - "+DataBaseVersion\0"
//
#define VERSION_ID_INDEXNAME_INDEXKEY \
INDEX_SORT_ASCENDING VERSION_TABLE_VERSION INDEX_END_COLNAME
typedef struct __VersionIndexOnVersionId : public JBKeyBase {
static LPCTSTR pszIndexName;
static LPCTSTR pszIndexKey;
DWORD dwVersion;
//-------------------------------------------------
__VersionIndexOnVersionId(
const TLSVersion* v=NULL
) :
JBKeyBase()
/*++
++*/
{
if(v)
{
*this = *v;
}
}
//-------------------------------------------------
__VersionIndexOnVersionId(
const TLSVersion& v
) :
JBKeyBase()
/*++
++*/
{
*this = v;
}
__VersionIndexOnVersionId&
operator=(const TLSVersion& v) {
dwVersion = v.dwVersion;
SetEmptyValue(FALSE);
return *this;
}
//--------------------------------------------------------
DWORD
GetNumKeyComponents() { return 1; }
inline LPCTSTR
GetIndexName()
{
return pszIndexName;
}
inline LPCTSTR
GetIndexKey()
{
return pszIndexKey;
}
inline BOOL
GetSearchKey(
DWORD dwComponentIndex,
PVOID* pbData,
unsigned long* cbData,
JET_GRBIT* grbit,
DWORD dwSearchParm
)
/*
*/
{
if(dwComponentIndex >= GetNumKeyComponents())
{
JB_ASSERT(FALSE);
return FALSE;
}
*pbData = &(dwVersion);
*cbData = sizeof(dwVersion);
*grbit = JET_bitNewKey;
return TRUE;
}
} TLSVersionIndexVersionId;
//----------------------------------------------------------------------
class VersionTable : public TLSTable<TLSVersion> {
static LPCTSTR pszTableName;
public:
TLSColumnDword dwVersion;
TLSColumnText szInstallId;
TLSColumnBinary pbDomainSid;
//------------------------------------------------
virtual LPCTSTR
GetTableName() {
return pszTableName;
}
//------------------------------------------------
VersionTable(
JBDatabase& database
) : TLSTable<TLSVersion>(database)
/*
*/
{
}
//------------------------------------------------
virtual BOOL
ResolveToTableColumn();
//----------------------------------------------------
virtual BOOL
FetchRecord(
TLSVersion& v,
DWORD dwParam=PROCESS_ALL_COLUMNS
);
//----------------------------------------------------
BOOL
InsertUpdateRecord(
TLSVersion* v,
DWORD dwParam=PROCESS_ALL_COLUMNS
);
//----------------------------------------------------
virtual BOOL
InsertRecord(
TLSVersion& v,
DWORD dwParam=PROCESS_ALL_COLUMNS
);
//----------------------------------------------------
virtual BOOL
UpdateRecord(
TLSVersion& v,
DWORD dwParam=PROCESS_ALL_COLUMNS
);
//----------------------------------------------------
virtual BOOL
Initialize() { return TRUE; }
//----------------------------------------------------
virtual JBKeyBase*
EnumerationIndex(
BOOL bMatchAll,
DWORD dwParam,
TLSVersion* pVersion,
BOOL* bCompareKey
);
//----------------------------------------------------
virtual BOOL
EqualValue(
TLSVersion& s1,
TLSVersion& s2,
BOOL bMatchAll,
DWORD dwParam
);
};
#endif