psqlodbc.c
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:3k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /* Module:          psqlodbc.c
  2.  *
  3.  * Description:     This module contains the main entry point (DllMain) for the library.
  4.  *                  It also contains functions to get and set global variables for the
  5.  *                  driver in the registry.
  6.  *
  7.  * Classes:         n/a
  8.  *
  9.  * API functions:   none
  10.  *
  11.  * Comments:        See "notice.txt" for copyright and license information.
  12.  *
  13.  */
  14. #ifdef HAVE_CONFIG_H
  15. #include "config.h"
  16. #endif
  17. #include "psqlodbc.h"
  18. #include "dlg_specific.h"
  19. #ifndef WIN32
  20. #include "iodbc.h"
  21. #include "isql.h"
  22. #include "isqlext.h"
  23. #else
  24. #include <winsock.h>
  25. #include <windows.h>
  26. #include <sql.h>
  27. #include <odbcinst.h>
  28. #endif
  29. GLOBAL_VALUES globals;
  30. BOOL _init(void);
  31. BOOL _fini(void);
  32. RETCODE SQL_API SQLDummyOrdinal(void);
  33. #ifdef WIN32
  34. HINSTANCE NEAR s_hModule;               /* Saved module handle. */
  35. /* This is where the Driver Manager attaches to this Driver */
  36. BOOL WINAPI DllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved) 
  37. {
  38. WORD wVersionRequested; 
  39. WSADATA wsaData; 
  40. switch (ul_reason_for_call) {
  41. case DLL_PROCESS_ATTACH:
  42. s_hModule = hInst; /* Save for dialog boxes */
  43. /* Load the WinSock Library */
  44. wVersionRequested = MAKEWORD(1, 1); 
  45. if ( WSAStartup(wVersionRequested, &wsaData))
  46. return FALSE;
  47. /* Verify that this is the minimum version of WinSock */
  48. if ( LOBYTE( wsaData.wVersion ) != 1 || 
  49. HIBYTE( wsaData.wVersion ) != 1 ) { 
  50. WSACleanup(); 
  51. return FALSE;
  52. }
  53. getGlobalDefaults(DBMS_NAME, ODBCINST_INI, FALSE);
  54. break;
  55. case DLL_THREAD_ATTACH:
  56. break;
  57. case DLL_PROCESS_DETACH:
  58. WSACleanup();
  59. return TRUE;
  60. case DLL_THREAD_DETACH:
  61. break;
  62. default:
  63. break;
  64. }
  65. return TRUE;                                                                
  66.                                                                                 
  67. UNREFERENCED_PARAMETER(lpReserved);                                         
  68. }
  69. #else /* WIN32 */
  70. #ifndef TRUE
  71. #define TRUE (BOOL)1
  72. #endif
  73. #ifndef FALSE
  74. #define FALSE (BOOL)0
  75. #endif
  76. /* These two functions do shared library initialziation on UNIX, well at least
  77.  * on Linux. I don't know about other systems.
  78.  */
  79. BOOL
  80. _init(void)
  81. {
  82. getGlobalDefaults(DBMS_NAME, ODBCINST_INI, FALSE);
  83. return TRUE;
  84. }
  85. BOOL
  86. _fini(void)
  87. {
  88. return TRUE;
  89. }
  90. #endif
  91. /* This function is used to cause the Driver Manager to
  92. call functions by number rather than name, which is faster.
  93. The ordinal value of this function must be 199 to have the
  94. Driver Manager do this.  Also, the ordinal values of the
  95. functions must match the value of fFunction in SQLGetFunctions()
  96. */
  97. RETCODE SQL_API SQLDummyOrdinal(void)
  98. {
  99. return SQL_SUCCESS;
  100. }