@@ -170,11 +170,28 @@ INetCfgClass_fnFindComponent(
170170 LPCWSTR pszwComponentId ,
171171 INetCfgComponent * * pComponent )
172172{
173- // HRESULT hr;
174- // INetCfgClassImpl *This = (INetCfgClassImpl *)iface;
175-
173+ INetCfgClassImpl * This = (INetCfgClassImpl * )iface ;
174+ NetCfgComponentItem * pHead ;
175+
176+ if (IsEqualIID (& This -> ClassGuid , & GUID_DEVCLASS_NET ))
177+ pHead = ((INetCfgImpl * )(This -> pNetCfg ))-> pNet ;
178+ else if (IsEqualIID (& This -> ClassGuid , & GUID_DEVCLASS_NETTRANS ))
179+ pHead = ((INetCfgImpl * )(This -> pNetCfg ))-> pProtocol ;
180+ else if (IsEqualIID (& This -> ClassGuid , & GUID_DEVCLASS_NETSERVICE ))
181+ pHead = ((INetCfgImpl * )(This -> pNetCfg ))-> pService ;
182+ else if (IsEqualIID (& This -> ClassGuid , & GUID_DEVCLASS_NETCLIENT ))
183+ pHead = ((INetCfgImpl * )(This -> pNetCfg ))-> pClient ;
184+ else
185+ return E_NOINTERFACE ;
176186
177- /* TODO */
187+ while (pHead )
188+ {
189+ if (!_wcsicmp (pHead -> szId , pszwComponentId ))
190+ {
191+ return INetCfgComponent_Constructor (NULL , & IID_INetCfgComponent , (LPVOID * )pComponent , pHead , This -> pNetCfg );
192+ }
193+ pHead = pHead -> pNext ;
194+ }
178195
179196 return S_FALSE ;
180197}
@@ -185,10 +202,21 @@ INetCfgClass_fnEnumComponents(
185202 INetCfgClass * iface ,
186203 IEnumNetCfgComponent * * ppenumComponent )
187204{
188- // INetCfgClassImpl *This = (INetCfgClassImpl *)iface;
189-
205+ INetCfgClassImpl * This = (INetCfgClassImpl * )iface ;
206+ NetCfgComponentItem * pHead ;
207+
208+ if (IsEqualIID (& This -> ClassGuid , & GUID_DEVCLASS_NET ))
209+ pHead = ((INetCfgImpl * )(This -> pNetCfg ))-> pNet ;
210+ else if (IsEqualIID (& This -> ClassGuid , & GUID_DEVCLASS_NETTRANS ))
211+ pHead = ((INetCfgImpl * )(This -> pNetCfg ))-> pProtocol ;
212+ else if (IsEqualIID (& This -> ClassGuid , & GUID_DEVCLASS_NETSERVICE ))
213+ pHead = ((INetCfgImpl * )(This -> pNetCfg ))-> pService ;
214+ else if (IsEqualIID (& This -> ClassGuid , & GUID_DEVCLASS_NETCLIENT ))
215+ pHead = ((INetCfgImpl * )(This -> pNetCfg ))-> pClient ;
216+ else
217+ return E_NOINTERFACE ;
190218
191- return E_NOINTERFACE ;
219+ return IEnumNetCfgComponent_Constructor ( NULL , & IID_IEnumNetCfgComponent , ( LPVOID * ) ppenumComponent , pHead , This -> pNetCfg ) ;
192220}
193221
194222static const INetCfgClassVtbl vt_NetCfgClass =
0 commit comments