105 lines
2.9 KiB
C++
105 lines
2.9 KiB
C++
|
//
|
||
|
// Broadbnd.cpp
|
||
|
//
|
||
|
// Code for keeping track of which NIC is the user's broadband NIC.
|
||
|
// NOTE: this may be replaced by standard ICS APIs.
|
||
|
//
|
||
|
// History:
|
||
|
//
|
||
|
// 9/29/1999 KenSh Created from JetNet sources
|
||
|
// 11/03/1999 KenSh Fixed so it uses proper registry keys
|
||
|
//
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "NetConn.h"
|
||
|
#include "nconnwrap.h"
|
||
|
|
||
|
static const TCHAR c_szAppRegKey[] = _T("Software\\Microsoft\\Windows\\CurrentVersion\\HomeNetWizard");
|
||
|
static const TCHAR c_szRegVal_Broadband[] = _T("BroadbandAdapter");
|
||
|
|
||
|
|
||
|
// Did the user pick this adapter as their broadband connection either in Setup
|
||
|
// or in the diagnostic app?
|
||
|
BOOL WINAPI IsAdapterBroadband(const NETADAPTER* pAdapter)
|
||
|
{
|
||
|
CRegistry reg;
|
||
|
if (!reg.OpenKey(HKEY_LOCAL_MACHINE, c_szAppRegKey, KEY_READ))
|
||
|
{
|
||
|
return (pAdapter->bIcsStatus == ICS_EXTERNAL);
|
||
|
}
|
||
|
|
||
|
if (pAdapter->bNicType == NIC_VIRTUAL || pAdapter->bNetType != NETTYPE_LAN)
|
||
|
return FALSE; // not an ethernet NIC, therefore not broadband
|
||
|
|
||
|
TCHAR szAdapterNumber[20];
|
||
|
if (reg.QueryStringValue(c_szRegVal_Broadband, szAdapterNumber, _countof(szAdapterNumber)))
|
||
|
{
|
||
|
return (0 == lstrcmpi(FindFileTitle(pAdapter->szClassKey), szAdapterNumber));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return FALSE;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Saves info about the user's broadband selection into the registry
|
||
|
// Adapter number is FindFileTitle(pAdapter->szClassKey)
|
||
|
void WINAPI SaveBroadbandSettings(LPCSTR pszBroadbandAdapterNumber)
|
||
|
{
|
||
|
CRegistry reg;
|
||
|
if (reg.CreateKey(HKEY_LOCAL_MACHINE, c_szAppRegKey))
|
||
|
{
|
||
|
// No high speed connection? then don't save one.
|
||
|
if (pszBroadbandAdapterNumber == NULL || *pszBroadbandAdapterNumber == _T('\0'))
|
||
|
{
|
||
|
reg.DeleteValue(c_szRegVal_Broadband);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
// Save the enum key of the NIC we want to use
|
||
|
reg.SetStringValue(c_szRegVal_Broadband, pszBroadbandAdapterNumber);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
#if 0 // old JetNet function not used by Home Networking Wizard
|
||
|
|
||
|
// Loads current broadband settings from the registry, and updates the registry
|
||
|
// if we now have more information about a recently installed broadband NIC
|
||
|
BOOL WINAPI UpdateBroadbandSettings(LPTSTR pszEnumKeyBuf, int cchEnumKeyBuf)
|
||
|
{
|
||
|
ASSERT(pszEnumKeyBuf != NULL);
|
||
|
*pszEnumKeyBuf = '\0';
|
||
|
|
||
|
CRegistry reg;
|
||
|
if (reg.OpenKey(HKEY_LOCAL_MACHINE, c_szBroadbandRegKey))
|
||
|
{
|
||
|
if (reg.QueryStringValue("BroadbandYes", pszEnumKeyBuf, cchEnumKeyBuf))
|
||
|
goto done; // we already have a particular broadband NIC selected
|
||
|
|
||
|
NETADAPTER* prgAdapters;
|
||
|
int cAdapters = EnumNetAdapters(&prgAdapters);
|
||
|
NETADAPTER* pBroadbandAdapter = NULL;
|
||
|
for (int iAdapter = 0; iAdapter < cAdapters; iAdapter++)
|
||
|
{
|
||
|
NETADAPTER* pAdapter = &prgAdapters[iAdapter];
|
||
|
if (IsAdapterBroadband(pAdapter))
|
||
|
{
|
||
|
pBroadbandAdapter = pAdapter;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
if (pBroadbandAdapter != NULL)
|
||
|
{
|
||
|
SaveBroadbandSettings(pBroadbandAdapter->szEnumKey);
|
||
|
lstrcpyn(pszEnumKeyBuf, pBroadbandAdapter->szEnumKey, cchEnumKeyBuf);
|
||
|
}
|
||
|
NetConnFree(prgAdapters);
|
||
|
}
|
||
|
|
||
|
done:
|
||
|
return (*pszEnumKeyBuf != '\0');
|
||
|
}
|
||
|
#endif // 0
|