bool GetGateayInfo(char *szGwIp)  
 {  
     PIP_ADAPTER_INFO   pAdapterInfo;  
     PIP_ADAPTER_INFO   pAdapter   =   NULL;  
     DWORD   dwRetVal   =   0;  
     
     pAdapterInfo   =   (IP_ADAPTER_INFO   *) malloc(   sizeof(IP_ADAPTER_INFO)   );  
     unsigned   long   ulOutBufLen   =   sizeof(IP_ADAPTER_INFO);  
     
     //   Make   an   initial   call   to   GetAdaptersInfo   to   get  
     //   the   necessary   size   into   the   ulOutBufLen   variable  
     if( GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW)
     {  
         free(pAdapterInfo);  
         pAdapterInfo = (IP_ADAPTER_INFO *)malloc(ulOutBufLen);    
     }  
     
     if   ((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR)    
     {  
         pAdapter   =   pAdapterInfo;  
         while   (pAdapter)    
         {  
             TRACE("/tAdapter   Name:   /t%s/n",   pAdapter->AdapterName);  
             TRACE("/tAdapter   Desc:   /t%s/n",   pAdapter->Description);  
             TRACE("/tAdapter   Addr:   /t%ld/n",   pAdapter->Address);  
             TRACE("/tIP   Address:   /t%s/n",   pAdapter->IpAddressList.IpAddress.String);  
             TRACE("/tIP   Mask:   /t%s/n",   pAdapter->IpAddressList.IpMask.String);  
             TRACE("/tGateway:   /t%s/n",   pAdapter->GatewayList.IpAddress.String);  
             TRACE("网关[%s]",   pAdapter->GatewayList.IpAddress.String);  
             //AfxMessageBox(strGwIp);  
             
             TRACE("/t***/n");  
             if   (pAdapter->DhcpEnabled)    
             {  
                 TRACE("/tDHCP   Enabled:   Yes/n");  
                 TRACE("/t/tDHCP   Server:   /t%s/n",   pAdapter->DhcpServer.IpAddress.String);  
                 TRACE("/tLease   Obtained:   %ld/n",   pAdapter->LeaseObtained);  
             }  
             else  
                 TRACE("/tDHCP   Enabled:   No/n");  
             
             if   (pAdapter->HaveWins)    
             {  
                 TRACE("/tHave   Wins:   Yes/n");  
                 TRACE("/t/tPrimary   Wins   Server:   /t%s/n",   pAdapter->PrimaryWinsServer.IpAddress.String);  
                 TRACE("/t/tSecondary   Wins   Server:   /t%s/n",   pAdapter->SecondaryWinsServer.IpAddress.String);  
             }  
             else  
                 TRACE("/tHave   Wins:   No/n");  
             pAdapter   =   pAdapter->Next;  
         }  
     }  
     else    
     {  
         TRACE("Call   to   GetAdaptersInfo   failed./n");  
         return   false;  
     }  
     free(pAdapterInfo);  
     
     return true;  
 }