Sock_Connect.cpp File Reference

#include "ace/Sock_Connect.h"
#include "ace/INET_Addr.h"
#include "ace/Log_Msg.h"
#include "ace/Handle_Set.h"
#include "ace/Auto_Ptr.h"
#include "ace/SString.h"
#include "ace/OS_Memory.h"
#include "ace/OS_NS_stdio.h"
#include "ace/OS_NS_stdlib.h"
#include "ace/OS_NS_string.h"
#include "ace/OS_NS_sys_socket.h"
#include "ace/OS_NS_netdb.h"
#include "ace/OS_NS_unistd.h"
#include "ace/os_include/net/os_if.h"
#include "ace/Guard_T.h"
#include "ace/Recursive_Thread_Mutex.h"
#include "ace/Object_Manager.h"

Include dependency graph for Sock_Connect.cpp:

Include dependency graph

Go to the source code of this file.

Enumerations

enum  ACE_WINDOWS_VERSION {
  ACE_WINDOWS_IS_UNKNOWN, ACE_WINDOWS_IS_WIN95, ACE_WINDOWS_IS_WIN98, ACE_WINDOWS_IS_WINME,
  ACE_WINDOWS_IS_WINNT, ACE_WINDOWS_IS_WIN2K, ACE_WINDOWS_IS_WINCE
}

Functions

int get_reg_subkeys (const ACE_TCHAR *key, ACE_TCHAR *buffer, DWORD &buf_len)
int get_reg_value (const ACE_TCHAR *key, const ACE_TCHAR *name, ACE_TCHAR *buffer, DWORD &buf_len, int all_subkeys=0)
ACE_WINDOWS_VERSION get_windows_version ()

Variables

int ace_ipv6_enabled = -1
 Does this box have ipv6 turned on?


Enumeration Type Documentation

enum ACE_WINDOWS_VERSION
 

Enumeration values:
ACE_WINDOWS_IS_UNKNOWN 
ACE_WINDOWS_IS_WIN95 
ACE_WINDOWS_IS_WIN98 
ACE_WINDOWS_IS_WINME 
ACE_WINDOWS_IS_WINNT 
ACE_WINDOWS_IS_WIN2K 
ACE_WINDOWS_IS_WINCE 

Definition at line 225 of file Sock_Connect.cpp.

Referenced by ACE::get_ip_interfaces().


Function Documentation

int get_reg_subkeys const ACE_TCHAR key,
ACE_TCHAR buffer,
DWORD &  buf_len
[static]
 

Definition at line 89 of file Sock_Connect.cpp.

References ACE_MAX_FULLY_QUALIFIED_NAME_LEN, ACE_TCHAR, and ACE_OS::strcpy().

00092 {
00093   HKEY hk;
00094   LONG rc = ACE_TEXT_RegOpenKeyEx (HKEY_LOCAL_MACHINE,
00095                                    key,
00096                                    0,
00097                                    KEY_READ,
00098                                    &hk);
00099 
00100   if (rc != ERROR_SUCCESS)
00101     return -1;
00102 
00103   ACE_TCHAR subkeyname[ACE_MAX_FULLY_QUALIFIED_NAME_LEN + 1];
00104   DWORD subkeyname_len = ACE_MAX_FULLY_QUALIFIED_NAME_LEN;
00105   FILETIME update_dummy;
00106 
00107   DWORD total = 0;
00108 
00109   for (int i = 0;
00110        (rc = ACE_TEXT_RegEnumKeyEx (hk, i,
00111                                     subkeyname,
00112                                     &subkeyname_len,
00113                                     0, 0, 0,
00114                                     &update_dummy)) != ERROR_NO_MORE_ITEMS;
00115         ++i)
00116     {
00117       if (subkeyname_len < buf_len - total)
00118         {
00119           ACE_OS::strcpy(buffer + total, subkeyname);
00120           total += subkeyname_len + 1;
00121           // Reset: was changed by RegEnumKeyEx call.
00122           subkeyname_len = ACE_MAX_FULLY_QUALIFIED_NAME_LEN + 1;
00123         }
00124       else
00125         return -1;
00126     }
00127 
00128   buf_len = total;
00129 
00130   ::RegCloseKey (hk);
00131   return 0;
00132 }

int get_reg_value const ACE_TCHAR key,
const ACE_TCHAR name,
ACE_TCHAR buffer,
DWORD &  buf_len,
int  all_subkeys = 0
[static]
 

Definition at line 139 of file Sock_Connect.cpp.

References ACE_MAX_FULLY_QUALIFIED_NAME_LEN, and ACE_TCHAR.

Referenced by ACE::get_ip_interfaces().

