#ifndef __IEAKSIE_RSOP_H__ #define __IEAKSIE_RSOP_H__ #include #include #include "wbemcli.h" #include "SComPtr.h" ///////////////////////////////////////////////////////////////////// typedef struct _RSOPPAGECOOKIE { LPPROPSHEETCOOKIE psCookie; long nPageID; } RSOPPAGECOOKIE, *LPRSOPPAGECOOKIE; UINT CALLBACK RSOPPageProc(HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp); ///////////////////////////////////////////////////////////////////// typedef struct _WMI_CERT_INFO_STRUCT { LPWSTR wszSubject; LPWSTR wszIssuer; BOOL bExpirationValid; FILETIME ftExpiration; LPWSTR wszFriendlyName; LPWSTR wszPurposes; struct _WMI_CERT_INFO_STRUCT *pNext; } WMI_CERT_INFO; ///////////////////////////////////////////////////////////////////// class CPSObjData { public: CPSObjData(): pObj(NULL), dwPrecedence(0) {} ComPtr pObj; DWORD dwPrecedence; }; ///////////////////////////////////////////////////////////////////// // CDlgRSoPData ///////////////////////////////////////////////////////////////////// class CDlgRSoPData { public: CDlgRSoPData(CSnapIn *pCS); ~CDlgRSoPData(); // operations public: ComPtr ConnectToNamespace(); _bstr_t GetGPONameFromPS(ComPtr pPSObj); _bstr_t GetGPONameFromPSAssociation(ComPtr pPSObj, BSTR bstrPrecedenceProp); HRESULT GetArrayOfPSObjects(BSTR bstrClass, BSTR bstrPrecedenceProp = NULL, CPSObjData ***ppaPSObj = NULL, long *pnObjCount = NULL); HRESULT LoadContentRatingsObject(); // attributes public: BSTR GetNamespace() {return m_pCS->GetRSoPNamespace();} ComPtr GetWbemServices() {return m_pWbemServices;} CPSObjData **GetPSObjArray() {return m_paPSObj;} long GetPSObjCount() {return m_nPSObjects;} CPSObjData **GetCSObjArray() {return m_paCSObj;} long GetCSObjCount() {return m_nCSObjects;} ComPtr GetContentRatingsObject() {return m_pCRatObj;} void SetImportedProgSettPrec(DWORD dwPrec) {m_dwImportedProgSettPrec = dwPrec;} DWORD GetImportedProgSettPrec() {return m_dwImportedProgSettPrec;} void SetImportedConnSettPrec(DWORD dwPrec) {m_dwImportedConnSettPrec = dwPrec;} DWORD GetImportedConnSettPrec() {return m_dwImportedConnSettPrec;} void SetImportedSecZonesPrec(DWORD dwPrec) {m_dwImportedSecZonesPrec = dwPrec;} DWORD GetImportedSecZonesPrec() {return m_dwImportedSecZonesPrec;} void SetImportedSecRatingsPrec(DWORD dwPrec) {m_dwImportedSecRatingsPrec = dwPrec;} DWORD GetImportedSecRatingsPrec() {return m_dwImportedSecRatingsPrec;} void SetImportedAuthenticodePrec(DWORD dwPrec) {m_dwImportedAuthenticodePrec = dwPrec;} DWORD GetImportedAuthenticodePrec() {return m_dwImportedAuthenticodePrec;} void SetImportedSecZoneCount(DWORD dwCount) {m_dwImportedSecZones = dwCount;} DWORD GetImportedSecZoneCount() {return m_dwImportedSecZones;} void SetPlanningMode(BOOL fMode) { m_fPlanning = fMode;} BOOL IsPlanningMode() { return m_fPlanning;} // for authenticode certificates WMI_CERT_INFO *m_pwci[5]; int m_iCurColumn; DWORD m_rgdwSortParam[5]; // implementation public: private: static int __cdecl ComparePSObjectsByPrecedence(const void *arg1, const void *arg2); void UninitCertInfo(); CSnapIn *m_pCS; ComPtr m_pWbemServices; CPSObjData **m_paPSObj; long m_nPSObjects; CPSObjData **m_paCSObj; long m_nCSObjects; BOOL m_fPlanning; ComPtr m_pCRatObj; // store this for the multiple pages that use it DWORD m_dwImportedProgSettPrec; DWORD m_dwImportedConnSettPrec; DWORD m_dwImportedSecZonesPrec; DWORD m_dwImportedSecRatingsPrec; DWORD m_dwImportedAuthenticodePrec; DWORD m_dwImportedSecZones; }; ///////////////////////////////////////////////////////////////////// // cached string functions LPCTSTR GetDisabledString(); LPCTSTR GetEnabledString(); ///////////////////////////////////////////////////////////////////// // variant utilities BOOL IsVariantNull(const VARIANT &v); BOOL GetWMIPropBool(IWbemClassObject *pObj, BSTR bstrProp, BOOL fDefault, BOOL &fHandled); DWORD GetWMIPropUL(IWbemClassObject *pObj, BSTR bstrProp, DWORD dwDefault, BOOL &fHandled); void GetWMIPropPWSTR(IWbemClassObject *pObj, BSTR bstrProp, LPWSTR wszBuffer, DWORD dwBufferLen, LPWSTR wszDefault, BOOL &fHandled); void GetWMIPropPTSTR(IWbemClassObject *pObj, BSTR bstrProp, LPTSTR szBuffer, DWORD dwBufferLen, LPTSTR szDefault, BOOL &fHandled); ///////////////////////////////////////////////////////////////////// // IEAK RSoP-related functions CDlgRSoPData *GetDlgRSoPData(HWND hDlg, CSnapIn *pCS); void DestroyDlgRSoPData(HWND hDlg); ///////////////////////////////////////////////////////////////////// // IEAK Policy Setting property retrieval functions _bstr_t GetGPOSetting(ComPtr pPSObj, BSTR bstrSettingName); DWORD GetGPOPrecedence(ComPtr pPSObj, BSTR bstrProp = NULL); HRESULT InitGenericPrecedencePage(CDlgRSoPData *pDRD, HWND hwndList, BSTR bstrPropName); ///////////////////////////////////////////////////////////////////// // Precedence page list control functions void InsertPrecedenceListItem(HWND hwndList, long nItem, LPTSTR szName, LPTSTR szSetting); // INetCpl-related functions int CreateINetCplLookALikePage(HWND hwndParent, UINT nID, DLGPROC dlgProc, LPARAM lParam); #endif //__IEAKSIE_RSOP_H__