|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: I S D N H O O K . C P P
//
// Contents: Hook for the ISDN wizard, from the netdi.cpp class installer
//
// Notes:
//
// Author: jeffspr 14 Jun 1997
//
//----------------------------------------------------------------------------
#include "pch.h"
#pragma hdrstop
#include "isdncfg.h"
#include "isdnwiz.h"
#include "ncmisc.h"
#include "ncreg.h"
#include "ncstring.h"
//---[ Constants ]------------------------------------------------------------
extern const WCHAR c_szRegKeyInterfacesFromInstance[]; extern const WCHAR c_szRegValueLowerRange[];
//+--------------------------------------------------------------------------
//
// Function: FAdapterIsIsdn
//
// Purpose: Checks information under the adapters driver's key to
// determine if the adapter is ISDN
//
// Arguments:
// hkeyDriver [in] The driver key for the adapter
//
// Returns: BOOL. TRUE if the adapter is ISDN, FALSE otherwise
//
// Author: billbe 09 Sep 1997
//
// Notes:
//
BOOL FAdapterIsIsdn(HKEY hkeyDriver) { Assert(hkeyDriver);
const WCHAR c_szIsdn[] = L"isdn"; HKEY hkey; BOOL fIsIsdn = FALSE;
// Open the Interfaces key under the driver key
HRESULT hr = HrRegOpenKeyEx(hkeyDriver, c_szRegKeyInterfacesFromInstance, KEY_READ, &hkey);
if (SUCCEEDED(hr)) { PWSTR szRange; // Get the lower range of interfaces
hr = HrRegQuerySzWithAlloc(hkey, c_szRegValueLowerRange, &szRange);
if (SUCCEEDED(hr)) { // Look for ISDN in the lower range
fIsIsdn = FFindStringInCommaSeparatedList(c_szIsdn, szRange, NC_IGNORE, NULL); MemFree(szRange); } RegCloseKey(hkey); }
return fIsIsdn; }
//+---------------------------------------------------------------------------
//
// Function: HrAddIsdnWizardPagesIfAppropriate
//
// Purpose: Adds the ISDN wizard pages to the hardware wizard if the
// bindings dictate such. We look to see if they have a lower
// binding of "isdn", and if so, then add the pages.
//
// Arguments:
// hdi [in] See Device Installer Api for more info
// pdeid [in]
//
// Returns: S_OK if successful or valid Win32 error
//
// Author: jeffspr 17 Jun 1997
//
// Notes:
//
HRESULT HrAddIsdnWizardPagesIfAppropriate(HDEVINFO hdi, PSP_DEVINFO_DATA pdeid) { Assert(IsValidHandle(hdi)); Assert(pdeid);
// Open the adapter's driver key
//
HKEY hkeyInstance = NULL; HRESULT hr = HrSetupDiOpenDevRegKey(hdi, pdeid, DICS_FLAG_GLOBAL, 0, DIREG_DRV, KEY_READ, &hkeyInstance);
// Don't do anything if its not an ISDN adapter.
if (SUCCEEDED(hr) && FShowIsdnPages(hkeyInstance)) { // Read the ISDN registry structure into the config info
//
PISDN_CONFIG_INFO pisdnci; hr = HrReadIsdnPropertiesInfo(hkeyInstance, hdi, pdeid, &pisdnci); if (SUCCEEDED(hr)) { Assert(pisdnci);
if (pisdnci->dwCurSwitchType == ISDN_SWITCH_NONE) { // Add the wizard pages to the device's class install params.
//
hr = HrAddIsdnWizardPagesToDevice(hdi, pdeid, pisdnci); } else { TraceTag(ttidISDNCfg, "Not adding wizard pages because we " "found a previous switch type for this device."); } } }
RegSafeCloseKey(hkeyInstance);
TraceError("HrAddIsdnWizardPagesIfAppropriate", hr); return hr; }
|