/******************************************************************** Copyright (c) 1999 Microsoft Corporation Module Name: PCH_Driver.H Abstract: WBEM provider class definition for PCH_Driver class Revision History: Ghim-Sim Chua (gschua) 04/27/99 - Created ********************************************************************/ // Property set identification //============================ #ifndef _PCH_Driver_H_ #define _PCH_Driver_H_ #define PROVIDER_NAME_PCH_DRIVER "PCH_Driver" #include // Property name externs -- defined in PCH_Driver.cpp //================================================= extern const WCHAR* pCategory ; extern const WCHAR* pTimeStamp ; extern const WCHAR* pChange ; extern const WCHAR* pDate ; extern const WCHAR* pDescription ; extern const WCHAR* pLoadedFrom ; extern const WCHAR* pManufacturer ; extern const WCHAR* pName ; extern const WCHAR* pPartOf ; extern const WCHAR* pPath ; extern const WCHAR* pSize ; extern const WCHAR* pType ; extern const WCHAR* pVersion ; typedef struct _DRIVER_KERNEL { TCHAR strDriver[MAX_PATH]; TCHAR strVersion[MAX_PATH]; TCHAR strManufacturer[MAX_PATH]; TCHAR strDescription[MAX_PATH]; TCHAR strLikelyPath[MAX_PATH]; TCHAR strLoadedFrom[MAX_PATH]; TCHAR strType[MAX_PATH]; TCHAR strPartOf[MAX_PATH]; struct _DRIVER_KERNEL *next; } DRIVER_KERNEL; typedef struct _DRIVER_MS_DOS { TCHAR strName[MAX_PATH]; TCHAR strType[MAX_PATH]; WORD seg; } DRIVER_MS_DOS; typedef struct _DRIVER_USER_MODE { TCHAR strDriver[MAX_PATH]; TCHAR strVersion[MAX_PATH]; TCHAR strManufacturer[MAX_PATH]; TCHAR strDescription[MAX_PATH]; TCHAR strPath[MAX_PATH]; TCHAR strType[MAX_PATH]; TCHAR strPartOf[MAX_PATH]; } DRIVER_USER_MODE; class CPCH_Driver : public Provider { public: // Constructor/destructor //======================= CPCH_Driver(const CHString& chsClassName, LPCWSTR lpszNameSpace) : Provider(chsClassName, lpszNameSpace), m_pDriverKernel(NULL) {}; virtual ~CPCH_Driver() {}; protected: // Reading Functions //============================ virtual HRESULT EnumerateInstances(MethodContext* pMethodContext, long lFlags = 0L); virtual HRESULT GetObject(CInstance* pInstance, long lFlags = 0L) { return (WBEM_E_PROVIDER_NOT_CAPABLE); }; virtual HRESULT ExecQuery(MethodContext *pMethodContext, CFrameworkQuery& Query, long lFlags = 0L) { return (WBEM_E_PROVIDER_NOT_CAPABLE); }; // Writing Functions //============================ virtual HRESULT PutInstance(const CInstance& Instance, long lFlags = 0L) { return (WBEM_E_PROVIDER_NOT_CAPABLE); }; virtual HRESULT DeleteInstance(const CInstance& Instance, long lFlags = 0L) { return (WBEM_E_PROVIDER_NOT_CAPABLE); }; // Other Functions virtual HRESULT ExecMethod( const CInstance& Instance, const BSTR bstrMethodName, CInstance *pInParams, CInstance *pOutParams, long lFlags = 0L ) { return (WBEM_E_PROVIDER_NOT_CAPABLE); }; private: DRIVER_KERNEL *m_pDriverKernel; std::list m_DriverMSDosList; std::list m_DriverUserModeList; HRESULT GetDriverKernel(); HRESULT GetDriverMSDos(); HRESULT GetDriverUserMode(); // to parse driver list and create instances HRESULT ParseUserModeList(MethodContext*); HRESULT ParseMSDosList(MethodContext*); // for ms-dos drivers void DosMem_WalkArena(WORD, DWORD); void DosMem_CleanArena(DWORD); // for kernel drivers HRESULT AddDriverKernelList(LPTSTR strDriverName, LPTSTR strLoadedFrom); HRESULT AddRegDriverList(HKEY hKey, LPTSTR strSubKey); HRESULT AddRegDriverConfigList(HKEY hk); HRESULT GetRegDriver(LPTSTR strSubKey); HRESULT GetSystemINIDriver(); HRESULT GetIOSubsysDriver(); HRESULT GetServicesVxD(); HRESULT GetMSISYSVxD(); HRESULT GetKernelDriverInfo(); void CPCH_Driver::SetFileVersionInfo(CComBSTR, CInstance*); } ; #endif