home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 32 / IOPROG_32.ISO / SOFT / SqlEval7 / devtools / include / srv.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-04  |  16.0 KB  |  532 lines

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