Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

546 lines
18 KiB

  1. #pragma once
  2. #include <ncxbase.h>
  3. #include <ncatlps.h>
  4. #include <nceh.h>
  5. #include <notifval.h>
  6. #include <ncsetup.h>
  7. #include "nwlnkutl.h"
  8. #include "resource.h"
  9. #include "nwlnkhlp.h"
  10. // Forward references
  11. class CIpxAdapterInfo;
  12. class CNwlnkIPX;
  13. class CIpxConfigDlg;
  14. class CIpxASConfigDlg;
  15. typedef list<tstring *> TSTRING_LIST;
  16. /////////////////////////////////////////////////////////////////////////////
  17. // nwlnkcfg
  18. // Prototype shared constants
  19. extern const WCHAR c_sz8Zeros[];
  20. extern const DWORD c_dwPktTypeDefault;
  21. extern const WCHAR c_szMediaType[];
  22. // Maximum length of a network number
  23. #define MAX_NETNUM_SIZE 8
  24. // Frame Types
  25. #define ETHERNET 0x0
  26. #define F802_3 0x1
  27. #define F802_2 0x2
  28. #define SNAP 0x3
  29. #define ARCNET 0x4
  30. #define AUTO 0xff
  31. // Media Types
  32. #define ETHERNET_MEDIA 0x1
  33. #define TOKEN_MEDIA 0x2
  34. #define FDDI_MEDIA 0x3
  35. #define ARCNET_MEDIA 0x8
  36. class CIpxAdapterInfo
  37. {
  38. friend class CIpxEnviroment;
  39. friend class CIpxConfigDlg;
  40. friend class CIpxASConfigDlg;
  41. public:
  42. CIpxAdapterInfo();
  43. ~CIpxAdapterInfo();
  44. void SetDeletePending(BOOL f) {m_fDeletePending = f;}
  45. BOOL FDeletePending() {return m_fDeletePending;}
  46. void SetDisabled(BOOL f) {m_fDisabled = f;}
  47. BOOL FDisabled() {return m_fDisabled;}
  48. void SetCharacteristics(DWORD dw) {m_dwCharacteristics = dw;}
  49. BOOL FHidden() {return !!(NCF_HIDDEN & m_dwCharacteristics);}
  50. void AdapterChanged();
  51. DWORD DwMediaType() {return m_dwMediaType;}
  52. void SetMediaType(DWORD dw) {m_dwMediaType=dw;}
  53. PCWSTR SzAdapterDesc() {return m_strAdapterDesc.c_str();}
  54. void SetAdapterDesc(PCWSTR psz) {m_strAdapterDesc = psz;}
  55. PCWSTR SzBindName() {return m_strBindName.c_str();}
  56. void SetBindName(PCWSTR psz) {m_strBindName = psz;}
  57. DWORD DwFrameType()
  58. {return DwFromLstPtstring(m_lstpstrFrmType,
  59. AUTO, 16);}
  60. DWORD DwNetworkNumber()
  61. {return DwFromLstPtstring(m_lstpstrNetworkNum,
  62. 0, 16);}
  63. TSTRING_LIST * PFrmTypeList() {return &m_lstpstrFrmType;}
  64. TSTRING_LIST * PNetworkNumList() {return &m_lstpstrNetworkNum;}
  65. GUID * PInstanceGuid() {return &m_guidInstance;}
  66. BOOL IsDirty() {return m_fDirty;}
  67. VOID SetDirty(BOOL f) {m_fDirty = f;}
  68. private:
  69. BOOL m_fDirty;
  70. // m_fDisabled is a boolean that, when TRUE, indicates this adapter
  71. // is currently disabled
  72. BOOL m_fDisabled;
  73. // m_fDeletePending is a boolean that, when TRUE, indicates this adapter
  74. // is being removed from the adapter list (eventually)
  75. BOOL m_fDeletePending;
  76. // m_dwCharacteristics contains the adapter's characteristic settings
  77. DWORD m_dwCharacteristics;
  78. DWORD m_dwMediaType;
  79. GUID m_guidInstance;
  80. tstring m_strAdapterDesc;
  81. tstring m_strBindName;
  82. TSTRING_LIST m_lstpstrFrmType;
  83. TSTRING_LIST m_lstpstrNetworkNum;
  84. };
  85. typedef list<CIpxAdapterInfo *> ADAPTER_INFO_LIST;
  86. typedef struct _tagIpxParams
  87. {
  88. DWORD dwDedicatedRouter;
  89. DWORD dwEnableWANRouter;
  90. DWORD dwInitDatagrams;
  91. DWORD dwMaxDatagrams;
  92. DWORD dwReplaceConfigDialog;
  93. DWORD dwRipCount;
  94. DWORD dwRipTimeout;
  95. DWORD dwRipUsageTime;
  96. DWORD dwSocketEnd;
  97. DWORD dwSocketStart;
  98. DWORD dwSocketUniqueness;
  99. DWORD dwSourceRouteUsageTime;
  100. DWORD dwVirtualNetworkNumber;
  101. } IpxParams;
  102. class CIpxEnviroment
  103. {
  104. private:
  105. CIpxEnviroment(CNwlnkIPX *);
  106. HRESULT HrGetIpxParams();
  107. HRESULT HrGetAdapterInfo();
  108. HRESULT HrWriteAdapterInfo();
  109. HRESULT HrOpenIpxAdapterSubkey(HKEY *phkey, BOOL fCreate);
  110. HRESULT HrOpenIpxAdapterSubkeyEx(PCWSTR pszKeyName,
  111. DWORD dwAccess,
  112. BOOL fCreate, HKEY *phkey);
  113. public:
  114. ~CIpxEnviroment();
  115. // Create and initialize a CIpxEnviroment instance
  116. static HRESULT HrCreate(CNwlnkIPX *, CIpxEnviroment **);
  117. // Call to update registry
  118. HRESULT HrUpdateRegistry();
  119. // Return a reference to the Adapter list
  120. ADAPTER_INFO_LIST & AdapterInfoList() {return m_lstpAdapterInfo;}
  121. // Create an CIpxAdapterInfo instance from settings in the registry
  122. HRESULT HrGetOneAdapterInfo(INetCfgComponent * pNCC,
  123. CIpxAdapterInfo ** ppAI);
  124. // Write one CIpxAdapterInfo to the registry
  125. HRESULT HrWriteOneAdapterInfo(HKEY hkey, CIpxAdapterInfo* pAI);
  126. // Remove an adapter from the list
  127. VOID RemoveAdapter(CIpxAdapterInfo * pAI);
  128. // Add an adapter to the list
  129. HRESULT HrAddAdapter(INetCfgComponent * pncc);
  130. DWORD DwCountValidAdapters();
  131. DWORD DwVirtualNetworkNumber() {return m_IpxParams.dwVirtualNetworkNumber;}
  132. void SetVirtualNetworkNumber(DWORD dw) {m_IpxParams.dwVirtualNetworkNumber = dw;}
  133. BOOL FRipInstalled() {return m_fRipInstalled;}
  134. BOOL FRipEnabled() {return m_fEnableRip;}
  135. void ChangeRipEnabling(BOOL fEnable, DWORD dwRipVal)
  136. { m_fEnableRip = fEnable;
  137. m_dwRipValue = dwRipVal; }
  138. void SetDedicatedRouter(BOOL f) {m_IpxParams.dwDedicatedRouter = (f ? 1 : 0);}
  139. void SetEnableWANRouter(BOOL f) {m_IpxParams.dwEnableWANRouter = (f ? 1 : 0);}
  140. void ReleaseAdapterInfo();
  141. private:
  142. CNwlnkIPX * m_pno;
  143. BOOL m_fRipInstalled; // NwlnkRip\Parameters
  144. BOOL m_fEnableRip; // NwlnkRip\Parameters
  145. DWORD m_dwRipValue; // NetbiosRouting = {1,0}
  146. IpxParams m_IpxParams; // NwlnkIpx\Parameters
  147. ADAPTER_INFO_LIST m_lstpAdapterInfo; // list of Adapters
  148. };
  149. // Pair Specific Sets of FRAME ID Strings with FRAME ID Values
  150. typedef struct
  151. {
  152. UINT nFrameIds;
  153. DWORD dwFrameType;
  154. } FRAME_TYPE;
  155. // Pairs Specific Media Types with sets Valid Frame Types
  156. typedef struct
  157. {
  158. DWORD dwMediaType;
  159. const FRAME_TYPE * aFrameType;
  160. } MEDIA_TYPE;
  161. typedef struct
  162. {
  163. CIpxAdapterInfo *pAI;
  164. DWORD dwMediaType;
  165. DWORD dwFrameType;
  166. DWORD dwNetworkNumber;
  167. } WRKSTA_DIALOG_INFO;
  168. //
  169. // Ipx Workstation Configuration Dialog
  170. //
  171. class CIpxConfigDlg: public CPropSheetPage
  172. {
  173. public:
  174. BEGIN_MSG_MAP(CIpxConfigDlg)
  175. MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
  176. MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu);
  177. MESSAGE_HANDLER(WM_HELP, OnHelp);
  178. NOTIFY_CODE_HANDLER(PSN_APPLY, OnOk)
  179. COMMAND_ID_HANDLER(EDT_IPXPP_NETWORKNUMBER,HandleNetworkNumber)
  180. COMMAND_ID_HANDLER(CMB_IPXPP_FRAMETYPE, HandleFrameCombo)
  181. END_MSG_MAP()
  182. CIpxConfigDlg(CNwlnkIPX *pmsc, CIpxEnviroment * pIpxEnviroment,
  183. CIpxAdapterInfo * pAI);
  184. LRESULT OnInitDialog(UINT uMsg, WPARAM wParam,
  185. LPARAM lParam, BOOL& bHandled);
  186. LRESULT OnOk(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  187. LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
  188. LRESULT OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
  189. LRESULT HandleNetworkNumber(WORD wNotifyCode, WORD wID,
  190. HWND hWndCtl, BOOL& bHandled);
  191. const FRAME_TYPE *GetFrameType(DWORD dwMediaType);
  192. void AdapterChanged();
  193. void FrameTypeChanged();
  194. void SetNetworkNumber(DWORD *pdw);
  195. void UpdateNetworkNumber(DWORD dwNetworkNumber, DWORD dwFrameType);
  196. LRESULT HandleFrameCombo(WORD wNotifyCode, WORD wID,
  197. HWND hWndCtl, BOOL& bHandled);
  198. private:
  199. CNwlnkIPX * m_pmsc;
  200. CIpxEnviroment * m_pIpxEnviroment;
  201. CIpxAdapterInfo * m_pAICurrent; // The current adapter
  202. WRKSTA_DIALOG_INFO m_WrkstaDlgInfo;
  203. };
  204. typedef struct
  205. {
  206. CIpxAdapterInfo * pAI;
  207. UINT nRadioBttn;
  208. DWORD dwMediaType;
  209. list<tstring *> lstpstrFrmType;
  210. list<tstring *> lstpstrNetworkNum;
  211. } SERVER_DIALOG_INFO;
  212. // Dialog class to handle Add Frame feature
  213. //
  214. class CASAddDialog : public CDialogImpl<CASAddDialog>
  215. {
  216. public:
  217. enum { IDD = DLG_IPXAS_FRAME_ADD };
  218. BEGIN_MSG_MAP(CASAddDialog)
  219. MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog);
  220. MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu);
  221. MESSAGE_HANDLER(WM_HELP, OnHelp);
  222. COMMAND_ID_HANDLER(IDOK, OnOk);
  223. COMMAND_ID_HANDLER(IDCANCEL, OnCancel);
  224. END_MSG_MAP()
  225. public:
  226. CASAddDialog(CIpxASConfigDlg * pASCD, HWND hwndLV, DWORD dwMediaType,
  227. DWORD dwFrame, PCWSTR pszNetworkNum);
  228. ~CASAddDialog() {};
  229. LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
  230. LRESULT OnOk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
  231. LRESULT OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled)
  232. {EndDialog(IDCANCEL); return 0;}
  233. LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
  234. LRESULT OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
  235. int IdsGetFrameType() {return m_idsFrameType;}
  236. DWORD DwGetFrameType() {return m_dwFrameType;}
  237. PCWSTR SzGetNetworkNumber() {return m_strNetworkNumber.c_str();}
  238. private:
  239. HWND m_hwndLV;
  240. DWORD m_dwMediaType;
  241. DWORD m_dwFrameType;
  242. int m_idsFrameType;
  243. tstring m_strNetworkNumber;
  244. CIpxASConfigDlg * m_pASCD;
  245. };
  246. // Dialog class to handle Edit Network Number feature
  247. //
  248. class CASEditDialog : public CDialogImpl<CASEditDialog>
  249. {
  250. public:
  251. enum { IDD = DLG_IPXAS_FRAME_EDIT };
  252. BEGIN_MSG_MAP(CASEditDialog)
  253. MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog);
  254. MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu);
  255. MESSAGE_HANDLER(WM_HELP, OnHelp);
  256. COMMAND_ID_HANDLER(IDOK, OnOk);
  257. COMMAND_ID_HANDLER(IDCANCEL, OnCancel);
  258. END_MSG_MAP()
  259. public:
  260. CASEditDialog(CIpxASConfigDlg * pASCD, HWND hwndLV,
  261. DWORD dwFrameType, PCWSTR pszNetworkNum) :
  262. m_strNetworkNumber(pszNetworkNum),
  263. m_dwFrameType(dwFrameType),
  264. m_hwndLV(hwndLV),
  265. m_pASCD(pASCD) {}
  266. ~CASEditDialog() {};
  267. LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
  268. LRESULT OnOk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled);
  269. LRESULT OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& fHandled)
  270. {EndDialog(IDCANCEL); return 0;}
  271. LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
  272. LRESULT OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
  273. PCWSTR SzGetNetworkNumber() {return m_strNetworkNumber.c_str();}
  274. private:
  275. DWORD m_dwFrameType;
  276. tstring m_strNetworkNumber;
  277. HWND m_hwndLV;
  278. CIpxASConfigDlg * m_pASCD;
  279. };
  280. //
  281. // Ipx Server Configuration Dialog
  282. //
  283. class CIpxASConfigDlg: public CPropSheetPage
  284. {
  285. public:
  286. BEGIN_MSG_MAP(CIpxASConfigDlg)
  287. MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
  288. MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu);
  289. MESSAGE_HANDLER(WM_HELP, OnHelp);
  290. NOTIFY_CODE_HANDLER(PSN_APPLY, OnOk)
  291. COMMAND_ID_HANDLER(EDT_IPXAS_INTERNAL,HandleInternalNetworkNumber)
  292. COMMAND_ID_HANDLER(BTN_IPXAS_ADD, OnAdd)
  293. COMMAND_ID_HANDLER(BTN_IPXAS_EDIT, OnEdit)
  294. COMMAND_ID_HANDLER(BTN_IPXAS_REMOVE, OnRemove)
  295. COMMAND_ID_HANDLER(BTN_IPXAS_AUTO, HandleRadioButton)
  296. COMMAND_ID_HANDLER(BTN_IPXAS_MANUAL, HandleRadioButton)
  297. END_MSG_MAP()
  298. CIpxASConfigDlg(CNwlnkIPX *, CIpxEnviroment *, CIpxAdapterInfo *);
  299. ~CIpxASConfigDlg();
  300. LRESULT OnInitDialog(UINT uMsg, WPARAM wParam,
  301. LPARAM lParam, BOOL& bHandled);
  302. LRESULT OnOk(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  303. LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
  304. LRESULT OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
  305. BOOL FIsNetNumberInUse(DWORD dwFrameType, PCWSTR pszNetNum);
  306. private:
  307. void UpdateRadioButtons();
  308. void UpdateButtons();
  309. void InitGeneralPage();
  310. int DetermineMaxNumFrames();
  311. LRESULT HandleInternalNetworkNumber(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  312. LRESULT HandleRadioButton(WORD wNotifyCode, WORD wID,
  313. HWND hWndCtl, BOOL& bHandled);
  314. LRESULT OnAdd(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  315. LRESULT OnEdit(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  316. LRESULT OnRemove(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  317. HRESULT HrUpdateListView();
  318. HRESULT HrAddItemToList(int idsFrameName, PCWSTR pszNetNum);
  319. BOOL FGetSelectedRowIdx(int *pnIdx);
  320. private:
  321. CNwlnkIPX * m_pmsc;
  322. CIpxEnviroment * m_pIpxEnviroment;
  323. CIpxAdapterInfo * m_pAICurrent; // The current adapter
  324. HWND m_hwndLV;
  325. UINT m_nRadioBttn;
  326. DWORD m_dwMediaType;
  327. list<tstring *> m_lstpstrFrmType;
  328. list<tstring *> m_lstpstrNetworkNum;
  329. };
  330. #ifdef INCLUDE_RIP_ROUTING
  331. //
  332. // Ipx Server Routing Dialog
  333. //
  334. class CIpxASInternalDlg: public CPropSheetPage
  335. {
  336. public:
  337. BEGIN_MSG_MAP(CIpxASInternalDlg)
  338. MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
  339. MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu);
  340. MESSAGE_HANDLER(WM_HELP, OnHelp);
  341. NOTIFY_CODE_HANDLER(PSN_APPLY, OnOk)
  342. COMMAND_ID_HANDLER(BTN_IPXAS_RIP, OnRip)
  343. END_MSG_MAP()
  344. CIpxASInternalDlg(CNwlnkIPX *pmsc, CIpxEnviroment * pIpxEnviroment);
  345. ~CIpxASInternalDlg() {};
  346. LRESULT OnInitDialog(UINT uMsg, WPARAM wParam,
  347. LPARAM lParam, BOOL& bHandled);
  348. LRESULT OnOk(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  349. LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
  350. LRESULT OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled);
  351. LRESULT OnRip(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  352. private:
  353. CNwlnkIPX * m_pmsc;
  354. CIpxEnviroment * m_pIpxEnviroment;
  355. DWORD m_dwRipValue;
  356. };
  357. #endif
  358. class ATL_NO_VTABLE CNwlnkIPX :
  359. public CComObjectRoot,
  360. public CComCoClass<CNwlnkIPX, &CLSID_CNwlnkIPX>,
  361. public INetCfgComponentControl,
  362. public INetCfgComponentSetup,
  363. public INetCfgComponentPropertyUi,
  364. public INetCfgComponentNotifyBinding,
  365. public IIpxAdapterInfo
  366. {
  367. public:
  368. CNwlnkIPX();
  369. ~CNwlnkIPX();
  370. BEGIN_COM_MAP(CNwlnkIPX)
  371. COM_INTERFACE_ENTRY(INetCfgComponentControl)
  372. COM_INTERFACE_ENTRY(INetCfgComponentSetup)
  373. COM_INTERFACE_ENTRY(INetCfgComponentPropertyUi)
  374. COM_INTERFACE_ENTRY(INetCfgComponentNotifyBinding)
  375. COM_INTERFACE_ENTRY(IIpxAdapterInfo)
  376. END_COM_MAP()
  377. // DECLARE_NOT_AGGREGATABLE(CNwlnkIPX)
  378. // Remove the comment from the line above if you don't want your object to
  379. // support aggregation. The default is to support it
  380. DECLARE_REGISTRY_RESOURCEID(IDR_REG_NWLNKIPX)
  381. // Install Action (Unknown, Install, Remove)
  382. enum INSTALLACTION {eActUnknown, eActInstall, eActRemove};
  383. // INetCfgComponentControl
  384. STDMETHOD (Initialize) (
  385. IN INetCfgComponent* pIComp,
  386. IN INetCfg* pINetCfg,
  387. IN BOOL fInstalling);
  388. STDMETHOD (ApplyRegistryChanges) ();
  389. STDMETHOD (ApplyPnpChanges) (
  390. IN INetCfgPnpReconfigCallback* pICallback) { return S_OK; }
  391. STDMETHOD (CancelChanges) ();
  392. STDMETHOD (Validate) ();
  393. // INetCfgComponentSetup
  394. STDMETHOD (ReadAnswerFile) (PCWSTR pszAnswerFile,
  395. PCWSTR pszAnswerSection);
  396. STDMETHOD (Install) (DWORD);
  397. STDMETHOD (Upgrade) (DWORD, DWORD);
  398. STDMETHOD (Removing) ();
  399. // INetCfgComponentPropertyUi
  400. STDMETHOD (QueryPropertyUi) (
  401. IN IUnknown* pUnk) { return S_OK; }
  402. STDMETHOD (SetContext) (
  403. IN IUnknown* pUnk);
  404. STDMETHOD (MergePropPages) (
  405. IN OUT DWORD* pdwDefPages,
  406. OUT LPBYTE* pahpspPrivate,
  407. OUT UINT* pcPrivate,
  408. IN HWND hwndParent,
  409. OUT PCWSTR* pszStartPage);
  410. STDMETHOD (ValidateProperties) (
  411. HWND hwndSheet);
  412. STDMETHOD (CancelProperties) ();
  413. STDMETHOD (ApplyProperties) ();
  414. // INetCfgComponentNotifyBinding
  415. STDMETHOD (QueryBindingPath) (DWORD dwChangeFlag, INetCfgBindingPath* pncbp);
  416. STDMETHOD (NotifyBindingPath) (DWORD dwChangeFlag, INetCfgBindingPath* pncbp);
  417. // IIpxAdapterInfo
  418. STDMETHOD (GetFrameTypesForAdapter) (PCWSTR pszAdapterBindName,
  419. DWORD cFrameTypesMax,
  420. DWORD* anFrameTypes,
  421. DWORD* pcFrameTypes);
  422. STDMETHOD (GetVirtualNetworkNumber) (DWORD* pdwVNetworkNumber);
  423. STDMETHOD (SetVirtualNetworkNumber) (DWORD dwVNetworkNumber);
  424. private:
  425. STDMETHOD(HrCommitInstall)();
  426. STDMETHOD(HrCommitRemove)();
  427. HRESULT HrReconfigIpx();
  428. VOID CleanupPropPages();
  429. HRESULT HrProcessAnswerFile(PCWSTR pszAnswerFile,
  430. PCWSTR pszAnswerSection);
  431. HRESULT HrReadAdapterAnswerFileSection(CSetupInfFile * pcsif,
  432. PCWSTR pszSection);
  433. public:
  434. VOID MarkAdapterListChanged() {m_fAdapterListChanged = TRUE;};
  435. private:
  436. INetCfgComponent* m_pnccMe;
  437. INetCfg* m_pNetCfg;
  438. BOOL m_fNetworkInstall;
  439. BOOL m_fAdapterListChanged;
  440. BOOL m_fPropertyChanged;
  441. INSTALLACTION m_eInstallAction;
  442. CPropSheetPage* m_pspObj1;
  443. CPropSheetPage* m_pspObj2;
  444. CIpxEnviroment* m_pIpxEnviroment;
  445. IUnknown* m_pUnkPropContext;
  446. friend class CIpxEnviroment;
  447. };