//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1999. // // File: C O M P D E F S . H // // Contents: Basic component related defintions. // // Notes: // // Author: shaunco 15 Jan 1999 // //---------------------------------------------------------------------------- #pragma once #include "netcfgx.h" // Maximum length (arbitrary) for bind strings. // Bind strings are of the form \Device\foo_bar_... // const UINT _MAX_BIND_LENGTH = 512; // A property of a component is its "Class". This corresponds directly // to the concept of Class exposed by SetupAPI. That is, devices of all // kinds belong to a class. There are five basic network classes: // Net : network adapters or software drivers that usually reside // at layer 2 or below. // Irda : represent Infra-red networking devices (layer 2) // Nettrans : network transports (protocols like TCP/IP, IPX, etc.) // Netservice : network services (File & Print, QOS, NetBIOS, etc.) // Netclient : network clients (Client for Microsoft Networks, etc.) // enum NETCLASS { NC_NET, NC_INFRARED, NC_NETTRANS, NC_NETCLIENT, NC_NETSERVICE, NC_CELEMS, // count of elements in this enum, not an item NC_INVALID // sentinel value for an invalid class, not an item }; // map of NETCLASS enum to GUIDs for class // extern const GUID* MAP_NETCLASS_TO_GUID[]; // map of NETCLASS enum to registry subkey strings for class // extern const PCWSTR MAP_NETCLASS_TO_NETWORK_SUBTREE[]; extern const WCHAR c_szTempNetcfgStorageForUninstalledEnumeratedComponent[]; inline BOOL FIsValidNetClass ( NETCLASS Class) { return ((UINT)Class < NC_CELEMS); } inline BOOL FIsConsideredNetClass ( NETCLASS Class) { AssertH (FIsValidNetClass (Class)); return (NC_NET == Class || NC_INFRARED == Class); } inline BOOL FIsEnumerated ( NETCLASS Class) { AssertH (FIsValidNetClass (Class)); // Currently, NC_NET and NC_INFRARED must be enumerated and they // are the only ones that are. // return (NC_NET == Class || NC_INFRARED == Class); } inline BOOL FIsEnumerated ( const GUID& guidClass) { // Currently, NET and INFRARED must be enumerated and they // are the only ones that are. // return (GUID_DEVCLASS_NET == guidClass || GUID_DEVCLASS_INFRARED == guidClass); } inline BOOL FIsPhysicalAdapter ( NETCLASS Class, DWORD dwCharacteristics) { return FIsConsideredNetClass(Class) && (NCF_PHYSICAL & dwCharacteristics); } inline BOOL FIsPhysicalNetAdapter ( NETCLASS Class, DWORD dwCharacteristics) { return (NC_NET == Class) && (NCF_PHYSICAL & dwCharacteristics); } NETCLASS NetClassEnumFromGuid ( const GUID& guidClass); // BASIC_COMPONENT_DATA is a structure used by code which // creates a CComponent. It is present just to avoid passing // bunches of parameters to a function. // struct BASIC_COMPONENT_DATA { GUID InstanceGuid; NETCLASS Class; DWORD dwCharacter; DWORD dwDeipFlags; PCWSTR pszInfId; PCWSTR pszPnpId; }; HRESULT HrOpenDeviceInfo ( IN NETCLASS Class, IN PCWSTR pszPnpId, OUT HDEVINFO* phdiOut, OUT SP_DEVINFO_DATA* pdeidOut); HRESULT HrOpenComponentInstanceKey ( IN NETCLASS Class, IN const GUID& InstanceGuid, OPTIONAL IN PCWSTR pszPnpId, OPTIONAL IN REGSAM samDesired, OUT HKEY* phkey, OUT HDEVINFO* phdiOut OPTIONAL, OUT SP_DEVINFO_DATA* pdeidOut OPTIONAL);