1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef _ODS_SRV_H_
7#define _ODS_SRV_H_
8
9#ifndef COMPILE_FOR_CLR
10#include "windows.h"
11#endif
12
13#pragma pack(4)
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
19#ifndef FAR
20#define FAR
21#endif
22
23#ifndef DBTYPEDEFS
24#ifndef MAXNUMERICLEN
25#define DBTYPEDEFS
26
27  typedef unsigned char DBBOOL;
28  typedef unsigned char DBBYTE;
29  typedef unsigned char DBTINYINT;
30  typedef short DBSMALLINT;
31  typedef unsigned short DBUSMALLINT;
32  typedef __LONG32 DBINT;
33  typedef char DBCHAR;
34  typedef unsigned char DBBINARY;
35  typedef unsigned char DBBIT;
36  typedef double DBFLT8;
37
38  typedef struct srv_datetime {
39    __LONG32 dtdays;
40    unsigned __LONG32 dttime;
41  } DBDATETIME;
42
43  typedef struct srv_money {
44    __LONG32 mnyhigh;
45    unsigned __LONG32 mnylow;
46  } DBMONEY;
47
48  typedef float DBFLT4;
49  typedef __LONG32 DBMONEY4;
50
51  typedef struct dbdatetime4 {
52    unsigned short numdays;
53    unsigned short nummins;
54  } DBDATETIM4;
55
56#define MAXNUMERICLEN 16
57  typedef struct dbnumeric {
58    BYTE precision;
59    BYTE scale;
60    BYTE sign;
61    BYTE val[MAXNUMERICLEN];
62  } DBNUMERIC;
63  typedef DBNUMERIC DBDECIMAL;
64#endif
65#endif
66
67#define SRV_TDS_NULL (BYTE) 0x1f
68#define SRV_TDS_TEXT (BYTE) 0x23
69#define SRV_TDS_GUID (BYTE) 0x24
70#define SRV_TDS_VARBINARY (BYTE) 0x25
71#define SRV_TDS_INTN (BYTE) 0x26
72#define SRV_TDS_VARCHAR (BYTE) 0x27
73#define SRV_TDS_BINARY (BYTE) 0x2d
74#define SRV_TDS_IMAGE (BYTE) 0x22
75#define SRV_TDS_CHAR (BYTE) 0x2f
76#define SRV_TDS_INT1 (BYTE) 0x30
77#define SRV_TDS_BIT (BYTE) 0x32
78#define SRV_TDS_INT2 (BYTE) 0x34
79#define SRV_TDS_DECIMAL (BYTE) 0x37
80#define SRV_TDS_INT4 (BYTE) 0x38
81#define SRV_TDS_DATETIM4 (BYTE) 0x3a
82#define SRV_TDS_FLT4 (BYTE) 0x3b
83#define SRV_TDS_MONEY (BYTE) 0x3c
84#define SRV_TDS_DATETIME (BYTE) 0x3d
85#define SRV_TDS_FLT8 (BYTE) 0x3e
86#define SRV_TDS_NUMERIC (BYTE) 0x3f
87#define SRV_TDS_SSVARIANT (BYTE) 0x62
88#define SRV_TDS_NTEXT (BYTE) 0x63
89#define SRV_TDS_BITN (BYTE) 0x68
90#define SRV_TDS_DECIMALN (BYTE) 0x6a
91#define SRV_TDS_NUMERICN (BYTE) 0x6c
92#define SRV_TDS_FLTN (BYTE) 0x6d
93#define SRV_TDS_MONEYN (BYTE) 0x6e
94#define SRV_TDS_DATETIMN (BYTE) 0x6f
95#define SRV_TDS_MONEY4 (BYTE) 0x7a
96#define SRV_TDS_INT8 (BYTE) 0x7f
97#define SRV_TDS_BIGVARBINARY (BYTE) 0xA5
98#define SRV_TDS_BIGVARCHAR (BYTE) 0xA7
99#define SRV_TDS_BIGBINARY (BYTE) 0xAD
100#define SRV_TDS_BIGCHAR (BYTE) 0xAF
101#define SRV_TDS_NVARCHAR (BYTE) 0xe7
102#define SRV_TDS_NCHAR (BYTE) 0xef
103
104#define SRVNULL SRV_TDS_NULL
105#define SRVTEXT SRV_TDS_TEXT
106#define SRVGUID SRV_TDS_GUID
107#define SRVVARBINARY SRV_TDS_VARBINARY
108#define SRVINTN SRV_TDS_INTN
109#define SRVVARCHAR SRV_TDS_VARCHAR
110#define SRVBINARY SRV_TDS_BINARY
111#define SRVIMAGE SRV_TDS_IMAGE
112#define SRVCHAR SRV_TDS_CHAR
113#define SRVINT1 SRV_TDS_INT1
114#define SRVBIT SRV_TDS_BIT
115#define SRVINT2 SRV_TDS_INT2
116#define SRVDECIMAL SRV_TDS_DECIMAL
117#define SRVINT4 SRV_TDS_INT4
118#define SRVDATETIM4 SRV_TDS_DATETIM4
119#define SRVFLT4 SRV_TDS_FLT4
120#define SRVMONEY SRV_TDS_MONEY
121#define SRVDATETIME SRV_TDS_DATETIME
122#define SRVFLT8 SRV_TDS_FLT8
123#define SRVNUMERIC SRV_TDS_NUMERIC
124#define SRVSSVARIANT SRV_TDS_SSVARIANT
125#define SRVNTEXT SRV_TDS_NTEXT
126#define SRVBITN SRV_TDS_BITN
127#define SRVDECIMALN SRV_TDS_DECIMALN
128#define SRVNUMERICN SRV_TDS_NUMERICN
129#define SRVFLTN SRV_TDS_FLTN
130#define SRVMONEYN SRV_TDS_MONEYN
131#define SRVDATETIMN SRV_TDS_DATETIMN
132#define SRVMONEY4 SRV_TDS_MONEY4
133#define SRVINT8 SRV_TDS_INT8
134#define SRVBIGVARBINARY SRV_TDS_BIGVARBINARY
135#define SRVBIGVARCHAR SRV_TDS_BIGVARCHAR
136#define SRVBIGBINARY SRV_TDS_BIGBINARY
137#define SRVBIGCHAR SRV_TDS_BIGCHAR
138#define SRVNVARCHAR SRV_TDS_NVARCHAR
139#define SRVNCHAR SRV_TDS_NCHAR
140
141#define SRV_ERROR 0
142#define SRV_DONE 1
143#define SRV_DATATYPE 2
144#define SRV_EVENT 4
145
146#define SRV_ENO_OS_ERR 0
147#define SRV_INFO 1
148#define SRV_FATAL_PROCESS 10
149#define SRV_FATAL_SERVER 19
150
151#define SRV_CONTINUE 0
152#define SRV_LANGUAGE 1
153#define SRV_CONNECT 2
154#define SRV_RPC 3
155#define SRV_RESTART 4
156#define SRV_DISCONNECT 5
157#define SRV_ATTENTION 6
158#define SRV_SLEEP 7
159#define SRV_START 8
160#define SRV_STOP 9
161#define SRV_EXIT 10
162#define SRV_CANCEL 11
163#define SRV_SETUP 12
164#define SRV_CLOSE 13
165#define SRV_PRACK 14
166#define SRV_PRERROR 15
167#define SRV_ATTENTION_ACK 16
168#define SRV_CONNECT_V7 16
169#define SRV_SKIP 17
170#define SRV_TRANSMGR 18
171#define SRV_PRELOGIN 19
172#define SRV_OLEDB 20
173#define SRV_INTERNAL_HANDLER 99
174#define SRV_PROGRAMMER_DEFINED 100
175
176#define SRV_SERVERNAME 0
177#define SRV_VERSION 6
178
179#define SRV_NULLTERM -1
180
181#define SRV_MSG_INFO 1
182#define SRV_MSG_ERROR 2
183
184#define SRV_DONE_FINAL (USHORT) 0x0000
185#define SRV_DONE_MORE (USHORT) 0x0001
186#define SRV_DONE_ERROR (USHORT) 0x0002
187#define SRV_DONE_COUNT (USHORT) 0x0010
188#define SRV_DONE_RPC_IN_BATCH (USHORT) 0x0080
189
190#define SRV_PARAMRETURN 0x0001
191#define SRV_PARAMDEFAULT 0x0002
192#define SRV_PARAMSORTORDER 0x0004
193
194#define SRV_RECOMPILE 0x0001
195#define SRV_NOMETADATA 0x0002
196
197#define SRV_SPID 10
198#define SRV_NETSPID 11
199#define SRV_TYPE 12
200#define SRV_STATUS 13
201#define SRV_RMTSERVER 14
202#define SRV_HOST 15
203#define SRV_USER 16
204#define SRV_PWD 17
205#define SRV_CPID 18
206#define SRV_APPLNAME 19
207#define SRV_TDS 20
208#define SRV_CLIB 21
209#define SRV_LIBVERS 22
210#define SRV_ROWSENT 23
211#define SRV_BCPFLAG 24
212#define SRV_NATLANG 25
213#define SRV_PIPEHANDLE 26
214#define SRV_NETWORK_MODULE 27
215#define SRV_NETWORK_VERSION 28
216#define SRV_NETWORK_CONNECTION 29
217#define SRV_LSECURE 30
218#define SRV_SAXP 31
219#define SRV_UNICODE_USER 33
220#define SRV_UNICODE_PWD 35
221#define SRV_SPROC_CODEPAGE 36
222#define SRV_MSGLCID 37
223#define SRV_INSTANCENAME 38
224#define SRV_HASHPWD 39
225#define SRV_UNICODE_CURRENTLOGIN 40
226
227#define SRV_TDS_NONE 0
228#define SRV_TDS_2_0 1
229#define SRV_TDS_3_4 2
230#define SRV_TDS_4_2 3
231#define SRV_TDS_6_0 4
232#define SRV_TDS_7_0 5
233
234  typedef int SRVRETCODE;
235#ifndef ODBCVER
236  typedef int RETCODE;
237#endif
238
239#ifndef SUCCEED
240#define SUCCEED 1
241#endif
242
243#ifndef FAIL
244#define FAIL 0
245#endif
246
247#define SRV_DUPLICATE_HANDLER 2
248
249#ifndef COMPILE_FOR_CLR
250  struct srv_server;
251  typedef struct srv_server SRV_SERVER;
252
253  struct srv_config;
254  typedef struct srv_config SRV_CONFIG;
255
256  struct CXPData;
257  typedef struct CXPData SRV_PROC;
258
259  int __cdecl srv_describe(SRV_PROC *,int,char*,int,__LONG32,__LONG32,__LONG32,__LONG32,void *);
260  int __cdecl srv_setutype(SRV_PROC *srvproc,int column,__LONG32 usertype);
261  int __cdecl srv_setcoldata(SRV_PROC *srvproc,int column,void *data);
262  int __cdecl srv_setcollen(SRV_PROC *srvproc,int column,int len);
263  int __cdecl srv_sendrow(SRV_PROC *srvproc);
264  int __cdecl srv_senddone(SRV_PROC *srvproc,USHORT status,USHORT curcmd,__LONG32 count);
265  int __cdecl srv_rpcparams(SRV_PROC *);
266  int __cdecl srv_paraminfo(SRV_PROC *,int,BYTE *,ULONG *,ULONG *,BYTE *,WINBOOL *);
267  int __cdecl srv_paramsetoutput(SRV_PROC *,int,BYTE *,ULONG,WINBOOL);
268  void *__cdecl srv_paramdata(SRV_PROC *,int);
269  int __cdecl srv_paramlen(SRV_PROC *,int);
270  int __cdecl srv_parammaxlen(SRV_PROC *,int);
271  int __cdecl srv_paramtype(SRV_PROC *,int);
272  int __cdecl srv_paramset(SRV_PROC *,int,void *,int);
273  char *__cdecl srv_paramname(SRV_PROC *,int,int*);
274  int __cdecl srv_paramnumber(SRV_PROC *,char*,int);
275
276#define SRV_GETSERVER(a) srv_getserver (a)
277#define SRV_GOT_ATTENTION(a) srv_got_attention (a)
278#define SRV_TDSVERSION(a) srv_tdsversion (a)
279
280  SRV_SERVER *__cdecl srv_getserver(SRV_PROC *srvproc);
281  WINBOOL __cdecl srv_got_attention(SRV_PROC *srvproc);
282
283  void *__cdecl srv_alloc(__LONG32 ulSize);
284  int __cdecl srv_bmove(void *from,void *to,__LONG32 count);
285  int __cdecl srv_bzero(void *location,__LONG32 count);
286  int __cdecl srv_free(void *ptr);
287  int __cdecl srv_convert(SRV_PROC *,int,void *,__LONG32,int,void *,__LONG32);
288  void *__cdecl srv_getuserdata(SRV_PROC *srvproc);
289  int __cdecl srv_getbindtoken(SRV_PROC *srvproc,char *token_buf);
290  int __cdecl srv_getdtcxact(SRV_PROC *srvproc,void **ppv);
291
292  typedef int (*EventHandler)(void *);
293
294  int __cdecl srv_impersonate_client(SRV_PROC *srvproc);
295  __LONG32 __cdecl srv_langcpy(SRV_PROC *srvproc,__LONG32 start,__LONG32 nbytes,char *buffer);
296  __LONG32 __cdecl srv_langlen(SRV_PROC *srvproc);
297  void *__cdecl srv_langptr(SRV_PROC *srvproc);
298
299  int __cdecl srv_log(SRV_SERVER *server,WINBOOL datestamp,char *msg,int msglen);
300  int __cdecl srv_paramstatus(SRV_PROC *,int);
301  void *__cdecl srv_pfieldex(SRV_PROC *srvproc,int field,int *len);
302  char *__cdecl srv_pfield(SRV_PROC *srvproc,int field,int *len);
303  int __cdecl srv_returnval(SRV_PROC *srvproc,char *valuename,int len,BYTE status,__LONG32 type,__LONG32 maxlen,__LONG32 datalen,void *value);
304  int __cdecl srv_revert_to_self(SRV_PROC *srvproc);
305  char *__cdecl srv_rpcdb(SRV_PROC *srvproc,int *len);
306  char *__cdecl srv_rpcname(SRV_PROC *srvproc,int *len);
307  int __cdecl srv_rpcnumber(SRV_PROC *srvproc);
308  USHORT __cdecl srv_rpcoptions(SRV_PROC *srvproc);
309  char *__cdecl srv_rpcowner(SRV_PROC *srvproc,int *len);
310  int __cdecl srv_wsendmsg(SRV_PROC *srvproc,__LONG32 msgnum,BYTE msgclass,WCHAR *message,int msglen);
311  int __cdecl srv_sendmsg(SRV_PROC *srvproc,int msgtype,__LONG32 msgnum,BYTE msgclass,BYTE state,char *rpcname,int rpcnamelen,USHORT linenum,char *message,int msglen);
312  int __cdecl srv_sendstatus(SRV_PROC *srvproc,__LONG32 status);
313  int __cdecl srv_setuserdata(SRV_PROC *srvproc,void *ptr);
314  char *__cdecl srv_sfield(SRV_SERVER *server,int field,int *len);
315  char *__cdecl srv_symbol(int type,int symbol,int *len);
316  int __cdecl srv_tdsversion(SRV_PROC *srvproc);
317  WINBOOL __cdecl srv_willconvert(int srctype,int desttype);
318  int __cdecl srv_terminatethread(SRV_PROC *srvproc);
319  int __cdecl srv_sendstatistics(SRV_PROC *srvproc);
320  int __cdecl srv_clearstatistics(SRV_PROC *srvproc);
321  int __cdecl srv_message_handler(SRV_PROC *srvproc,int errornum,BYTE severity,BYTE state,int oserrnum,char *errtext,int errtextlen,char *oserrtext,int oserrtextlen);
322  int __cdecl srv_pre_handle(SRV_SERVER *server,SRV_PROC *srvproc,__LONG32 event,EventHandler handler,WINBOOL remove);
323  int __cdecl srv_post_handle(SRV_SERVER *server,SRV_PROC *srvproc,__LONG32 event,EventHandler handler,WINBOOL remove);
324  int __cdecl srv_IgnoreAnsiToOem(SRV_PROC *srvproc,WINBOOL bTF);
325#endif
326
327#ifdef __cplusplus
328}
329#endif
330
331#pragma pack()
332
333#define SS_MAJOR_VERSION 7
334#define SS_MINOR_VERSION 00
335#define SS_LEVEL_VERSION 0000
336#define SS_MINIMUM_VERSION "7.00.00.0000"
337#define ODS_VERSION ((SS_MAJOR_VERSION << 24) | (SS_MINOR_VERSION << 16))
338#endif
339