1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
|
/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
Pack.h
Abstract:
Author:
Arthur Hanson (arth) Dec 07, 1994
Environment:
Revision History:
Jeff Parham (jeffparh) 05-Dec-1995
o Added new fields to purchase record to support secure certificates.
o Unified per server purchase model with per seat purchase model for
secure certificates; per server model still done in the traditional
manner for non-secure certificates (for backwards compatibility).
o Added SaveAll() function analogous to LoadAll().
o Added support for extended user data packing/unpacking. This was
done to save the SUITE_USE flag across restarts of the service.
o Removed user table parameters from unpack routines that didn't use
them.
--*/
#ifndef _LLS_PACK_H
#define _LLS_PACK_H
#ifdef __cplusplus
extern "C" {
#endif
/////////////////////////////////////////////////////////////////////
//
// Save / Load Mapping
//
#define MAPPING_FILE_VERSION 0x0100
typedef struct _PACK_MAPPING_RECORD {
LPTSTR Name;
LPTSTR Comment;
ULONG Licenses;
} PACK_MAPPING_RECORD, *PPACK_MAPPING_RECORD;
typedef struct _PACK_MAPPING_USER_RECORD {
ULONG Mapping;
LPTSTR Name;
} PACK_MAPPING_USER_RECORD, *PPACK_MAPPING_USER_RECORD;
typedef struct _MAPPING_FILE_HEADER {
ULONG MappingUserTableSize;
ULONG MappingUserStringSize;
ULONG MappingTableSize;
ULONG MappingStringSize;
} MAPPING_FILE_HEADER, *PMAPPING_FILE_HEADER;
/////////////////////////////////////////////////////////////////////
//
// Save / Load License
//
///////////////// OLD (3.51) FORMAT ////////////////////
#define LICENSE_FILE_VERSION_0 0x0100
typedef struct _PACK_LICENSE_PURCHASE_RECORD_0 {
ULONG Service;
LONG NumberLicenses;
DWORD Date;
LPTSTR Admin;
LPTSTR Comment;
} PACK_LICENSE_PURCHASE_RECORD_0, *PPACK_LICENSE_PURCHASE_RECORD_0;
typedef struct _LICENSE_FILE_HEADER_0 {
ULONG LicenseServiceTableSize;
ULONG LicenseServiceStringSize;
ULONG LicenseTableSize;
ULONG LicenseStringSize;
} LICENSE_FILE_HEADER_0, *PLICENSE_FILE_HEADER_0;
///////////////// NEW FORMAT ////////////////////
#define LICENSE_FILE_VERSION 0x0201
typedef struct _PACK_LICENSE_SERVICE_RECORD {
LPTSTR ServiceName;
LONG NumberLicenses;
} PACK_LICENSE_SERVICE_RECORD, *PPACK_LICENSE_SERVICE_RECORD;
typedef struct _PACK_LICENSE_PURCHASE_RECORD {
ULONG Service;
LONG NumberLicenses;
DWORD Date;
LPTSTR Admin;
LPTSTR Comment;
// new for SUR: (see description in purchase.h)
ULONG PerServerService;
DWORD AllowedModes;
DWORD CertificateID;
LPTSTR Source;
DWORD ExpirationDate;
DWORD MaxQuantity;
LPTSTR Vendor;
DWORD Secrets[ LLS_NUM_SECRETS ];
} PACK_LICENSE_PURCHASE_RECORD, *PPACK_LICENSE_PURCHASE_RECORD;
typedef struct _LICENSE_FILE_HEADER {
ULONG LicenseServiceTableSize;
ULONG LicenseServiceStringSize;
ULONG LicenseTableSize;
ULONG LicenseStringSize;
// new for SUR:
ULONG PerServerLicenseServiceTableSize;
ULONG PerServerLicenseServiceStringSize;
} LICENSE_FILE_HEADER, *PLICENSE_FILE_HEADER;
/////////////////////////////////////////////////////////////////////
//
// Save / Load LLS Data
//
///////////////// OLD (3.51) FORMAT ////////////////////
#define USER_FILE_VERSION_0 0x0100
typedef struct _LLS_DATA_FILE_HEADER_0 {
ULONG ServiceTableSize;
ULONG ServiceStringSize;
ULONG ServerTableSize;
ULONG ServerStringSize;
ULONG ServerServiceTableSize;
ULONG UserTableSize;
ULONG UserStringSize;
} LLS_DATA_FILE_HEADER_0, *PLLS_DATA_FILE_HEADER_0;
///////////////// NEW FORMAT ////////////////////
#define USER_FILE_VERSION 0x0200
typedef struct _LLS_DATA_FILE_HEADER {
ULONG ServiceLevel;
ULONG ServiceTableSize;
ULONG ServiceStringSize;
ULONG ServerLevel;
ULONG ServerTableSize;
ULONG ServerStringSize;
ULONG ServerServiceLevel;
ULONG ServerServiceTableSize;
ULONG UserLevel;
ULONG UserTableSize;
ULONG UserStringSize;
} LLS_DATA_FILE_HEADER, *PLLS_DATA_FILE_HEADER;
VOID LicenseListLoad();
NTSTATUS LicenseListSave();
VOID MappingListLoad();
NTSTATUS MappingListSave();
VOID LLSDataLoad();
NTSTATUS LLSDataSave();
VOID LoadAll ( );
VOID SaveAll ( );
NTSTATUS ServiceListPack ( ULONG *pServiceTableSize, PREPL_SERVICE_RECORD *pServices );
VOID ServiceListUnpack ( ULONG ServiceTableSize, PREPL_SERVICE_RECORD Services, ULONG ServerTableSize, PREPL_SERVER_RECORD Servers, ULONG ServerServiceTableSize, PREPL_SERVER_SERVICE_RECORD ServerServices );
NTSTATUS ServerListPack ( ULONG *pServerTableSize, PREPL_SERVER_RECORD *pServers );
VOID ServerListUnpack ( ULONG ServiceTableSize, PREPL_SERVICE_RECORD Services, ULONG ServerTableSize, PREPL_SERVER_RECORD Servers, ULONG ServerServiceTableSize, PREPL_SERVER_SERVICE_RECORD ServerServices );
NTSTATUS ServerServiceListPack ( ULONG *pServerServiceTableSize, PREPL_SERVER_SERVICE_RECORD *pServerServices );
VOID ServerServiceListUnpack ( ULONG ServiceTableSize, PREPL_SERVICE_RECORD Services, ULONG ServerTableSize, PREPL_SERVER_RECORD Servers, ULONG ServerServiceTableSize, PREPL_SERVER_SERVICE_RECORD ServerServices );
NTSTATUS UserListPack ( DWORD LastReplicated, ULONG UserLevel, ULONG *pUserTableSize, LPVOID *pUsers );
VOID UserListUnpack ( ULONG ServiceTableSize, PREPL_SERVICE_RECORD Services, ULONG ServerTableSize, PREPL_SERVER_RECORD Servers, ULONG ServerServiceTableSize, PREPL_SERVER_SERVICE_RECORD ServerServices, ULONG UserLevel, ULONG UserTableSize, LPVOID Users );
NTSTATUS PackAll ( DWORD LastReplicated, ULONG *pServiceTableSize, PREPL_SERVICE_RECORD *pServices, ULONG *pServerTableSize, PREPL_SERVER_RECORD *pServers, ULONG *pServerServiceTableSize, PREPL_SERVER_SERVICE_RECORD *pServerServices, ULONG UserLevel, ULONG *pUserTableSize, LPVOID *pUsers );
VOID UnpackAll ( ULONG ServiceTableSize, PREPL_SERVICE_RECORD Services, ULONG ServerTableSize, PREPL_SERVER_RECORD Servers, ULONG ServerServiceTableSize, PREPL_SERVER_SERVICE_RECORD ServerServices, ULONG UserLevel, ULONG UserTableSize, LPVOID Users );
#ifdef __cplusplus
}
#endif
#endif
|