/*****************************************************************************\ * MODULE: asphelp.h * * PURPOSE: Declaration of the Casphelp * * Copyright (C) 1997-1998 Microsoft Corporation * * History: * * 09/12/97 weihaic Created * \*****************************************************************************/ #ifndef __ASPHELP_H_ #define __ASPHELP_H_ #include // Active Server Pages Definitions #define LENGTHOFPAPERNAMES 64 // From DeviceCapabilities DC_PAPERNAMES #define STANDARD_SNMP_MONITOR_NAME L"TCPMON.DLL" // The dll name of the Universal SNMP monitor. #define PAGEPERJOB 1 #define BYTEPERJOB 2 typedef struct ErrorMapping { DWORD dwError; DWORD dwErrorDscpID; } ErrorMapping; ///////////////////////////////////////////////////////////////////////////// // Casphelp class ATL_NO_VTABLE Casphelp : public CComObjectRootEx, public CComCoClass, public ISupportErrorInfoImpl<&IID_Iasphelp>, public IDispatchImpl { public: Casphelp(); public: DECLARE_REGISTRY_RESOURCEID(IDR_ASPHELP) BEGIN_COM_MAP(Casphelp) COM_INTERFACE_ENTRY(Iasphelp) COM_INTERFACE_ENTRY(IDispatch) END_COM_MAP() // Iasphelp public: ~Casphelp(); // These properties do not require calling Open at first STDMETHOD(get_ErrorDscp) (long lErrCode, /*[out, retval]*/ BSTR *pVal); STDMETHOD(get_MediaReady) (/*[out, retval]*/ VARIANT *pVal); STDMETHOD(get_MibErrorDscp) (DWORD dwError, /*[out, retval]*/ BSTR *pVal); STDMETHOD(Open) (BSTR bstrPrinterName); STDMETHOD(Close)(); // Printer information STDMETHOD(get_AspPage) (DWORD dwPage, /*[out, retval]*/ BSTR *pbstrVal); STDMETHOD(get_Color) (/*[out, retval]*/ BOOL *pVal); STDMETHOD(get_Community) (/*[out, retval]*/ BSTR *pbstrVal); STDMETHOD(get_ComputerName) (/*[out, retval]*/ BSTR *pVal); STDMETHOD(get_DriverName) (/*[out, retval]*/ BSTR * pbstrVal); STDMETHOD(get_Duplex) (/*[out, retval]*/ BOOL *pVal); STDMETHOD(get_IPAddress) (/*[out, retval]*/ BSTR *pbstrVal); STDMETHOD(get_IsHTTP) (/*[out, retval]*/ BOOL *pbVal); STDMETHOD(get_IsTCPMonSupported)(/*[out, retval]*/ BOOL *pVal); STDMETHOD(get_LongPaperName) (BSTR bstrShortName, /*[out, retval]*/ BSTR *pVal); STDMETHOD(get_MaximumResolution)(/*[out, retval]*/ long *pVal); STDMETHOD(get_PageRate) (/*[out, retval]*/ long *pVal); STDMETHOD(get_PageRateUnit) (/*[out, retval]*/ long *pVal); STDMETHOD(get_PaperNames) (/*[out, retval]*/ VARIANT *pVal); STDMETHOD(get_PortName) (/*[out, retval]*/ BSTR *pVal); STDMETHOD(get_SNMPDevice) (/*[out, retval]*/ DWORD *pdwVal); STDMETHOD(get_SNMPSupported) (/*[out, retval]*/ BOOL *pbVal); STDMETHOD(get_Status) (/*[out, retval]*/ long *pVal); STDMETHOD(get_ShareName) (/*[out, retval]*/ BSTR *pVal); STDMETHOD(get_IsCluster) (/*[out, retval]*/ BOOL *pbVal); // Job completion time estimate STDMETHOD(CalcJobETA) (); STDMETHOD(get_AvgJobSize) (/*[out, retval]*/ long *pVal); STDMETHOD(get_AvgJobSizeUnit) (/*[out, retval]*/ long *pVal); STDMETHOD(get_JobCompletionMinute)(/*[out, retval]*/ long *pVal); STDMETHOD(get_PendingJobCount) (/*[out, retval]*/ long *pVal); //Active Server Pages Methods STDMETHOD(OnStartPage)(IUnknown* IUnk); STDMETHOD(OnEndPage)(); private: void Cleanup(); BOOL DecodeString (LPTSTR pPrinterName, LPTSTR pDecodedName, TCHAR chMark); BOOL DecodeStringA (LPSTR pPrinterName, LPSTR pDecodedName, char chMark); DWORD GetPPM(); DWORD GetWaitingMinutesPPM (DWORD dwPPM, PJOB_INFO_2 pJobInfo, DWORD dwNumJob); HRESULT AllocGetPrinterInfo2(PPRINTER_INFO_2 *ppInfo2); HRESULT GetPaperAndMedia(VARIANT * pVal, WORD wDCFlag); HRESULT GetXcvDataBstr(LPCTSTR pszId, BSTR *bStr); HRESULT GetXcvDataDword (LPCTSTR pszId, DWORD *dwVal); HRESULT SetAspHelpScriptingError(DWORD dwError); // The following block is for ASP customization. BOOL GetMonitorName( LPTSTR pMonitorName ); BOOL GetModel( LPTSTR pModel ); BOOL GetManufacturer( LPTSTR pManufacturer ); BOOL IsCustomASP( BOOL bDeviceASP, LPTSTR pASPPage ); BOOL IsSnmpSupportedASP( LPTSTR pASPPage ); BOOL GetASPPageForUniversalMonitor( LPTSTR pASPPage ); BOOL GetASPPageForOtherMonitors( LPTSTR pMonitorName, LPTSTR pASPPage ); BOOL GetASPPage( LPTSTR pASPPage ); static const DWORD cdwBufSize = 512; CComPtr m_piRequest; //Request Object CComPtr m_piResponse; //Response Object CComPtr m_piSession; //Session Object CComPtr m_piServer; //Server Object CComPtr m_piApplication; //Application Object BOOL m_bOnStartPageCalled; //OnStartPage successful? TCHAR m_szComputerName[MAX_COMPUTERNAME_LENGTH+1]; HANDLE m_hPrinter; //Handle to the printer HANDLE m_hXcvPrinter; DWORD m_dwAvgJobSize; DWORD m_dwAvgJobSizeUnit; DWORD m_dwJobCompletionMinute; DWORD m_dwPendingJobCount; DWORD m_dwSizePerJob; BOOL m_bCalcJobETA; BOOL m_bTCPMonSupported; class CPrinter *m_pPrinter; PPRINTER_INFO_2 m_pInfo2; }; #endif //__ASPHELP_H_