windows-nt/Source/XPSP1/NT/enduser/troubleshoot/control/tshootctl.h
2020-09-26 16:20:57 +08:00

167 lines
5.2 KiB
C++

//
// MODULE: TSHOOTCTL.H
//
// PURPOSE: Declaration of the CTSHOOTCtrl OLE control class.
//
// PROJECT: Generic Troubleshooter DLL for Microsoft AnswerPoint
//
// COMPANY: Saltmine Creative, Inc. (206)-284-7511 support@saltmine.com
//
// AUTHOR: Roman Mach
// further work by Richard Meadows (RWM), Joe Mabel
//
// ORIGINAL DATE: 8/7/97
//
// NOTES:
// 1.
//
// Version Date By Comments
//--------------------------------------------------------------------
// V0.2 8/7/97 RM Local Version for Memphis
// V0.3 3/24/98 JM Local Version for NT5
//
// INI section header
#define TSINI_GROUP_STR _T("[TSLocalDownload.V1]")
// file types (maps to sub key lists)
#define TSINI_TYPE_TS _T("TS")
#define TSINI_TYPE_SF _T("SF")
// parameter offset in INI
#define TSINI_OFFSET_TYPE 0
#define TSINI_OFFSET_FILENAME 1
#define TSINI_OFFSET_VERSION 2
#define TSINI_OFFSET_FRIENDLY 3
//
#define TSINI_LINE_PARAM_COUNT 4
/////////////////////////////////////////////////////////////////////////////
// CTSHOOTCtrl : See TSHOOTCtl.cpp for implementation.
// Roman Mach believes (3/14/98) that there is exactly one object of this type in the Local
// Troubleshooter and that this object persists intact as we move from node to node within
// a troubleshooting belief network. (This may not be strictly true if the "Download"
// feature is used.) Since this class can be DYNCREATEd it's hard to verify this definitively.
class CTSHOOTCtrl : public COleControl
{
#define PRELOAD_LIBRARY _T("apgts.dll?preload=")
DECLARE_DYNCREATE(CTSHOOTCtrl)
// Constructor
public:
CTSHOOTCtrl();
VOID StatusEventHelper( DLITEMTYPES dwItem,
DLSTATTYPES dwStat,
DWORD dwExtended = 0,
BOOL bComplete = FALSE);
VOID ProgressEventHelper( DLITEMTYPES dwItem, ULONG ulCurr, ULONG ulTotal );
DLSTATTYPES ProcessReceivedData(DLITEMTYPES dwItem, TCHAR *pData, UINT uLen);
const CString GetListPath();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CTSHOOTCtrl)
public:
virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid);
virtual void DoPropExchange(CPropExchange* pPX);
virtual void OnResetState();
//}}AFX_VIRTUAL
// Implementation
protected:
~CTSHOOTCtrl();
CString m_strCurShooter;
APGTSContext m_apgts;
CDBLoadConfiguration m_Conf;
CHttpQuery m_httpQuery;
DECLARE_OLECREATE_EX(CTSHOOTCtrl) // Class factory and guid
DECLARE_OLETYPELIB(CTSHOOTCtrl) // GetTypeInfo
DECLARE_PROPPAGEIDS(CTSHOOTCtrl) // Property page IDs
DECLARE_OLECTLTYPE(CTSHOOTCtrl) // Type name and misc status
// Message maps
//{{AFX_MSG(CTSHOOTCtrl)
// NOTE - ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
// Dispatch maps
//{{AFX_DISPATCH(CTSHOOTCtrl)
CString m_downloadURL;
afx_msg void OnDownloadURLChanged();
CString m_downloadListFilename;
afx_msg void OnDownloadListFilenameChanged();
afx_msg BSTR RunQuery(const VARIANT FAR& varCmds, const VARIANT FAR& varVals, short size);
afx_msg bool SetSniffResult(const VARIANT FAR& varNodeName, const VARIANT FAR& varState);
afx_msg long GetExtendedError();
afx_msg BSTR GetCurrentFriendlyDownload();
afx_msg BSTR GetCurrentFileDownload();
afx_msg long DownloadAction(long dwActionType);
afx_msg BSTR BackUp();
afx_msg BSTR ProblemPage();
afx_msg BSTR PreLoadURL(LPCTSTR szRoot);
afx_msg BSTR Restart();
afx_msg BSTR RunQuery2(LPCTSTR szTopic, LPCTSTR szCmd, LPCTSTR szVal);
afx_msg void SetPair(LPCTSTR szName, LPCTSTR szValue);
//}}AFX_DISPATCH
DECLARE_DISPATCH_MAP()
afx_msg void AboutBox();
// Event maps
//{{AFX_EVENT(CTSHOOTCtrl)
void FireBindProgress(LPCTSTR sFile, long ulCurr, long ulTotal)
{FireEvent(eventidBindProgress,EVENT_PARAM(VTS_BSTR VTS_I4 VTS_I4), sFile, ulCurr, ulTotal);}
void FireBindStatus(long uItem, long uStat, long uExtended, BOOL bComplete)
{FireEvent(eventidBindStatus,EVENT_PARAM(VTS_I4 VTS_I4 VTS_I4 VTS_BOOL), uItem, uStat, uExtended, bComplete);}
void FireSniffing(LPCTSTR strMachine, LPCTSTR strPNPDevice, LPCTSTR strDeviceInstance, LPCTSTR strClassGuid)
{FireEvent(eventidSniffing,EVENT_PARAM(VTS_BSTR VTS_BSTR VTS_BSTR VTS_BSTR), strMachine, strPNPDevice, strDeviceInstance, strClassGuid);}
//}}AFX_EVENT
DECLARE_EVENT_MAP()
// Dispatch and event IDs
public:
enum {
//{{AFX_DISP_ID(CTSHOOTCtrl)
dispidDownloadURL = 1L,
dispidDownloadListFilename = 2L,
dispidRunQuery = 3L,
dispidSetSniffResult = 4L,
dispidGetExtendedError = 5L,
dispidGetCurrentFriendlyDownload = 6L,
dispidGetCurrentFileDownload = 7L,
dispidDownloadAction = 8L,
dispidBackUp = 9L,
dispidProblemPage = 10L,
dispidPreLoadURL = 11L,
dispidRestart = 12L,
dispidRunQuery2 = 13L,
dispidSetPair = 14L,
eventidBindProgress = 1L,
eventidBindStatus = 2L,
eventidSniffing = 3L,
//}}AFX_DISP_ID
};
protected:
DLSTATTYPES ProcessINI(TCHAR *pData);
DLSTATTYPES ProcessDSC(TCHAR *pData, UINT uLen);
BOOL FileRegCheck(CString &sType, CString &sFilename, CString &sKeyName, DWORD dwCurrVersion);
DLSTATTYPES GetPathToFiles();
protected:
BOOL m_bComplete;
CDownload *m_download;
CDnldObjList m_dnldList;
DWORD m_dwExtendedErr;
CString m_sBasePath;
CSniffedNodeContainer* m_pSniffedContainer; // pointer to container to save results of sniffing
};