//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1997-2000. // // File: N C U T I L . C P P // // Contents: INetCfg utilities. This is all a candidate to be moved into // nccommon\src\ncnetcfg.cpp. // // Notes: // // Author: shaunco 28 Mar 1997 // //---------------------------------------------------------------------------- #include "pch.h" #pragma hdrstop #include "ncnetcfg.h" #include "ncutil.h" extern const WCHAR c_szInfId_MS_NdisWanIp[]; //+--------------------------------------------------------------------------- // // Function: HrEnsureZeroOrOneAdapter // // Purpose: // // Arguments: // pnc [] // pszComponentId [] // dwFlags [] // // Returns: // // Author: shaunco 5 Dec 1997 // // Notes: // HRESULT HrEnsureZeroOrOneAdapter ( INetCfg* pnc, PCWSTR pszComponentId, DWORD dwFlags) { HRESULT hr = S_OK; if (dwFlags & ARA_ADD) { // Make sure we have one present. // if (!FIsAdapterInstalled (pnc, pszComponentId)) { TraceTag (ttidRasCfg, "Adding %S", pszComponentId); hr = HrAddOrRemoveAdapter (pnc, pszComponentId, ARA_ADD, NULL, 1, NULL); } } else { // Make sure we have none present. // TraceTag (ttidRasCfg, "Removing %S", pszComponentId); hr = HrFindAndRemoveAllInstancesOfAdapter (pnc, pszComponentId); } TraceHr (ttidError, FAL, hr, FALSE, "HrEnsureZeroOrOneAdapter"); return hr; } //+--------------------------------------------------------------------------- // // Function: HrGetInstanceGuidAsString // // Purpose: // // Arguments: // pncc [] // pszGuid [] // cchGuid [] // // Returns: // // Author: shaunco 14 Jun 1997 // // Notes: // HRESULT HrGetInstanceGuidAsString ( INetCfgComponent* pncc, PWSTR pszGuid, INT cchGuid) { GUID guid; HRESULT hr = pncc->GetInstanceGuid (&guid); if(SUCCEEDED(hr)) { if (0 == StringFromGUID2(guid, pszGuid, cchGuid)) { hr = E_INVALIDARG; } } TraceHr (ttidError, FAL, hr, FALSE, "HrGetInstanceGuidAsString"); return hr; } //+--------------------------------------------------------------------------- // // Function: HrMapComponentIdToDword // // Purpose: Maps a component's id to a DWORD value. The mapping is // specified by the caller through an array of pointers to // string values and their associated DWORD values. // // Arguments: // pncc [in] pointer to component. // aMapSzDword [in] array of elements mapping a string to a DWORD. // cMapSzDword [in] count of elements in the array. // pdwValue [out] the returned value. // // Returns: S_OK if a match was found. If a match wasn't found, // S_FALSE is returned. // Other Win32 error codes. // // Author: shaunco 17 May 1997 // // Notes: // HRESULT HrMapComponentIdToDword ( INetCfgComponent* pncc, const MAP_SZ_DWORD* aMapSzDword, UINT cMapSzDword, DWORD* pdwValue) { Assert (pncc); Assert (aMapSzDword); Assert (cMapSzDword); Assert (pdwValue); // Initialize output parameter. *pdwValue = 0; PWSTR pszwId; HRESULT hr = pncc->GetId (&pszwId); if (SUCCEEDED(hr)) { hr = S_FALSE; while (cMapSzDword--) { if (FEqualComponentId (pszwId, aMapSzDword->pszValue)) { *pdwValue = aMapSzDword->dwValue; hr = S_OK; break; } aMapSzDword++; } CoTaskMemFree (pszwId); } TraceHr (ttidError, FAL, hr, S_FALSE == hr, "HrMapComponentIdToDword"); return hr; } //+--------------------------------------------------------------------------- // // Function: HrOpenComponentParamKey // // Purpose: Find a component and open its parameter key. // // Arguments: // pnc [in] // rguidClass [in] // pszComponentId [in] // phkey [out] // // Returns: S_OK if the component was found the key was opened. // S_FALSE if the compoennt was not found. // error code. // // Author: shaunco 13 Apr 1997 // // Notes: // HRESULT HrOpenComponentParamKey ( INetCfg* pnc, const GUID& rguidClass, PCWSTR pszComponentId, HKEY* phkey) { Assert (pnc); Assert (pszComponentId); Assert (phkey); // Initialize the output parameter. *phkey = NULL; // Find the component. INetCfgComponent* pncc; HRESULT hr = pnc->FindComponent ( pszComponentId, &pncc); if (S_OK == hr) { // Open its param key. hr = pncc->OpenParamKey (phkey); ReleaseObj (pncc); } TraceHr (ttidError, FAL, hr, S_FALSE == hr, "HrOpenComponentParamKey"); return hr; }