//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1999. // // File: G U I S E T U P . C P P // // Contents: Routines that are only executed during GUI setup. // // Notes: // // Author: shaunco 19 Feb 1999 // //---------------------------------------------------------------------------- #include #pragma hdrstop #include "guisetup.h" #include "nceh.h" #include "ncreg.h" #include "ncsetup.h" #include "netcomm.h" #include "netsetup.h" VOID ExcludeMarkedServicesForSetup ( IN const CComponent* pComponent, IN OUT CPszArray* pServiceNames) { HRESULT hr; HKEY hkeyInstance; HKEY hkeyNdi; PWSTR pmszExclude; CPszArray::iterator iter; PCWSTR pszServiceName; hr = pComponent->HrOpenInstanceKey (KEY_READ, &hkeyInstance, NULL, NULL); if (S_OK == hr) { hr = HrRegOpenKeyEx (hkeyInstance, L"Ndi", KEY_READ, &hkeyNdi); if (S_OK == hr) { hr = HrRegQueryMultiSzWithAlloc ( hkeyNdi, L"ExcludeSetupStartServices", &pmszExclude); if (S_OK == hr) { iter = pServiceNames->begin(); while (iter != pServiceNames->end()) { pszServiceName = *iter; Assert (pszServiceName); if (FIsSzInMultiSzSafe (pszServiceName, pmszExclude)) { pServiceNames->erase (iter); } else { iter++; } } MemFree (pmszExclude); } RegCloseKey (hkeyNdi); } RegCloseKey (hkeyInstance); } } VOID ProcessAdapterAnswerFileIfExists ( IN const CComponent* pComponent) { HDEVINFO hdi; SP_DEVINFO_DATA deid; HRESULT hr; Assert (pComponent); hr = pComponent->HrOpenDeviceInfo (&hdi, &deid); if (S_OK == hr) { PWSTR pszAnswerFile = NULL; PWSTR pszAnswerSections = NULL; TraceTag (ttidNetcfgBase, "Calling Netsetup for Install parameters"); NC_TRY { // Get the Network install params for the adapter // hr = HrGetAnswerFileParametersForNetCard (hdi, &deid, pComponent->Ext.PszBindName(), &pComponent->m_InstanceGuid, &pszAnswerFile, &pszAnswerSections); } NC_CATCH_ALL { hr = E_UNEXPECTED; } if (S_OK == hr) { #ifdef ENABLETRACE if (pszAnswerFile) { TraceTag (ttidNetcfgBase, "Answerfile %S given for adapter", pszAnswerFile); } if (pszAnswerSections) { TraceTag (ttidNetcfgBase, "Section %S given for adapter", pszAnswerSections); } #endif // ENABLETRACE if (ProcessAnswerFile (pszAnswerFile, pszAnswerSections, hdi, &deid)) { hr = HrSetupDiSendPropertyChangeNotification (hdi, &deid, DICS_PROPCHANGE, DICS_FLAG_GLOBAL, 0); } } // Cleanup up if necessary CoTaskMemFree (pszAnswerFile); CoTaskMemFree (pszAnswerSections); SetupDiDestroyDeviceInfoList (hdi); } }