mirror of https://github.com/tongzx/nt5src
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.0 KiB
280 lines
6.0 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
|