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
|
/*
* LSAPI.H
*
* NOTE: If you are using this header file on the Windows for DOS platform,
* then you are required to include "windows.h" prior to including
* this header file.
*/
#ifndef LSAPI_H
#define LSAPI_H
#if defined(WINVER) // Windows for NT or DOS
#if defined(WINAPIV)
#define LS_API_ENTRY WINAPIV
#else
#define LS_API_ENTRY WINAPI
#endif
#else
#define LS_API_ENTRY
#endif
typedef unsigned long LS_STATUS_CODE;
typedef unsigned long LS_HANDLE;
// **************************************************
// Standard LSAPI C status codes
//***************************************************
#define LS_SUCCESS ((LS_STATUS_CODE) 0x0)
#define LS_BAD_HANDLE ((LS_STATUS_CODE) 0xC0001001)
#define LS_INSUFFICIENT_UNITS ((LS_STATUS_CODE) 0xC0001002)
#define LS_SYSTEM_UNAVAILABLE ((LS_STATUS_CODE) 0xC0001003)
#define LS_LICENSE_TERMINATED ((LS_STATUS_CODE) 0xC0001004)
#define LS_AUTHORIZATION_UNAVAILABLE ((LS_STATUS_CODE) 0xC0001005)
#define LS_LICENSE_UNAVAILABLE ((LS_STATUS_CODE) 0xC0001006)
#define LS_RESOURCES_UNAVAILABLE ((LS_STATUS_CODE) 0xC0001007)
#define LS_NETWORK_UNAVAILABLE ((LS_STATUS_CODE) 0xC0001008)
#define LS_TEXT_UNAVAILABLE ((LS_STATUS_CODE) 0x80001009)
#define LS_UNKNOWN_STATUS ((LS_STATUS_CODE) 0xC000100A)
#define LS_BAD_INDEX ((LS_STATUS_CODE) 0xC000100B)
#define LS_LICENSE_EXPIRED ((LS_STATUS_CODE) 0x8000100C)
#define LS_BUFFER_TOO_SMALL ((LS_STATUS_CODE) 0xC000100D)
#define LS_BAD_ARG ((LS_STATUS_CODE) 0xC000100E)
//***************************************************
//* Nt LS API data structure and constant
//***************************************************
#define NT_LS_USER_NAME ((ULONG) 0) // username only
#define NT_LS_USER_SID ((ULONG) 1) // SID only
typedef struct {
ULONG DataType; // Type of the following data, ie. user name, sid...
VOID *Data; // Actual data. username, sid, etc...
// if call the unicode API character data
// must be in unicode as well
BOOL IsAdmin;
} NT_LS_DATA;
//
// Prototypes for License Request routines
//
typedef LS_STATUS_CODE
(LS_API_ENTRY * PNT_LICENSE_REQUEST_W)(
LPWSTR ProductName,
LPWSTR Version,
LS_HANDLE *LicenseHandle,
NT_LS_DATA *NtData);
typedef LS_STATUS_CODE
(LS_API_ENTRY * PNT_LS_FREE_HANDLE)(
LS_HANDLE LicenseHandle );
#ifdef UNICODE
#define NtLicenseRequest NtLicenseRequestW
#else
#define NtLicenseRequest NtLicenseRequestA
#endif // !UNICODE
LS_STATUS_CODE LS_API_ENTRY NtLicenseRequestA(
LPSTR ProductName,
LPSTR Version,
LS_HANDLE FAR *LicenseHandle,
NT_LS_DATA *NtData);
LS_STATUS_CODE LS_API_ENTRY NtLicenseRequestW(
LPWSTR ProductName,
LPWSTR Version,
LS_HANDLE FAR *LicenseHandle,
NT_LS_DATA *NtData);
LS_STATUS_CODE LS_API_ENTRY NtLSFreeHandle(
LS_HANDLE LicenseHandle );
// *************************************************************************
// OLD API After this point - Don't use
// *************************************************************************
/***************************************************/
/* standard LS API c datatype definitions */
/***************************************************/
typedef char LS_STR;
typedef unsigned long LS_ULONG;
typedef long LS_LONG;
typedef void LS_VOID;
typedef struct {
LS_STR MessageDigest[16]; /* a 128-bit message digest */
} LS_MSG_DIGEST;
typedef struct {
LS_ULONG SecretIndex; /* index of secret, X */
LS_ULONG Random; /* a random 32-bit value, R */
LS_MSG_DIGEST MsgDigest; /* the message digest h(in,R,S,Sx) */
} LS_CHALLDATA;
typedef struct {
LS_ULONG Protocol; /* Specifies the protocol */
LS_ULONG Size; /* size of ChallengeData structure */
LS_CHALLDATA ChallengeData; /* challenge & response */
} LS_CHALLENGE;
/***************************************************/
/* Standard LSAPI C constant definitions */
/***************************************************/
#define LS_DEFAULT_UNITS ((LS_ULONG) 0xFFFFFFFF)
#define LS_ANY ((LS_STR FAR *) "")
#define LS_USE_LAST ((LS_ULONG) 0x0800FFFF)
#define LS_INFO_NONE ((LS_ULONG) 0)
#define LS_INFO_SYSTEM ((LS_ULONG) 1)
#define LS_INFO_DATA ((LS_ULONG) 2)
#define LS_UPDATE_PERIOD ((LS_ULONG) 3)
#define LS_LICENSE_CONTEXT ((LS_ULONG) 4)
#define LS_BASIC_PROTOCOL ((LS_ULONG) 0x00000001)
#define LS_SQRT_PROTOCOL ((LS_ULONG) 0x00000002)
#define LS_OUT_OF_BAND_PROTOCOL ((LS_ULONG) 0xFFFFFFFF)
#define LS_NULL ((LS_VOID FAR *) NULL)
/***************************************************/
/* Standard LSAPI C function definitions */
/***************************************************/
LS_STATUS_CODE LS_API_ENTRY NtLSRequest(
LS_STR FAR *LicenseSystem,
LS_STR FAR *PublisherName,
LS_STR FAR *ProductName,
LS_STR FAR *Version,
LS_ULONG TotUnitsReserved,
LS_STR FAR *LogComment,
LS_CHALLENGE FAR *Challenge,
LS_ULONG FAR *TotUnitsGranted,
LS_HANDLE FAR *LicenseHandle,
NT_LS_DATA FAR *NtData);
LS_STATUS_CODE LS_API_ENTRY NtLSRelease(
LS_HANDLE LicenseHandle,
LS_ULONG TotUnitsConsumed,
LS_STR FAR *LogComment);
LS_STATUS_CODE LS_API_ENTRY NtLSUpdate(
LS_HANDLE LicenseHandle,
LS_ULONG TotUnitsConsumed,
LS_ULONG TotUnitsReserved,
LS_STR FAR *LogComment,
LS_CHALLENGE FAR *Challenge,
LS_ULONG FAR *TotUnitsGranted);
LS_STATUS_CODE LS_API_ENTRY NtLSGetMessage(
LS_HANDLE LicenseHandle,
LS_STATUS_CODE Value,
LS_STR FAR *Buffer,
LS_ULONG BufferSize);
LS_STATUS_CODE LS_API_ENTRY NtLSQuery(
LS_HANDLE LicenseHandle,
LS_ULONG Information,
LS_VOID FAR *InfoBuffer,
LS_ULONG BufferSize,
LS_ULONG FAR *ActualBufferSize);
LS_STATUS_CODE LS_API_ENTRY NtLSEnumProviders(
LS_ULONG Index,
LS_STR FAR *Buffer);
#endif /* LSAPI_H */
|