00144 {
00145   HKEY hk;
00146   DWORD buf_type;
00147   LONG rc = ACE_TEXT_RegOpenKeyEx (HKEY_LOCAL_MACHINE,
00148                                    key,
00149                                    0,
00150                                    KEY_READ,
00151                                    &hk);
00152 
00153   if (rc != ERROR_SUCCESS)
00154     // print_error_string(ACE_LIB_TEXT ("RegOpenKeyEx"), rc);
00155     return -1;
00156 
00157   if (all_subkeys)
00158     {
00159       ACE_TCHAR ifname[ACE_MAX_FULLY_QUALIFIED_NAME_LEN + 1];
00160       DWORD ifname_len = ACE_MAX_FULLY_QUALIFIED_NAME_LEN + 1;
00161       FILETIME update_dummy;
00162 
00163       DWORD total = 0;
00164       DWORD size = buf_len;
00165 
00166       for (int i = 0;
00167            (rc = ACE_TEXT_RegEnumKeyEx (hk, i, ifname, &ifname_len,
00168                                         0, 0, 0,
00169                                         &update_dummy)) != ERROR_NO_MORE_ITEMS;
00170            ++i)
00171         {
00172           HKEY ifkey;
00173           if (rc != ERROR_SUCCESS
00174               || ACE_TEXT_RegOpenKeyEx (hk, ifname, 0,
00175                                         KEY_READ, &ifkey) != ERROR_SUCCESS)
00176             continue;
00177 
00178           if (ACE_TEXT_RegQueryValueEx (ifkey, name, 0, 0,
00179                                         (u_char*) (buffer + total),
00180                                         &size) != ERROR_SUCCESS)
00181             {
00182               RegCloseKey(ifkey);
00183               continue;
00184             }
00185           else
00186             {
00187               total += size;
00188               size = buf_len - total;
00189             }
00190           // Needs to be reset.
00191           ifname_len = ACE_MAX_FULLY_QUALIFIED_NAME_LEN + 1;
00192         }
00193 
00194       if (total == 0)
00195         {
00196           ::RegCloseKey (hk);
00197           return -2;
00198         }
00199       else
00200         {
00201           buf_len = total;
00202         }
00203     }
00204   else
00205     {
00206 
00207       rc = ACE_TEXT_RegQueryValueEx (hk,
00208                                      name,
00209                                      0,
00210                                      &buf_type,
00211                                      (u_char *) buffer,
00212                                      &buf_len);
00213       if (rc != ERROR_SUCCESS)
00214         {
00215           // print_error_string(ACE_LIB_TEXT ("RegEnumKeyEx"), rc);
00216           RegCloseKey (hk);
00217           return -2;
00218         }
00219     }
00220 
00221   ::RegCloseKey (hk);
00222   return 0;
00223 }

ACE_WINDOWS_VERSION get_windows_version  )  [static]
 

Definition at line 236 of file Sock_Connect.cpp.

References ACE_WINDOWS_IS_UNKNOWN, ACE_WINDOWS_IS_WIN2K, ACE_WINDOWS_IS_WIN95, ACE_WINDOWS_IS_WIN98, ACE_WINDOWS_IS_WINCE, ACE_WINDOWS_IS_WINME, and ACE_WINDOWS_IS_WINNT.

Referenced by ACE::get_ip_interfaces().

00237 {
00238   OSVERSIONINFO vinfo;
00239   vinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
00240   if (::GetVersionEx(&vinfo) == 0)
00241     {
00242       return ACE_WINDOWS_IS_UNKNOWN;
00243     }
00244 
00245   switch (vinfo.dwPlatformId)
00246     {
00247     case VER_PLATFORM_WIN32_NT:
00248       if (vinfo.dwMajorVersion <= 4)
00249         return ACE_WINDOWS_IS_WINNT;
00250       else
00251         return ACE_WINDOWS_IS_WIN2K;
00252     case VER_PLATFORM_WIN32_WINDOWS:
00253       if (vinfo.dwMajorVersion == 4)
00254         {
00255           if (vinfo.dwMinorVersion == 0)
00256             return ACE_WINDOWS_IS_WIN95;
00257           else if (vinfo.dwMinorVersion == 10)
00258             return ACE_WINDOWS_IS_WIN98;
00259           else if (vinfo.dwMinorVersion == 90)
00260             return ACE_WINDOWS_IS_WINME;
00261         }
00262 #if defined (VER_PLATFORM_WIN32_CE)
00263     case VER_PLATFORM_WIN32_CE:
00264         if (vinfo.dwMajorVersion >= 3) {
00265             return ACE_WINDOWS_IS_WINCE;
00266         }
00267         else {
00268             return ACE_WINDOWS_IS_UNKNOWN;
00269         }
00270 #endif /* VER_PLATFORM_WIN32_CE */
00271       // If no match we fall throu.
00272     default:
00273       return ACE_WINDOWS_IS_UNKNOWN;
00274     }
00275 }


Variable Documentation

int ace_ipv6_enabled = -1 [static]
 

Does this box have ipv6 turned on?

Definition at line 64 of file Sock_Connect.cpp.

Referenced by ACE::ipv6_enabled().


Generated on Thu Nov 9 11:08:26 2006 for ACE by doxygen 1.3.6