1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _INC_NDHELPER 7 #define _INC_NDHELPER 8 #include <ndattrib.h> 9 10 #if (_WIN32_WINNT >= 0x0600) 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 typedef struct tagDiagnosticsInfo { 17 __LONG32 cost; 18 ULONG flags; 19 } DiagnosticsInfo, *PDiagnosticsInfo; 20 21 typedef struct tagHYPOTHESIS { 22 LPWSTR pwszClassName; 23 LPWSTR pwszDescription; 24 ULONG celt; 25 PHELPER_ATTRIBUTE rgAttributes[ ]; 26 } HYPOTHESIS, *PHYPOTHESIS; 27 28 typedef struct tagHelperAttributeInfo { 29 LPWSTR pwszName; 30 ATTRIBUTE_TYPE type; 31 } HelperAttributeInfo, *PHelperAttributeInfo; 32 33 #ifdef __cplusplus 34 } 35 #endif 36 37 #undef INTERFACE 38 #define INTERFACE INetDiagHelperInfo 39 #ifdef __GNUC__ 40 #warning COM interfaces layout in this header has not been verified. 41 #warning COM interfaces with incorrect layout may not work at all. 42 __MINGW_BROKEN_INTERFACE(INTERFACE) 43 #endif 44 DECLARE_INTERFACE_(INetDiagHelperInfo,IUnknown) 45 { 46 BEGIN_INTERFACE 47 48 /* IUnknown methods */ 49 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 50 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 51 STDMETHOD_(ULONG, Release)(THIS) PURE; 52 53 /* INetDiagHelperInfo methods */ 54 STDMETHOD_(HRESULT,GetAttributeInfo)(THIS_ ULONG *pcelt,HelperAttributeInfo **pprgAttributeInfos) PURE; 55 56 END_INTERFACE 57 }; 58 #ifdef COBJMACROS 59 #define INetDiagHelperInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 60 #define INetDiagHelperInfo_AddRef(This) (This)->lpVtbl->AddRef(This) 61 #define INetDiagHelperInfo_Release(This) (This)->lpVtbl->Release(This) 62 #define INetDiagHelperInfo_GetAttributeInfo(This,pcelt,pprgAttributeInfos) (This)->lpVtbl->GetAttributeInfo(This,pcelt,pprgAttributeInfos) 63 #endif /*COBJMACROS*/ 64 65 #undef INTERFACE 66 #define INTERFACE INetDiagHelper 67 DECLARE_INTERFACE_(INetDiagHelper,IUnknown) 68 { 69 BEGIN_INTERFACE 70 71 /* IUnknown methods */ 72 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 73 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 74 STDMETHOD_(ULONG, Release)(THIS) PURE; 75 76 /* INetDiagHelper methods */ 77 STDMETHOD_(HRESULT,Cancel)(THIS) PURE; 78 STDMETHOD_(HRESULT,Cleanup)(THIS) PURE; 79 STDMETHOD_(HRESULT,GetAttributes)(THIS_ ULONG *pcelt,HELPER_ATTRIBUTE **pprgAttributes) PURE; 80 STDMETHOD_(HRESULT,GetCacheTime)(THIS_ FILETIME *pCacheTime) PURE; 81 STDMETHOD_(HRESULT,GetDiagnosticsInfo)(THIS_ RETVAL DiagnosticsInfo **ppInfo) PURE; 82 STDMETHOD_(HRESULT,GetDownStreamHypotheses)(THIS_ ULONG *pcelt,HYPOTHESIS **pprgHypotheses) PURE; 83 STDMETHOD_(HRESULT,GetHigherHypotheses)(THIS_ ULONG *pcelt,HYPOTHESIS **pprgHypotheses) PURE; 84 STDMETHOD_(HRESULT,GetKeyAttributes)(THIS_ ULONG *pcelt,HELPER_ATTRIBUTE **pprgAttributes) PURE; 85 STDMETHOD_(HRESULT,GetLifeTime)(THIS_ LIFE_TIME *pLifeTime) PURE; 86 STDMETHOD_(HRESULT,GetLowerHypotheses)(THIS_ ULONG *pcelt,HYPOTHESIS **pprgHypotheses) PURE; 87 STDMETHOD_(HRESULT,GetRepairInfo)(THIS_ PROBLEM_TYPE problem,ULONG pcelt,RepairInfo **ppInfo) PURE; 88 STDMETHOD_(HRESULT,GetUpStreamHypotheses)(THIS_ ULONG *pcelt,HYPOTHESIS **pprgHypotheses) PURE; 89 STDMETHOD_(HRESULT,HighUtilization)(THIS_ STRING LPWSTR pwszInstanceDescription,STRING LPWSTR *ppwszDescription,LONG *pDeferredTime,DIAGNOSTICS_STATUS *pStatus) PURE; 90 STDMETHOD_(HRESULT,Initialize)(THIS_ ULONG celt,HELPER_ATTRIBUTE rgAttributes) PURE; 91 STDMETHOD_(HRESULT,LowHealth)(THIS_ STRING LPWSTR pwszInstanceDescription,STRING LPWSTR *ppwszDescription,LONG *pDeferredTime,DIAGNOSTICS_STATUS *pStatus) PURE; 92 STDMETHOD_(HRESULT,Repair)(THIS_ REPAIRINFO *pInfo,LONG *pDeferredTime,REPAIR_STATUS *pStatus) PURE; 93 STDMETHOD_(HRESULT,SetLifeTime)(THIS_ LIFE_TIME lifeTime) PURE; 94 STDMETHOD_(HRESULT,Validate)(THIS_ PROBLEM_TYPE problem,ULONG *pDeferredTime,REPAIR_STATUS *pStatus) PURE; 95 96 END_INTERFACE 97 }; 98 #ifdef COBJMACROS 99 #define INetDiagHelper_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 100 #define INetDiagHelper_AddRef(This) (This)->lpVtbl->AddRef(This) 101 #define INetDiagHelper_Release(This) (This)->lpVtbl->Release(This) 102 #define INetDiagHelper_Cancel() (This)->lpVtbl->Cancel(This) 103 #define INetDiagHelper_Cleanup() (This)->lpVtbl->Cleanup(This) 104 #define INetDiagHelper_GetAttributes(This,pcelt,pprgAttributes) (This)->lpVtbl->GetAttributes(This,pcelt,pprgAttributes) 105 #define INetDiagHelper_GetCacheTime(This,pCacheTime) (This)->lpVtbl->GetCacheTime(This,pCacheTime) 106 #define INetDiagHelper_GetDiagnosticsInfo(This,ppInfo) (This)->lpVtbl->GetDiagnosticsInfo(This,ppInfo) 107 #define INetDiagHelper_GetDownStreamHypotheses(This,pcelt,pprgHypotheses) (This)->lpVtbl->GetDownStreamHypotheses(This,pcelt,pprgHypotheses) 108 #define INetDiagHelper_GetHigherHypotheses(This,pcelt,pprgHypotheses) (This)->lpVtbl->GetHigherHypotheses(This,pcelt,pprgHypotheses) 109 #define INetDiagHelper_GetKeyAttributes(This,pcelt,pprgAttributes) (This)->lpVtbl->GetKeyAttributes(This,pcelt,pprgAttributes) 110 #define INetDiagHelper_GetLifeTime(This,pLifeTime) (This)->lpVtbl->GetLifeTime(This,pLifeTime) 111 #define INetDiagHelper_GetLowerHypotheses(This,pcelt,pprgHypotheses) (This)->lpVtbl->GetLowerHypotheses(This,pcelt,pprgHypotheses) 112 #define INetDiagHelper_GetRepairInfo(This,problem,pcelt,ppInfo) (This)->lpVtbl->GetRepairInfo(This,problem,pcelt,ppInfo) 113 #define INetDiagHelper_GetUpStreamHypotheses(This,pcelt,pprgHypotheses) (This)->lpVtbl->GetUpStreamHypotheses(This,pcelt,pprgHypotheses) 114 #define INetDiagHelper_HighUtilization(This,pwszInstanceDescription,ppwszDescription,pDeferredTime,pStatus) (This)->lpVtbl->HighUtilization(This,pwszInstanceDescription,ppwszDescription,pDeferredTime,pStatus) 115 #define INetDiagHelper_Initialize(This,celt,rgAttributes) (This)->lpVtbl->Initialize(This,celt,rgAttributes) 116 #define INetDiagHelper_LowHealth(This,pwszInstanceDescription,ppwszDescription,pDeferredTime,pStatus) (This)->lpVtbl->LowHealth(This,pwszInstanceDescription,ppwszDescription,pDeferredTime,pStatus) 117 #define INetDiagHelper_Repair(This,pInfo,pDeferredTime,pStatus) (This)->lpVtbl->Repair(This,pInfo,pDeferredTime,pStatus) 118 #define INetDiagHelper_SetLifeTime(This,lifeTime) (This)->lpVtbl->SetLifeTime(This,lifeTime) 119 #define INetDiagHelper_Validate(This,problem,pDeferredTime,pStatus) (This)->lpVtbl->Validate(This,problem,pDeferredTime,pStatus) 120 #endif /*COBJMACROS*/ 121 122 #if (_WIN32_WINNT >= 0x0601) 123 typedef struct tagHypothesisResult { 124 HYPOTHESIS hypothesis; 125 DIAGNOSIS_STATUS pathStatus; 126 } HypothesisResult; 127 128 #undef INTERFACE 129 #define INTERFACE INetDiagHelperUtilFactory 130 #ifdef __GNUC__ 131 #warning COM interfaces layout in this header has not been verified. 132 #warning COM interfaces with incorrect layout may not work at all. 133 __MINGW_BROKEN_INTERFACE(INTERFACE) 134 #endif 135 DECLARE_INTERFACE_(INetDiagHelperUtilFactory,IUnknown) 136 { 137 BEGIN_INTERFACE 138 139 /* IUnknown methods */ 140 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 141 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 142 STDMETHOD_(ULONG, Release)(THIS) PURE; 143 144 /* INetDiagHelperUtilFactory methods */ 145 STDMETHOD(CreateUtilityInstance)(THIS_ REFIID *riid,void **ppvObject) PURE; 146 147 END_INTERFACE 148 }; 149 #ifdef COBJMACROS 150 #define INetDiagHelperUtilFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 151 #define INetDiagHelperUtilFactory_AddRef(This) (This)->lpVtbl->AddRef(This) 152 #define INetDiagHelperUtilFactory_Release(This) (This)->lpVtbl->Release(This) 153 #define INetDiagHelperUtilFactory_CreateUtilityInstance(This,riid,ppvObject) (This)->lpVtbl->CreateUtilityInstance(This,riid,ppvObject) 154 #endif /*COBJMACROS*/ 155 156 #undef INTERFACE 157 #define INTERFACE INetDiagHelperEx 158 #ifdef __GNUC__ 159 #warning COM interfaces layout in this header has not been verified. 160 #warning COM interfaces with incorrect layout may not work at all. 161 __MINGW_BROKEN_INTERFACE(INTERFACE) 162 #endif 163 DECLARE_INTERFACE_(INetDiagHelperEx,IUnknown) 164 { 165 BEGIN_INTERFACE 166 167 /* IUnknown methods */ 168 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 169 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 170 STDMETHOD_(ULONG, Release)(THIS) PURE; 171 172 /* INetDiagHelperEx methods */ 173 STDMETHOD_(HRESULT,ReconfirmLowHealth)(THIS_ ULONG celt,HypothesisResult *pResults,string LPWSTR *ppwszUpdatedDescription,DIAGNOSIS_STATUS *pUpdatedStatus) PURE; 174 STDMETHOD(ReproduceFailure)(THIS) PURE; 175 STDMETHOD(SetUtilities)(THIS_ INetDiagHelperUtilFactory *pUtilities) PURE; 176 177 END_INTERFACE 178 }; 179 #ifdef COBJMACROS 180 #define INetDiagHelperEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 181 #define INetDiagHelperEx_AddRef(This) (This)->lpVtbl->AddRef(This) 182 #define INetDiagHelperEx_Release(This) (This)->lpVtbl->Release(This) 183 #define INetDiagHelperEx_ReconfirmLowHealth(This,celt,pResults,ppwszUpdatedDescription,pUpdatedStatus) (This)->lpVtbl->ReconfirmLowHealth(This,celt,pResults,ppwszUpdatedDescription,pUpdatedStatus) 184 #define INetDiagHelperEx_ReproduceFailure() (This)->lpVtbl->ReproduceFailure(This) 185 #define INetDiagHelperEx_SetUtilities(This,pUtilities) (This)->lpVtbl->SetUtilities(This,pUtilities) 186 #endif /*COBJMACROS*/ 187 188 #endif /*(_WIN32_WINNT >= 0x0601)*/ 189 190 #endif /*(_WIN32_WINNT >= 0x0600)*/ 191 192 #endif /*_INC_NDHELPER*/ 193