passthru.h
上传用户:sabrinaco
上传日期:2016-01-19
资源大小:3177k
文件大小:5k
开发平台:

Visual C++

  1. //+---------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright (C) Microsoft Corporation, 1997-1999.
  5. //
  6. //  File:       P A S S T H R U . H
  7. //
  8. //  Contents:   Notify object code for the Passthru driver.
  9. //
  10. //  Notes:
  11. //
  12. //  Author:     kumarp 26-March-98
  13. //
  14. //----------------------------------------------------------------------------
  15. #pragma once
  16. #include "passthrn.h"
  17. #include "resource.h"
  18. // =================================================================
  19. // string constants
  20. //
  21. const WCHAR c_szParam1[]                = L"Param1";
  22. const WCHAR c_szParam2[]                = L"Param2";
  23. const WCHAR c_szParam2Default[]         = L"<no-value>";
  24. const WCHAR c_szPassthruParams[]        = L"System\CurrentControlSet\Services\Passthru\Parameters";
  25. const WCHAR c_szPassthruId[]            = L"MS_Passthru";
  26. const WCHAR c_szPassthruNdisName[]      = L"Passthru";
  27. #if DBG
  28. void TraceMsg(PCWSTR szFormat, ...);
  29. #else
  30. #define TraceMsg
  31. #endif
  32. // What type of config change the user/system is performing
  33. enum ConfigAction {eActUnknown, eActInstall, eActRemove, eActPropertyUI};
  34. #define MAX_ADAPTERS 64         // max no. of physical adapters in a machine
  35. class CPassthruParams
  36. {
  37. public:
  38.     WCHAR m_szParam1[MAX_PATH];
  39.     WCHAR m_szParam2[MAX_PATH];
  40.     CPassthruParams();
  41. };
  42. class CPassthru :
  43.     public CComObjectRoot,
  44.     public CComCoClass<CPassthru, &CLSID_CPassthru>,
  45.     public INetCfgComponentControl,
  46.     public INetCfgComponentSetup,
  47.     public INetCfgComponentPropertyUi,
  48.     public INetCfgComponentNotifyBinding,
  49.     public INetCfgComponentNotifyGlobal
  50. {
  51. public:
  52.     CPassthru(VOID);
  53.     ~CPassthru(VOID);
  54.     BEGIN_COM_MAP(CPassthru)
  55.         COM_INTERFACE_ENTRY(INetCfgComponentControl)
  56.         COM_INTERFACE_ENTRY(INetCfgComponentSetup)
  57.         COM_INTERFACE_ENTRY(INetCfgComponentPropertyUi)
  58.         COM_INTERFACE_ENTRY(INetCfgComponentNotifyBinding)
  59.         COM_INTERFACE_ENTRY(INetCfgComponentNotifyGlobal)
  60.     END_COM_MAP()
  61.     // DECLARE_NOT_AGGREGATABLE(CPassthru)
  62.     // Remove the comment from the line above if you don't want your object to
  63.     // support aggregation.  The default is to support it
  64.     DECLARE_REGISTRY_RESOURCEID(IDR_REG_PASSTHRU)
  65. // INetCfgComponentControl
  66.     STDMETHOD (Initialize) (
  67.         IN INetCfgComponent* pIComp,
  68.         IN INetCfg* pINetCfg,
  69.         IN BOOL fInstalling);
  70.     STDMETHOD (ApplyRegistryChanges) ();
  71.     STDMETHOD (ApplyPnpChanges) (
  72.         IN INetCfgPnpReconfigCallback* pICallback);
  73.     STDMETHOD (CancelChanges) ();
  74. // INetCfgComponentSetup
  75.     STDMETHOD (ReadAnswerFile)      (PCWSTR szAnswerFile,
  76.                                      PCWSTR szAnswerSections);
  77.     STDMETHOD (Upgrade)             (DWORD, DWORD) {return S_OK;}
  78.     STDMETHOD (Install)             (DWORD);
  79.     STDMETHOD (Removing)            ();
  80. // INetCfgProperties
  81.     STDMETHOD (QueryPropertyUi) (
  82.         IN IUnknown* pUnk) { return S_OK; }
  83.     STDMETHOD (SetContext) (
  84.         IN IUnknown* pUnk);
  85.     STDMETHOD (MergePropPages) (
  86.         IN OUT DWORD* pdwDefPages,
  87.         OUT LPBYTE* pahpspPrivate,
  88.         OUT UINT* pcPrivate,
  89.         IN HWND hwndParent,
  90.         OUT PCWSTR* pszStartPage);
  91.     STDMETHOD (ValidateProperties) (
  92.         HWND hwndSheet);
  93.     STDMETHOD (CancelProperties) ();
  94.     STDMETHOD (ApplyProperties) ();
  95. // INetCfgNotifyBinding
  96.     STDMETHOD (QueryBindingPath)       (DWORD dwChangeFlag, INetCfgBindingPath* pncbp);
  97.     STDMETHOD (NotifyBindingPath)      (DWORD dwChangeFlag, INetCfgBindingPath* pncbp);
  98. // INetCfgNotifyGlobal
  99.     STDMETHOD (GetSupportedNotifications) (DWORD* pdwNotificationFlag );
  100.     STDMETHOD (SysQueryBindingPath)       (DWORD dwChangeFlag, INetCfgBindingPath* pncbp);
  101.     STDMETHOD (SysNotifyBindingPath)      (DWORD dwChangeFlag, INetCfgBindingPath* pncbp);
  102.     STDMETHOD (SysNotifyComponent)        (DWORD dwChangeFlag, INetCfgComponent* pncc);
  103. private:
  104.     INetCfgComponent*   m_pncc;
  105.     INetCfg*            m_pnc;
  106.     ConfigAction        m_eApplyAction;
  107.     CPassthruParams m_sfParams;
  108.     IUnknown*           m_pUnkContext;
  109.     GUID                m_guidAdapter;
  110.     GUID                m_guidAdaptersAdded[MAX_ADAPTERS];
  111.     UINT                m_cAdaptersAdded;
  112.     GUID                m_guidAdaptersRemoved[MAX_ADAPTERS];
  113.     UINT                m_cAdaptersRemoved;
  114.     BOOL                m_fConfigRead;
  115. // Utility functions
  116. public:
  117.     LRESULT OnInitDialog(IN HWND hWnd);
  118.     LRESULT OnOk(IN HWND hWnd);
  119.     LRESULT OnCancel(IN HWND hWnd);
  120. private:
  121. };