|
|
|
1 |
|
//------------------------------------------------------------ |
2 |
|
// Open Data Services header file: srv.h |
3 |
|
// Copyright (c) Microsoft Corporation. All rights reserved. |
4 |
|
// |
5 |
|
|
6 |
|
// Avoid double inclusion |
7 |
|
#ifndef _ODS_SRV_H_ |
8 |
|
#define _ODS_SRV_H_ |
9 |
|
|
10 |
|
#ifndef COMPILE_FOR_CLR |
11 |
|
#include "windows.h" |
12 |
|
#endif |
13 |
|
|
14 |
|
// ODS uses pack(4) on all CPU types |
15 |
|
#pragma pack(4) |
16 |
|
|
17 |
|
#ifdef __cplusplus |
18 |
|
extern "C" { |
19 |
|
#endif |
20 |
|
|
21 |
|
// define model |
22 |
|
#if !defined( FAR ) |
23 |
|
#define FAR far |
24 |
|
#endif |
25 |
|
|
26 |
|
//------------------------------------------------------------ |
27 |
|
// Formats of data types |
28 |
|
#if !defined(DBTYPEDEFS) // Do not conflict with DBLIB definitions |
29 |
|
#if !defined(MAXNUMERICLEN) // Do not conflict with ODBC definitions |
30 |
|
|
31 |
|
#define DBTYPEDEFS |
32 |
|
|
33 |
|
typedef unsigned char DBBOOL; |
34 |
|
typedef unsigned char DBBYTE; |
35 |
|
typedef unsigned char DBTINYINT; |
36 |
|
typedef short DBSMALLINT; |
37 |
|
typedef unsigned short DBUSMALLINT; |
38 |
|
typedef long DBINT; |
39 |
|
typedef char DBCHAR; |
40 |
|
typedef unsigned char DBBINARY; |
41 |
|
typedef unsigned char DBBIT; |
42 |
|
typedef double DBFLT8; |
43 |
|
|
44 |
|
typedef struct srv_datetime |
45 |
|
{ // Format for SRVDATETIME |
46 |
|
long dtdays; // number of days since 1/1/1900 |
47 |
|
unsigned long dttime; // number 300th second since mid |
48 |
|
} DBDATETIME; |
49 |
|
|
50 |
|
typedef struct srv_money |
51 |
|
{ // Format for SRVMONEY |
52 |
|
long mnyhigh; |
53 |
|
unsigned long mnylow; |
54 |
|
} DBMONEY; |
55 |
|
|
56 |
|
typedef float DBFLT4; |
57 |
|
typedef long DBMONEY4; |
58 |
|
|
59 |
|
typedef struct dbdatetime4 |
60 |
|
{ // Format for SRVDATETIM4 |
61 |
|
unsigned short numdays; // number of days since 1/1/1900 |
62 |
|
unsigned short nummins; // number of minutes sicne midnight |
63 |
|
} DBDATETIM4; |
64 |
|
|
65 |
|
#define MAXNUMERICLEN 16 |
66 |
|
typedef struct dbnumeric |
67 |
|
{ // Format for SRVNUMERIC,SRVNUMERICN,SRVDECIMAL,SRVDECIMALN |
68 |
|
BYTE precision; |
69 |
|
BYTE scale; |
70 |
|
BYTE sign; |
71 |
|
BYTE val[MAXNUMERICLEN]; |
72 |
|
} DBNUMERIC; |
73 |
|
typedef DBNUMERIC DBDECIMAL; |
74 |
|
|
75 |
|
#endif // #if !defined(MAXNUMERICLEN) |
76 |
|
#endif // #if !defined( DBTYPEDEFS ) |
77 |
|
|
78 |
|
//------------------------------------------------------------ |
79 |
|
// Constants used by APIs |
80 |
|
|
81 |
|
// Type Tokens |
82 |
|
#define SRV_TDS_NULL (BYTE) 0x1f |
83 |
|
#define SRV_TDS_TEXT (BYTE) 0x23 |
84 |
|
#define SRV_TDS_GUID (BYTE) 0x24 |
85 |
|
#define SRV_TDS_VARBINARY (BYTE) 0x25 |
86 |
|
#define SRV_TDS_INTN (BYTE) 0x26 |
87 |
|
#define SRV_TDS_VARCHAR (BYTE) 0x27 |
88 |
|
#define SRV_TDS_BINARY (BYTE) 0x2d |
89 |
|
#define SRV_TDS_IMAGE (BYTE) 0x22 |
90 |
|
#define SRV_TDS_CHAR (BYTE) 0x2f |
91 |
|
#define SRV_TDS_INT1 (BYTE) 0x30 |
92 |
|
#define SRV_TDS_BIT (BYTE) 0x32 |
93 |
|
#define SRV_TDS_INT2 (BYTE) 0x34 |
94 |
|
#define SRV_TDS_DECIMAL (BYTE) 0x37 |
95 |
|
#define SRV_TDS_INT4 (BYTE) 0x38 |
96 |
|
#define SRV_TDS_DATETIM4 (BYTE) 0x3a |
97 |
|
#define SRV_TDS_FLT4 (BYTE) 0x3b |
98 |
|
#define SRV_TDS_MONEY (BYTE) 0x3c |
99 |
|
#define SRV_TDS_DATETIME (BYTE) 0x3d |
100 |
|
#define SRV_TDS_FLT8 (BYTE) 0x3e |
101 |
|
#define SRV_TDS_NUMERIC (BYTE) 0x3f |
102 |
|
#define SRV_TDS_SSVARIANT (BYTE) 0x62 |
103 |
|
#define SRV_TDS_NTEXT (BYTE) 0x63 |
104 |
|
#define SRV_TDS_BITN (BYTE) 0x68 |
105 |
|
#define SRV_TDS_DECIMALN (BYTE) 0x6a |
106 |
|
#define SRV_TDS_NUMERICN (BYTE) 0x6c |
107 |
|
#define SRV_TDS_FLTN (BYTE) 0x6d |
108 |
|
#define SRV_TDS_MONEYN (BYTE) 0x6e |
109 |
|
#define SRV_TDS_DATETIMN (BYTE) 0x6f |
110 |
|
#define SRV_TDS_MONEY4 (BYTE) 0x7a |
111 |
|
#define SRV_TDS_INT8 (BYTE) 0x7f |
112 |
|
#define SRV_TDS_BIGVARBINARY (BYTE) 0xA5 |
113 |
|
#define SRV_TDS_BIGVARCHAR (BYTE) 0xA7 |
114 |
|
#define SRV_TDS_BIGBINARY (BYTE) 0xAD |
115 |
|
#define SRV_TDS_BIGCHAR (BYTE) 0xAF |
116 |
|
#define SRV_TDS_NVARCHAR (BYTE) 0xe7 |
117 |
|
#define SRV_TDS_NCHAR (BYTE) 0xef |
118 |
|
|
119 |
|
// Datatypes |
120 |
|
// Also: values of symbol parameter to srv_symbol when type = SRV_DATATYPE |
121 |
|
#define SRVNULL SRV_TDS_NULL |
122 |
|
#define SRVTEXT SRV_TDS_TEXT |
123 |
|
#define SRVGUID SRV_TDS_GUID |
124 |
|
#define SRVVARBINARY SRV_TDS_VARBINARY |
125 |
|
#define SRVINTN SRV_TDS_INTN |
126 |
|
#define SRVVARCHAR SRV_TDS_VARCHAR |
127 |
|
#define SRVBINARY SRV_TDS_BINARY |
128 |
|
#define SRVIMAGE SRV_TDS_IMAGE |
129 |
|
#define SRVCHAR SRV_TDS_CHAR |
130 |
|
#define SRVINT1 SRV_TDS_INT1 |
131 |
|
#define SRVBIT SRV_TDS_BIT |
132 |
|
#define SRVINT2 SRV_TDS_INT2 |
133 |
|
#define SRVDECIMAL SRV_TDS_DECIMAL |
134 |
|
#define SRVINT4 SRV_TDS_INT4 |
135 |
|
#define SRVDATETIM4 SRV_TDS_DATETIM4 |
136 |
|
#define SRVFLT4 SRV_TDS_FLT4 |
137 |
|
#define SRVMONEY SRV_TDS_MONEY |
138 |
|
#define SRVDATETIME SRV_TDS_DATETIME |
139 |
|
#define SRVFLT8 SRV_TDS_FLT8 |
140 |
|
#define SRVNUMERIC SRV_TDS_NUMERIC |
141 |
|
#define SRVSSVARIANT SRV_TDS_SSVARIANT |
142 |
|
#define SRVNTEXT SRV_TDS_NTEXT |
143 |
|
#define SRVBITN SRV_TDS_BITN |
144 |
|
#define SRVDECIMALN SRV_TDS_DECIMALN |
145 |
|
#define SRVNUMERICN SRV_TDS_NUMERICN |
146 |
|
#define SRVFLTN SRV_TDS_FLTN |
147 |
|
#define SRVMONEYN SRV_TDS_MONEYN |
148 |
|
#define SRVDATETIMN SRV_TDS_DATETIMN |
149 |
|
#define SRVMONEY4 SRV_TDS_MONEY4 |
150 |
|
#define SRVINT8 SRV_TDS_INT8 |
151 |
|
#define SRVBIGVARBINARY SRV_TDS_BIGVARBINARY |
152 |
|
#define SRVBIGVARCHAR SRV_TDS_BIGVARCHAR |
153 |
|
#define SRVBIGBINARY SRV_TDS_BIGBINARY |
154 |
|
#define SRVBIGCHAR SRV_TDS_BIGCHAR |
155 |
|
#define SRVNVARCHAR SRV_TDS_NVARCHAR |
156 |
|
#define SRVNCHAR SRV_TDS_NCHAR |
157 |
|
|
158 |
|
// values for srv_symbol type parameter |
159 |
|
#define SRV_ERROR 0 |
160 |
|
#define SRV_DONE 1 |
161 |
|
#define SRV_DATATYPE 2 |
172 |
|
#define SRV_CONTINUE 0 |
173 |
|
#define SRV_LANGUAGE 1 |
174 |
|
#define SRV_CONNECT 2 |
175 |
|
#define SRV_RPC 3 |
176 |
|
#define SRV_RESTART 4 |
177 |
|
#define SRV_DISCONNECT 5 |
178 |
|
#define SRV_ATTENTION 6 |
179 |
|
#define SRV_SLEEP 7 |
180 |
|
#define SRV_START 8 |
181 |
|
#define SRV_STOP 9 |
182 |
|
#define SRV_EXIT 10 |
183 |
|
#define SRV_CANCEL 11 |
184 |
|
#define SRV_SETUP 12 |
185 |
|
#define SRV_CLOSE 13 |
186 |
|
#define SRV_PRACK 14 |
187 |
|
#define SRV_PRERROR 15 |
188 |
|
#define SRV_ATTENTION_ACK 16 |
189 |
|
#define SRV_CONNECT_V7 16 // TDS type for TDS 7 clients. Overloaded with SRV_ATTENTION_ACK |
190 |
|
#define SRV_SKIP 17 |
191 |
|
#define SRV_TRANSMGR 18 |
192 |
|
#define SRV_PRELOGIN 19 |
193 |
|
#define SRV_OLEDB 20 |
194 |
|
#define SRV_INTERNAL_HANDLER 99 |
195 |
|
#define SRV_PROGRAMMER_DEFINED 100 |
196 |
|
|
197 |
|
// values for srv_sfield field parameter |
198 |
|
#define SRV_SERVERNAME 0 |
199 |
|
#define SRV_VERSION 6 |
200 |
|
|
201 |
|
// Length to indicate string is null terminated |
202 |
|
#define SRV_NULLTERM -1 |
203 |
|
|
204 |
|
// values of msgtype parameter to srv_sendmsg |
205 |
|
#define SRV_MSG_INFO 1 |
206 |
|
#define SRV_MSG_ERROR 2 |
207 |
|
|
208 |
|
// values of status parameter to srv_senddone |
209 |
|
// Also: values for symbol parameters to srv_symbol when type = SRV_DONE |
210 |
|
#define SRV_DONE_FINAL (USHORT) 0x0000 |
211 |
|
#define SRV_DONE_MORE (USHORT) 0x0001 |
212 |
|
#define SRV_DONE_ERROR (USHORT) 0x0002 |
213 |
|
#define SRV_DONE_COUNT (USHORT) 0x0010 |
214 |
|
#define SRV_DONE_RPC_IN_BATCH (USHORT) 0x0080 |
215 |
|
|
216 |
|
// return values of srv_paramstatus |
217 |
|
#define SRV_PARAMRETURN 0x0001 |
218 |
|
#define SRV_PARAMDEFAULT 0x0002 |
219 |
|
#define SRV_PARAMSORTORDER 0x0004 |
220 |
|
|
221 |
|
// return values of srv_rpcoptions |
222 |
|
#define SRV_RECOMPILE 0x0001 |
223 |
|
#define SRV_NOMETADATA 0x0002 |
224 |
|
|
225 |
|
// values of field parameter to srv_pfield |
226 |
|
//#define SRV_LANGUAGE 1 already defined above |
227 |
|
//#define SRV_EVENT 4 already defined above |
228 |
|
#define SRV_SPID 10 |
229 |
|
#define SRV_NETSPID 11 |
230 |
|
#define SRV_TYPE 12 |
231 |
|
#define SRV_STATUS 13 |
232 |
|
#define SRV_RMTSERVER 14 |
233 |
|
#define SRV_HOST 15 |
234 |
|
#define SRV_USER 16 |
235 |
|
#define SRV_PWD 17 |
236 |
|
#define SRV_CPID 18 |
237 |
|
#define SRV_APPLNAME 19 |
238 |
|
#define SRV_TDS 20 |
239 |
|
#define SRV_CLIB 21 |
240 |
|
#define SRV_LIBVERS 22 |
241 |
|
#define SRV_ROWSENT 23 |
242 |
|
#define SRV_BCPFLAG 24 |
243 |
|
#define SRV_NATLANG 25 |
244 |
|
#define SRV_PIPEHANDLE 26 |
245 |
|
#define SRV_NETWORK_MODULE 27 |
246 |
|
#define SRV_NETWORK_VERSION 28 |
247 |
|
#define SRV_NETWORK_CONNECTION 29 |
248 |
|
#define SRV_LSECURE 30 |
249 |
|
#define SRV_SAXP 31 |
250 |
|
#define SRV_UNICODE_USER 33 |
251 |
|
#define SRV_UNICODE_PWD 35 |
252 |
|
#define SRV_SPROC_CODEPAGE 36 |
253 |
|
#define SRV_MSGLCID 37 |
254 |
|
#define SRV_INSTANCENAME 38 |
255 |
|
#define SRV_HASHPWD 39 |
256 |
|
#define SRV_UNICODE_CURRENTLOGIN 40 |
257 |
|
|
258 |
|
// return value of SRV_TDSVERSION macro |
259 |
|
#define SRV_TDS_NONE 0 |
260 |
|
#define SRV_TDS_2_0 1 |
261 |
|
#define SRV_TDS_3_4 2 |
262 |
|
#define SRV_TDS_4_2 3 |
263 |
|
#define SRV_TDS_6_0 4 |
264 |
|
#define SRV_TDS_7_0 5 |
265 |
|
|
266 |
|
// Return values from APIs |
267 |
|
typedef int SRVRETCODE; // SUCCEED or FAIL |
268 |
|
#ifndef ODBCVER |
269 |
|
typedef int RETCODE; |
270 |
|
#endif |
271 |
|
|
272 |
|
#if !defined( SUCCEED ) |
273 |
|
#define SUCCEED 1 // Successful return value |
274 |
|
#endif |
275 |
|
|
276 |
|
#if !defined( FAIL ) |
277 |
|
#define FAIL 0 // Unsuccessful return value |
278 |
|
#endif |
279 |
|
|
280 |
|
#define SRV_DUPLICATE_HANDLER 2 // additional return value for srv_pre/post_handle |
281 |
|
|
282 |
|
#ifndef COMPILE_FOR_CLR |
283 |
|
//------------------------------------------------ |
284 |
|
//PreDeclare structures |
285 |
|
// |
286 |
|
struct srv_server; |
287 |
|
typedef struct srv_server SRV_SERVER; |
288 |
|
|
289 |
|
struct srv_config; |
290 |
|
typedef struct srv_config SRV_CONFIG; |
291 |
|
|
292 |
|
struct CXPData; |
293 |
|
typedef struct CXPData SRV_PROC; |
294 |
|
|
295 |
|
|
296 |
|
//------------------------------------------------ |
297 |
|
//------------------------------------------------ |
298 |
|
// ODS MACROs & APIs |
299 |
|
|
300 |
|
// Describing and sending a result set |
301 |
|
int __cdecl srv_describe(SRV_PROC*,int,char*,int,long int,long int,long int,long int,void*); |
302 |
|
int __cdecl srv_setutype(SRV_PROC* srvproc,int column,long int usertype); |
303 |
|
int __cdecl srv_setcoldata(SRV_PROC* srvproc,int column,void* data); |
304 |
|
int __cdecl srv_setcollen( SRV_PROC* srvproc,int column,int len); |
305 |
|
int __cdecl srv_sendrow(SRV_PROC* srvproc ); |
306 |
|
int __cdecl srv_senddone(SRV_PROC* srvproc,USHORT status,USHORT curcmd,long int count); |
307 |
|
|
308 |
|
// Dealing with Extended Procedure parameters |
309 |
|
int __cdecl srv_rpcparams(SRV_PROC*); |
310 |
|
int __cdecl srv_paraminfo(SRV_PROC*,int,BYTE*,ULONG*,ULONG*,BYTE*,BOOL*); |
311 |
|
int __cdecl srv_paramsetoutput(SRV_PROC*,int,BYTE*,ULONG,BOOL); |
312 |
|
|
313 |
|
void* __cdecl srv_paramdata(SRV_PROC*,int); |
314 |
|
int __cdecl srv_paramlen(SRV_PROC*,int); |
315 |
|
int __cdecl srv_parammaxlen(SRV_PROC*,int); |
316 |
|
int __cdecl srv_paramtype(SRV_PROC*,int); |
317 |
|
int __cdecl srv_paramset(SRV_PROC*,int,void*,int); |
318 |
|
|
319 |
|
char* __cdecl srv_paramname(SRV_PROC*,int,int*); |
320 |
|
int __cdecl srv_paramnumber(SRV_PROC*,char*,int); |
321 |
|
|
322 |
|
//-------------------------------------------------------------- |
323 |
|
//-------------------------------------------------------------- |
324 |
|
// The rest of these APIs are still supported, in SQL Server 7.0, |
325 |
|
// but may not be supported after SQL Server 7.0 |
326 |
|
|
327 |
|
// MACROs |
328 |
|
#define SRV_GETSERVER(a) srv_getserver ( a ) |
329 |
|
#define SRV_GOT_ATTENTION(a) srv_got_attention ( a ) |
330 |
|
#define SRV_TDSVERSION(a) srv_tdsversion ( a ) |
331 |
|
|
332 |
|
SRV_SERVER* __cdecl srv_getserver( SRV_PROC * srvproc ); |
333 |
|
BOOL __cdecl srv_got_attention( SRV_PROC * srvproc ); |
334 |
|
|
335 |
|
// Memory |
336 |
|
void* __cdecl srv_alloc(long int ulSize); |
337 |
|
int __cdecl srv_bmove(void* from,void* to,long int count); |
338 |
|
int __cdecl srv_bzero( void * location,long int count); |
339 |
|
int __cdecl srv_free( void * ptr ); |
340 |
|
|
341 |
|
|
342 |
|
int __cdecl srv_convert(SRV_PROC*,int,void*,long int,int,void*,long int); |
343 |
|
|
344 |
|
void* __cdecl srv_getuserdata( SRV_PROC * srvproc ); |
345 |
|
|
346 |
|
int __cdecl srv_getbindtoken(SRV_PROC * srvproc,char* token_buf); |
347 |
|
|
348 |
|
int __cdecl srv_getdtcxact(SRV_PROC * srvproc,void ** ppv); |
349 |
|
|
350 |
|
typedef int (* EventHandler)(void *); |
351 |
|
|
352 |
|
int __cdecl srv_impersonate_client( SRV_PROC * srvproc ); |
353 |
|
|
354 |
|
long __cdecl srv_langcpy(SRV_PROC * srvproc,long start,long nbytes,char* buffer); |
355 |
|
long __cdecl srv_langlen( SRV_PROC * srvproc ); |
356 |
|
void* __cdecl srv_langptr( SRV_PROC *srvproc ); |
357 |
|
|
358 |
|
int |
359 |
|
__cdecl srv_log( SRV_SERVER * server, |
360 |
|
BOOL datestamp, |
361 |
|
char * msg, |
362 |
|
int msglen ); |
363 |
|
|
364 |
|
int __cdecl srv_paramstatus(SRV_PROC*,int); |
365 |
|
|
366 |
|
void* __cdecl srv_pfieldex( SRV_PROC * srvproc,int field,int * len ); |
367 |
|
|
368 |
|
char* __cdecl srv_pfield( SRV_PROC * srvproc,int field,int * len ); |
369 |
|
|
370 |
|
int __cdecl srv_returnval( SRV_PROC * srvproc, |
371 |
|
char * valuename, |
372 |
|
int len, |
373 |
|
BYTE status, |
374 |
|
long int type, |
375 |
|
long int maxlen, |
376 |
|
long int datalen, |
377 |
|
void * value ); |
378 |
|
|
379 |
|
int __cdecl srv_revert_to_self( SRV_PROC * srvproc ); |
380 |
|
|
381 |
|
char* __cdecl srv_rpcdb(SRV_PROC* srvproc,int* len ); |
382 |
|
char* __cdecl srv_rpcname(SRV_PROC * srvproc,int* len ); |
383 |
|
int __cdecl srv_rpcnumber( SRV_PROC * srvproc ); |
384 |
|
USHORT __cdecl srv_rpcoptions( SRV_PROC * srvproc ); |
385 |
|
char* __cdecl srv_rpcowner( SRV_PROC * srvproc,int * len ); |
386 |
|
|
387 |
|
int __cdecl srv_wsendmsg( SRV_PROC * srvproc, |
388 |
|
long int msgnum, |
389 |
|
BYTE msgclass, |
390 |
|
WCHAR * message, // message text |
391 |
|
int msglen); // length of message text |
392 |
|
|
393 |
|
int |
394 |
|
__cdecl srv_sendmsg( SRV_PROC * srvproc, |
395 |
|
int msgtype, |
396 |
|
long int msgnum, |
397 |
|
BYTE msgclass, |
398 |
|
BYTE state, |
399 |
|
char * rpcname, |
400 |
|
int rpcnamelen, |
401 |
|
USHORT linenum, |
402 |
|
char * message, |
403 |
|
int msglen ); |
404 |
|
|
405 |
|
int __cdecl srv_sendstatus( SRV_PROC * srvproc,long int status ); |
406 |
|
|
407 |
|
|
408 |
|
int __cdecl srv_setuserdata(SRV_PROC* srvproc,void* ptr); |
409 |
|
|
410 |
|
|
411 |
|
char* __cdecl srv_sfield( SRV_SERVER * server,int field,int* len); |
412 |
|
|
413 |
|
char* __cdecl srv_symbol(int type,int symbol,int* len); |
414 |
|
|
415 |
|
int __cdecl srv_tdsversion(SRV_PROC* srvproc); |
416 |
|
|
417 |
|
BOOL __cdecl srv_willconvert(int srctype,int desttype ); |
418 |
|
|
419 |
|
int __cdecl srv_terminatethread( SRV_PROC * srvproc ); |
420 |
|
|
421 |
|
int __cdecl srv_sendstatistics( SRV_PROC * srvproc ); |
422 |
|
|
423 |
|
int __cdecl srv_clearstatistics( SRV_PROC * srvproc ); |
424 |
|
|
425 |
|
int __cdecl srv_message_handler( SRV_PROC * srvproc, |
426 |
|
int errornum, |
427 |
|
BYTE severity, |
428 |
|
BYTE state, |
429 |
|
int oserrnum, |
430 |
|
char * errtext, |
431 |
|
int errtextlen, |
432 |
|
char * oserrtext, |
433 |
|
int oserrtextlen ); |
434 |
|
|
435 |
|
int __cdecl srv_pre_handle( SRV_SERVER * server, |
436 |
|
SRV_PROC * srvproc, |
437 |
|
long int event, |
438 |
|
EventHandler handler, |
439 |
|
BOOL remove ); |
440 |
|
int __cdecl srv_post_handle( SRV_SERVER * server, |
441 |
|
SRV_PROC * srvproc, |
442 |
|
long int event, |
443 |
|
EventHandler handler, |
444 |
|
BOOL remove ); |
445 |
|
|
446 |
|
int __cdecl srv_IgnoreAnsiToOem( SRV_PROC * srvproc,BOOL bTF); |
447 |
|
|
448 |
|
#endif // #ifndef COMPILE_FOR_CLR |
449 |
|
|
450 |
|
#ifdef __cplusplus |
451 |
|
} |
452 |
|
#endif |
453 |
|
|
454 |
|
#pragma pack() |
455 |
|
|
456 |
|
#define SS_MAJOR_VERSION 7 |
457 |
|
#define SS_MINOR_VERSION 00 |
458 |
|
#define SS_LEVEL_VERSION 0000 |
459 |
|
#define SS_MINIMUM_VERSION "7.00.00.0000" |
460 |
|
#define ODS_VERSION ((SS_MAJOR_VERSION << 24) | (SS_MINOR_VERSION << 16)) |
461 |
|
|
462 |
|
#endif //_ODS_SRV_H_ |
463 |
|
|
464 |
|
////////////////////////////////////////////////////////////////// |
465 |
|
// Suggested implementation of __GetXpVersion |
466 |
|
// |
467 |
|
//__declspec(dllexport) ULONG __GetXpVersion() |
468 |
|
// { |
469 |
|
// return ODS_VERSION; |
470 |
|
// } |
471 |
|
////////////////////////////////////////////////////////////////// |
472 |
|
|
|
|
|