//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1996. // // File: A D A P T E R . H // // Contents: Net class installer functions for eumerated devices. // // Notes: // // Author: billbe 11 Nov 1996 // //--------------------------------------------------------------------------- #pragma once #include "compdefs.h" #include "ncsetup.h" struct COMPONENT_INSTALL_INFO; HRESULT HrCiGetBusInfoFromInf ( IN HINF hinfFile, OUT COMPONENT_INSTALL_INFO* pcii); struct ADAPTER_OUT_PARAMS { OUT GUID InstanceGuid; OUT DWORD dwCharacter; }; struct ADAPTER_REMOVE_PARAMS { IN BOOL fBadDevInst; IN BOOL fNotifyINetCfg; }; //+-------------------------------------------------------------------------- // // Function: EInterfaceTypeFromDword // // Purpose: Safely converts a dword to the enumerated type INTERFACE_TYPE // // Arguments: // dwBusType [in] The bus type of the adapter // // Returns: INTERFACE_TYPE. See ntioapi.h for more info. // // Author: billbe 28 Jun 1997 // // Notes: // inline INTERFACE_TYPE EInterfaceTypeFromDword(DWORD dwBusType) { INTERFACE_TYPE eBusType; if (dwBusType < MaximumInterfaceType) { // Since dwBusType is less than MaximumInterfaceType, we can safely // cast dwBusType to the enumerated value. // eBusType = static_cast(dwBusType); } else { eBusType = InterfaceTypeUndefined; } return eBusType; } HRESULT HrCiInstallEnumeratedComponent(HINF hinf, HKEY hkeyInstance, IN const COMPONENT_INSTALL_INFO& cii); inline void CiSetReservedField(HDEVINFO hdi, PSP_DEVINFO_DATA pdeid, const VOID* pvInfo) { AssertH(IsValidHandle(hdi)); SP_DEVINSTALL_PARAMS deip; (void) HrSetupDiGetDeviceInstallParams(hdi, pdeid, &deip); deip.ClassInstallReserved = reinterpret_cast(pvInfo); (void) HrSetupDiSetDeviceInstallParams(hdi, pdeid, &deip); } inline void CiClearReservedField(HDEVINFO hdi, PSP_DEVINFO_DATA pdeid) { AssertH(IsValidHandle(hdi)); SP_DEVINSTALL_PARAMS deip; (void) HrSetupDiGetDeviceInstallParams(hdi, pdeid, &deip); deip.ClassInstallReserved = NULL; (void) HrSetupDiSetDeviceInstallParams(hdi, pdeid, &deip); } HRESULT HrCiRemoveEnumeratedComponent(IN const COMPONENT_INSTALL_INFO cii); HRESULT HrCiRegOpenKeyFromEnumDevs(HDEVINFO hdi, DWORD* pIndex, REGSAM samDesired, HKEY* phkey); inline HRESULT HrCiFilterOutPhantomDevs(HDEVINFO hdi) { DWORD dwIndex = 0; HRESULT hr; HKEY hkey; // This call eliminates phantom devices while (SUCCEEDED(hr = HrCiRegOpenKeyFromEnumDevs(hdi, &dwIndex, KEY_READ, &hkey))) { // We don't need the hkey; we just wanted the phantoms removed RegCloseKey (hkey); // on to the next dwIndex++; } // No more items is not really an error if (HRESULT_FROM_WIN32(ERROR_NO_MORE_ITEMS) == hr) { hr = S_OK; } return hr; } // Device friendly name functions and types. // enum DM_OP { DM_ADD, DM_DELETE, }; HRESULT HrCiUpdateDescriptionIndexList(NETCLASS Class, PCWSTR pszDescription, DM_OP eOp, ULONG* pulIndex); //////////////Legacy NT4 App support////////////////////////// enum LEGACY_NT4_KEY_OP { LEGACY_NT4_KEY_ADD, LEGACY_NT4_KEY_REMOVE, }; VOID AddOrRemoveLegacyNt4AdapterKey ( IN HDEVINFO hdi, IN PSP_DEVINFO_DATA pdeid, IN const GUID* pInstanceGuid, IN PCWSTR pszDescription, IN LEGACY_NT4_KEY_OP Op);