|
|
//+--------------------------------------------------------------------------
//
// Copyright (c) 1997-1999 Microsoft Corporation
//
// File: licensed.h
//
// Contents:
//
// History:
//
//---------------------------------------------------------------------------
#ifndef __TLS_LICENSED_H__
#define __TLS_LICENSED_H__
#include "JetBlue.h"
#include "TlsDb.h"
//
// Not exported - not defined in tlsdef.h
//
#define LICENSE_COLUMN_SEARCH_SYSTEMBOIS 0x00200000
#define LICENSE_COLUMN_SEARCH_VIDEOBIOS 0x00400000
#define LICENSE_COLUMN_SEARCH_FLOPPYBIOS 0x00800000
#define LICENSE_COLUMN_SEARCH_HARDDISKSIZE 0x01000000
#define LICENSE_COLUMN_SEARCH_RAMSIZE 0x02000000
#define LICENSE_COLUMN_SEARCH_HWID \
(LICENSE_COLUMN_SEARCH_SYSTEMBOIS | LICENSE_COLUMN_SEARCH_VIDEOBIOS | \ LICENSE_COLUMN_SEARCH_FLOPPYBIOS | LICENSE_COLUMN_SEARCH_HARDDISKSIZE | \ LICENSE_COLUMN_SEARCH_RAMSIZE)
#define LICENSE_PROCESS_LICENSEID LSLICENSE_SEARCH_LICENSEID
#define LICENSE_PROCESS_KEYPACKID LSLICENSE_SEARCH_KEYPACKID
#define LICENSE_PROCESS_MACHINENAME LSLICENSE_SEARCH_MACHINENAME
#define LICENSE_PROCESS_USERNAME LSLICENSE_SEARCH_USERNAME
#define LICENSE_PROCESS_ISSUEDATE LSLICENSE_SEARCH_ISSUEDATE
#define LICENSE_PROCESS_EXPIREDATE LSLICENSE_SEARCH_EXPIREDATE
#define LICENSE_PROCESS_NUMLICENSES LSLICENSE_SEARCH_NUMLICENSES
#define LICENSE_PROCESS_LICENSESTATUS LSLICENSE_EXSEARCH_LICENSESTATUS
#define LICENSE_PROCESS_SYSTEMBIOS LICENSE_COLUMN_SEARCH_SYSTEMBOIS
#define LICENSE_PROCESS_VIDEOBIOS LICENSE_COLUMN_SEARCH_VIDEOBIOS
#define LICENSE_PROCESS_FLOPPYBIOS LICENSE_COLUMN_SEARCH_FLOPPYBIOS
#define LICENSE_PROCESS_HARDDISKSIZE LICENSE_COLUMN_SEARCH_HARDDISKSIZE
#define LICENSE_PROCESS_RAMSIZE LICENSE_COLUMN_SEARCH_RAMSIZE
#define LICENSE_PROCESS_MATCHHWID 0x04000000
#define LICENSE_PROCESS_HWID LICENSE_COLUMN_SEARCH_HWID
#define LICENSE_PROCESS_LASTMODIFYTIME 0x08000000
#define LICENSE_PROCESS_KEYPACKLICENSEID 0x10000000
#define LICENSE_PROCESS_ENTRYSTATUS LSLICENSE_SEARCH_ENTRY_STATUS
//
// Licensed table
//
#define LICENSE_TABLE_NAME _TEXT("IssuedLicense")
#define LICENSE_COLUMN_ID_COLUMN _TEXT("InternalLicenseID")
#define LICENSE_COLUMN_KEYPACKID _TEXT("InternalKeyPackId")
#define LICENSE_COLUMN_LICENSEID _TEXT("KeyPackLicenseId")
#define LICENSE_COLUMN_LASTMODIFYTIME _TEXT("LastModifyTime")
#define LICENSE_COLUMN_SYSTEMBIOS _TEXT("SystemBIOS")
#define LICENSE_COLUMN_VIDEOBIOS _TEXT("VideoBIOS")
#define LICENSE_COLUMN_FLOPPYBIOS _TEXT("FloppyBIOS")
#define LICENSE_COLUMN_HARDDISKSIZE _TEXT("HarddiskSize")
#define LICENSE_COLUMN_RAMSIZE _TEXT("RAMSize")
#define LICENSE_COLUMN_MATCHHWID _TEXT("MatchHint1")
#define LICENSE_COLUMN_MACHINENAME _TEXT("MachineName")
#define LICENSE_COLUMN_USERNAME _TEXT("UserName")
#define LICENSE_COLUMN_NUMLICENSES _TEXT("NumLicenses")
#define LICENSE_COLUMN_ISSUEDATE _TEXT("IssueDate")
#define LICENSE_COLUMN_EXPIREDATE _TEXT("ExpireDate")
#define LICENSE_COLUMN_LICENSESTATUS _TEXT("LicenseStatus")
#define LICENSE_COLUMN_ENTRYSTATUS _TEXT("EntryStatus")
typedef TLSReplLicenseClient LICENSEDCLIENT; typedef TLSReplLicenseClient* PLICENSEDCLIENT; typedef TLSReplLicenseClient* LPLICENSEDCLIENT;
////////////////////////////////////////////////////////////
//
// Index structure for IssuedLicense table
//
////////////////////////////////////////////////////////////
// --------------------------------------------------------
// Primary index on License ID - internal tracking number
// --------------------------------------------------------
//
// IssuedLicense_LicenseId_idx
//
#define LICENSE_ID_INDEXNAME \
LICENSE_TABLE_NAME SEPERATOR LICENSE_COLUMN_ID_COLUMN SEPERATOR INDEXNAME
//
// Index key on license ID column - "+LicenseID"
//
#define LICENSE_ID_INDEXNAME_INDEXKEY \
INDEX_SORT_ASCENDING LICENSE_COLUMN_ID_COLUMN INDEX_END_COLNAME
typedef struct __LicensedIndexOnLicenseId : public JBKeyBase { DWORD dwLicenseId;
static LPCTSTR pszIndexName; static LPCTSTR pszIndexKey;
//--------------------------------------------------------
__LicensedIndexOnLicenseId( const LICENSEDCLIENT& v ) : JBKeyBase() /*++
++*/ { *this = v; }
//-------------------------------------------------------
__LicensedIndexOnLicenseId( const LICENSEDCLIENT* v=NULL ) : JBKeyBase() /*++
++*/ { if(v) { *this = *v; } }
//-------------------------------------------------------
__LicensedIndexOnLicenseId& operator=(const LICENSEDCLIENT& v) { dwLicenseId = v.dwLicenseId;
SetEmptyValue(FALSE); return *this; }
//--------------------------------------------------------
inline LPCTSTR GetIndexName() { return pszIndexName; }
inline LPCTSTR GetIndexKey() { return pszIndexKey; }
DWORD GetNumKeyComponents() { return 1; }
inline BOOL GetSearchKey( DWORD dwComponentIndex, PVOID* pbData, unsigned long* cbData, JET_GRBIT* grbit, DWORD dwSearchParm ) /*
*/ { if(dwComponentIndex >= GetNumKeyComponents()) { JB_ASSERT(FALSE); return FALSE; }
*pbData = &(dwLicenseId); *cbData = sizeof(dwLicenseId); *grbit = JET_bitNewKey; return TRUE; }
} TLSLicensedIndexLicenseId;
// ----------------------------------------------------------
// Index on Issued License Pack Id (internal tracking number)
// ----------------------------------------------------------
//
// IssuedLicense_KeyPackId_idx
//
#define LICENSE_KEYPACKID_INDEXNAME \
LICENSE_TABLE_NAME SEPERATOR LICENSE_COLUMN_KEYPACKID SEPERATOR INDEXNAME
//
// Index key on License KeyPack ID - "+KeyPackId"
//
#define LICENSE_KEYPACKID_INDEXNAME_INDEXKEY \
INDEX_SORT_ASCENDING LICENSE_COLUMN_KEYPACKID INDEX_END_COLNAME
typedef struct __LicensedIndexOnKeyPackId : public JBKeyBase{ DWORD dwKeyPackId;
static LPCTSTR pszIndexName; static LPCTSTR pszIndexKey;
//----------------------------------------------
__LicensedIndexOnKeyPackId( const LICENSEDCLIENT& v ) : JBKeyBase() /*++
++*/ { *this = v; }
//----------------------------------------------
__LicensedIndexOnKeyPackId( const LICENSEDCLIENT* v=NULL ) : JBKeyBase() /*++
++*/ { if(v) { *this = *v; } }
__LicensedIndexOnKeyPackId& operator=(const LICENSEDCLIENT& v) { dwKeyPackId = v.dwKeyPackId;
SetEmptyValue(FALSE); return *this; }
//----------------------------------------------
inline LPCTSTR GetIndexName() { return pszIndexName; }
inline LPCTSTR GetIndexKey() { return pszIndexKey; }
DWORD GetNumKeyComponents() { return 1; }
inline BOOL GetSearchKey( DWORD dwComponentIndex, PVOID* pbData, unsigned long* cbData, JET_GRBIT* grbit, DWORD dwSearchParm ) /*
*/ { if(dwComponentIndex >= GetNumKeyComponents()) { JB_ASSERT(FALSE); return FALSE; }
*pbData = &(dwKeyPackId); *cbData = sizeof(dwKeyPackId); *grbit = JET_bitNewKey; return TRUE; }
} TLSLicensedIndexKeyPackId;
// ----------------------------------------------------------
// Index on LastModifyTime
// ----------------------------------------------------------
//
// IssuedLicense_LastModifyTime_idx
//
#define LICENSE_LASTMODIFY_INDEXNAME \
LICENSE_TABLE_NAME SEPERATOR LICENSE_COLUMN_LASTMODIFYTIME SEPERATOR INDEXNAME
//
// Index key - "+LastModifyTime"
//
#define LICENSE_LASTMODIFY_INDEXNAME_INDEXKEY \
INDEX_SORT_ASCENDING LICENSE_COLUMN_LASTMODIFYTIME INDEX_END_COLNAME
typedef struct __LicensedIndexOnLastModifyTime : public JBKeyBase { FILETIME ftLastModifyTime;
static LPCTSTR pszIndexName; static LPCTSTR pszIndexKey;
//----------------------------------------------
__LicensedIndexOnLastModifyTime( const LICENSEDCLIENT& v ) : JBKeyBase() /*++
++*/ { *this = v; }
//----------------------------------------------
__LicensedIndexOnLastModifyTime( const LICENSEDCLIENT* v=NULL ) : JBKeyBase() /*++
++*/ { if(v) { *this = *v; } }
__LicensedIndexOnLastModifyTime& operator=(const LICENSEDCLIENT& v) { ftLastModifyTime = v.ftLastModifyTime;
SetEmptyValue(FALSE); return *this; }
//----------------------------------------------
inline LPCTSTR GetIndexName() { return pszIndexName; }
inline LPCTSTR GetIndexKey() { return pszIndexKey; }
DWORD GetNumKeyComponents() { return 1; }
inline BOOL GetSearchKey( DWORD dwComponentIndex, PVOID* pbData, unsigned long* cbData, JET_GRBIT* grbit, DWORD dwSearchParm ) /*
*/ { if(dwComponentIndex >= GetNumKeyComponents()) { JB_ASSERT(FALSE); return FALSE; }
*pbData = &(ftLastModifyTime); *cbData = sizeof(ftLastModifyTime); *grbit = JET_bitNewKey; return TRUE; }
} TLSLicensedIndexLastModifyTime;
// ----------------------------------------------------------
// Index on ExpireDate
// ----------------------------------------------------------
//
// IssuedLicense_ExpireDate_idx
//
#define LICENSE_EXPIREDATE_INDEXNAME \
LICENSE_TABLE_NAME SEPERATOR LICENSE_COLUMN_EXPIREDATE SEPERATOR INDEXNAME
//
// Index key - "+ExpireDate"
//
#define LICENSE_EXPIREDATE_INDEXNAME_INDEXKEY \
INDEX_SORT_ASCENDING LICENSE_COLUMN_EXPIREDATE INDEX_END_COLNAME
typedef struct __LicensedIndexOnExpireDate : public JBKeyBase { DWORD ftExpireDate;
static LPCTSTR pszIndexName; static LPCTSTR pszIndexKey;
//----------------------------------------------
__LicensedIndexOnExpireDate( const LICENSEDCLIENT& v ) : JBKeyBase() /*++
++*/ { *this = v; }
//----------------------------------------------
__LicensedIndexOnExpireDate( const LICENSEDCLIENT* v=NULL ) : JBKeyBase() /*++
++*/ { if(v) { *this = *v; } }
__LicensedIndexOnExpireDate& operator=(const LICENSEDCLIENT& v) { ftExpireDate = v.ftExpireDate;
SetEmptyValue(FALSE); return *this; }
//----------------------------------------------
inline LPCTSTR GetIndexName() { return pszIndexName; }
inline LPCTSTR GetIndexKey() { return pszIndexKey; }
DWORD GetNumKeyComponents() { return 1; }
inline BOOL GetSearchKey( DWORD dwComponentIndex, PVOID* pbData, unsigned long* cbData, JET_GRBIT* grbit, DWORD dwSearchParm ) /*
*/ { if(dwComponentIndex >= GetNumKeyComponents()) { JB_ASSERT(FALSE); return FALSE; }
*pbData = &(ftExpireDate); *cbData = sizeof(ftExpireDate); *grbit = JET_bitNewKey; return TRUE; }
} TLSLicensedIndexExpireDate;
//-------------------------------------------------------------
// Index on client machine name
//-------------------------------------------------------------
//
// IssuedLicense_MachineName_idx
//
#define LICENSE_CLIENT_MACHINENAME_INDEXNAME \
LICENSE_TABLE_NAME SEPERATOR LICENSE_COLUMN_MACHINENAME SEPERATOR INDEXNAME
//
// "+MachineName\0"
#define LICENSE_CLIENT_MACHINENAME_INDEXNAME_INDEXKEY \
INDEX_SORT_ASCENDING LICENSE_COLUMN_MACHINENAME INDEX_END_COLNAME
typedef struct __LicensedIndexOnMachineName : public JBKeyBase { TCHAR szMachineName[ MAXCOMPUTERNAMELENGTH+1 ];
static LPCTSTR pszIndexName; static LPCTSTR pszIndexKey;
//-------------------------------------------------------
__LicensedIndexOnMachineName( const LICENSEDCLIENT* v=NULL ) : JBKeyBase() /*++
++*/ { if(v) { *this = *v; } }
//-------------------------------------------------------
__LicensedIndexOnMachineName( const LICENSEDCLIENT& v ) : JBKeyBase() /*++
++*/ { *this = v; }
//-------------------------------------------------------
__LicensedIndexOnMachineName& operator=(const LICENSEDCLIENT& v) { _tcscpy(szMachineName, v.szMachineName);
SetEmptyValue(FALSE); return *this; }
//------------------------------------------
inline LPCTSTR GetIndexName() { return pszIndexName; }
inline LPCTSTR GetIndexKey() { return pszIndexKey; }
DWORD GetNumKeyComponents() { return 1; }
inline BOOL GetSearchKey( DWORD dwComponentIndex, PVOID* pbData, unsigned long* cbData, JET_GRBIT* grbit, DWORD dwSearchParm ) /*
*/ { if(dwComponentIndex >= GetNumKeyComponents()) { JB_ASSERT(FALSE); return FALSE; }
*pbData = &(szMachineName[0]); *cbData = _tcslen(szMachineName) * sizeof(TCHAR); *grbit = JET_bitNewKey; return TRUE; }
} TLSLicensedIndexMachineName;
//-------------------------------------------------------------
// Index on client UserName name
//-------------------------------------------------------------
//
// IssuedLicense_UserName_idx
//
#define LICENSE_CLIENT_USERNAME_INDEXNAME \
LICENSE_TABLE_NAME SEPERATOR LICENSE_COLUMN_USERNAME SEPERATOR INDEXNAME
//
// "+UserName\0"
#define LICENSE_CLIENT_USERNAME_INDEXNAME_INDEXKEY \
INDEX_SORT_ASCENDING LICENSE_COLUMN_USERNAME INDEX_END_COLNAME
typedef struct __LicensedIndexOnUserName : public JBKeyBase { TCHAR szUserName[ MAXUSERNAMELENGTH+1 ];
static LPCTSTR pszIndexName; static LPCTSTR pszIndexKey;
//-------------------------------------------------------
__LicensedIndexOnUserName(const LICENSEDCLIENT& v) : JBKeyBase() { *this = v; }
//-------------------------------------------------------
__LicensedIndexOnUserName( const LICENSEDCLIENT* v=NULL ) : JBKeyBase() /*++
++*/ { *this = *v; }
//-------------------------------------------------------
__LicensedIndexOnUserName& operator=(const LICENSEDCLIENT& v) { _tcscpy(szUserName, v.szUserName); SetEmptyValue(FALSE); return *this; }
inline LPCTSTR GetIndexName() { return pszIndexName; }
inline LPCTSTR GetIndexKey() { return pszIndexKey; }
DWORD GetNumKeyComponents() { return 1; }
inline BOOL GetSearchKey( DWORD dwComponentIndex, PVOID* pbData, unsigned long* cbData, JET_GRBIT* grbit, DWORD dwSearchParm ) /*
*/ { if(dwComponentIndex >= GetNumKeyComponents()) { JB_ASSERT(FALSE); return FALSE; }
*pbData = &(szUserName[0]); *cbData = _tcslen(szUserName) * sizeof(TCHAR); *grbit = JET_bitNewKey; return TRUE; }
} TLSLicensedIndexUserName;
//-------------------------------------------------------------
// Index on client's HWID
//-------------------------------------------------------------
//
// IssuedLicense_Hwid_idx
//
#define LICENSE_CLIENT_HWID_INDEXNAME \
LICENSE_TABLE_NAME SEPERATOR _TEXT("ClientHwid") SEPERATOR INDEXNAME
//
// Index Key on Client Hwid - "+SystemBIOS\0+VideoBIOS\0+FloppyBIOS\0+HarddiskSize\0+RAMSize\0"
//
#define LICENSE_CLIENT_HWID_INDEXNAME_INDEXKEY \
INDEX_SORT_ASCENDING LICENSE_COLUMN_SYSTEMBIOS INDEX_END_COLNAME \ INDEX_SORT_ASCENDING LICENSE_COLUMN_VIDEOBIOS INDEX_END_COLNAME \ INDEX_SORT_ASCENDING LICENSE_COLUMN_FLOPPYBIOS INDEX_END_COLNAME \ INDEX_SORT_ASCENDING LICENSE_COLUMN_HARDDISKSIZE INDEX_END_COLNAME \ INDEX_SORT_ASCENDING LICENSE_COLUMN_RAMSIZE INDEX_END_COLNAME
#define LICENSE_CLIENT_HWID_INDEXNAME_INDEXKEY_COMPONENTS 5
typedef struct __LicensedIndexOnHwid : public JBKeyBase { //
// Need to change LICENSE_CLIENT_HWID_INDEXNAME_INDEXKEY_COMPONENTS
// if add/remove from this structure
//
LONG dwSystemBiosChkSum; LONG dwVideoBiosChkSum; LONG dwFloppyBiosChkSum; LONG dwHardDiskSize; LONG dwRamSize;
static LPCTSTR pszIndexName; static LPCTSTR pszIndexKey;
//------------------------------------------------
__LicensedIndexOnHwid( const LICENSEDCLIENT* v=NULL ) : JBKeyBase() /*++
++*/ { if(v) { *this = *v; } }
//------------------------------------------------
__LicensedIndexOnHwid( const LICENSEDCLIENT& v ) : JBKeyBase() /*++
++*/ { *this = v; } //------------------------------------------------
__LicensedIndexOnHwid& operator=(const LICENSEDCLIENT hwid) { dwSystemBiosChkSum = hwid.dwSystemBiosChkSum; dwVideoBiosChkSum = hwid.dwVideoBiosChkSum; dwFloppyBiosChkSum = hwid.dwFloppyBiosChkSum; dwHardDiskSize = hwid.dwHardDiskSize; dwRamSize = hwid.dwRamSize;
SetEmptyValue(FALSE); return *this; }
//------------------------------------------------
inline LPCTSTR GetIndexName() { return pszIndexName; }
inline LPCTSTR GetIndexKey() { return pszIndexKey; }
DWORD GetNumKeyComponents() { return LICENSE_CLIENT_HWID_INDEXNAME_INDEXKEY_COMPONENTS; }
inline BOOL GetSearchKey( DWORD dwComponentIndex, PVOID* pbData, unsigned long* cbData, JET_GRBIT* grbit, DWORD dwSearchParam ) /*
*/ { BOOL retCode=TRUE;
if(dwComponentIndex >= GetNumKeyComponents()) { JB_ASSERT(FALSE); return FALSE; }
*cbData = 0; *grbit = 0;
switch(dwComponentIndex) { case 0: *pbData = &(dwSystemBiosChkSum); *cbData = sizeof(dwSystemBiosChkSum); *grbit = JET_bitNewKey; break;
case 1: *pbData = &(dwVideoBiosChkSum); *cbData = sizeof(dwVideoBiosChkSum); break;
case 2: *pbData = &(dwFloppyBiosChkSum); *cbData = sizeof(dwFloppyBiosChkSum); break;
case 3: *pbData = &(dwHardDiskSize); *cbData = sizeof(dwHardDiskSize); break;
case 4: *pbData = &(dwRamSize); *cbData = sizeof(dwRamSize); break; default: JB_ASSERT(FALSE); retCode = FALSE; }
return retCode; }
} TLSLicensedIndexHwid;
//------------------------------------------------------
// Index for matching client HWID
//------------------------------------------------------
//
// IssuedLicense_MatchHwid_idx
//
#define LICENSE_MATCHHWID_INDEXNAME \
LICENSE_TABLE_NAME SEPERATOR _TEXT("MatchHwid") SEPERATOR INDEXNAME
//
// Index key on search hint column "+MatchHint1\0"
//
#define LICENSE_MATCHHWID_INDEXNAME_INDEXKEY \
INDEX_SORT_ASCENDING LICENSE_COLUMN_MATCHHWID INDEX_END_COLNAME
typedef struct __LicensedIndexOnMatchHwid : public JBKeyBase { double dbLowerBound;
static LPCTSTR pszIndexName; static LPCTSTR pszIndexKey;
static int __cdecl compare(const void *p1, const void* p2) { return *(DWORD *)p1 - *(DWORD *)p2; }
//------------------------------------------------
__LicensedIndexOnMatchHwid( const LICENSEDCLIENT* v=NULL ) : JBKeyBase() /*++
++*/ { if(v) { *this = *v; } }
//------------------------------------------------
__LicensedIndexOnMatchHwid( const LICENSEDCLIENT& v ) : JBKeyBase() /*++
++*/ { *this = v; }
//------------------------------------------------
__LicensedIndexOnMatchHwid& operator=(const LICENSEDCLIENT& v) { //
// Allow to mismatch, so lower bound of matching hint is
// Sum of all HWID minus two lagest value
//
LONG ptr[] = { v.dwSystemBiosChkSum, v.dwVideoBiosChkSum, v.dwFloppyBiosChkSum, v.dwHardDiskSize, v.dwRamSize };
int count=sizeof(ptr) / sizeof(ptr[0]); qsort(ptr, count, sizeof(DWORD), __LicensedIndexOnMatchHwid::compare);
dbLowerBound = (double) 0.0;
for(int i=0; i < count - 2; i++) { dbLowerBound += (double)ptr[i]; }
SetEmptyValue(FALSE); return *this; }
inline LPCTSTR GetIndexName() { return pszIndexName; }
inline LPCTSTR GetIndexKey() { return pszIndexKey; }
DWORD GetNumKeyComponents() { return 1; }
inline BOOL GetSearchKey( DWORD dwComponentIndex, PVOID* pbData, unsigned long* cbData, JET_GRBIT* grbit, DWORD dwSearchParm ) /*
*/ { if(dwComponentIndex >= GetNumKeyComponents()) { JB_ASSERT(FALSE); return FALSE; }
*pbData = &(dbLowerBound); *cbData = sizeof(dbLowerBound); *grbit = JET_bitNewKey; return TRUE; }
} TLSLicensedIndexMatchHwid;
//------------------------------------------------------------------------
class LicensedTable : public TLSTable<LICENSEDCLIENT> { private:
static LPCTSTR pszTableName;
BOOL ProcessSingleColumn( BOOL bFetch, TLSColumnBase& column, DWORD offset, PVOID pbData, DWORD cbData, PDWORD pcbDataReturn, LPCTSTR szColumnName );
BOOL ProcessRecord( LICENSEDCLIENT* v, BOOL bFetch, // TRUE - fetch, FALSE insert
DWORD dwParam, BOOL bUpdate );
public: TLSColumnUchar ucEntryStatus; TLSColumnFileTime ftLastModifyTime;
TLSColumnDword dwLicenseId; TLSColumnDword dwKeyPackId; TLSColumnDword dwKeyPackLicenseId;
TLSColumnText szMachineName; TLSColumnText szUserName; TLSColumnDword ftIssueDate; TLSColumnDword ftExpireDate; TLSColumnUchar ucLicenseStatus; TLSColumnDword dwNumLicenses;
TLSColumnDword dwSystemBiosChkSum; TLSColumnDword dwVideoBiosChkSum; TLSColumnDword dwFloppyBiosChkSum; TLSColumnDword dwHardDiskSize; TLSColumnDword dwRamSize;
TLSColumnDouble dbLowerBound;
//---------------------------------------------------------
virtual LPCTSTR GetTableName() { return pszTableName; }
//-----------------------------------------------------
LicensedTable( JBDatabase& database ) : TLSTable<LICENSEDCLIENT>(database) /*
*/ { }
//-----------------------------------------------------
virtual BOOL ResolveToTableColumn();
//-----------------------------------------------------
virtual BOOL FetchRecord( LICENSEDCLIENT& licensed, DWORD dwParam=PROCESS_ALL_COLUMNS ) /*
*/ { if(IsValid() == FALSE) { DebugOutput( _TEXT("Table %s is not valid...\n"), GetTableName() );
JB_ASSERT(FALSE); SetLastJetError(JET_errInvalidParameter); return FALSE; }
//CCriticalSectionLocker Lock(GetTableLock());
return ProcessRecord(&licensed, TRUE, dwParam, FALSE); }
//-----------------------------------------------------
virtual BOOL InsertRecord( LICENSEDCLIENT& licensed, DWORD dwParam=PROCESS_ALL_COLUMNS ) /*
*/ { if(IsValid() == FALSE) { DebugOutput( _TEXT("Table %s is not valid...\n"), GetTableName() );
JB_ASSERT(FALSE); SetLastJetError(JET_errInvalidParameter); return FALSE; }
//CCriticalSectionLocker Lock(GetTableLock());
return ProcessRecord(&licensed, FALSE, dwParam, FALSE); }
//-------------------------------------------------------
virtual BOOL UpdateRecord( LICENSEDCLIENT& licensed, DWORD dwParam=PROCESS_ALL_COLUMNS ) /*
*/ { if(IsValid() == FALSE) { DebugOutput( _TEXT("Table %s is not valid...\n"), GetTableName() );
JB_ASSERT(FALSE); SetLastJetError(JET_errInvalidParameter); return FALSE; }
//CCriticalSectionLocker Lock(GetTableLock());
return ProcessRecord(&licensed, FALSE, dwParam, TRUE); }
//-------------------------------------------------------
virtual BOOL Initialize() { return TRUE; }
//-------------------------------------------------------
virtual JBKeyBase* EnumerationIndex( BOOL bMatchAll, DWORD dwParam, LICENSEDCLIENT* pLicensed, BOOL* bCompareKey );
virtual BOOL EqualValue( LICENSEDCLIENT& s1, LICENSEDCLIENT& s2, BOOL bMatchAll, DWORD dwParam );
virtual BOOL UpgradeTable( IN DWORD dwOldVersion, IN DWORD dwNewVersion );
};
#endif
|