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 __REQUIRED_RPCNDR_H_VERSION__ 7 #define __REQUIRED_RPCNDR_H_VERSION__ 440 8 #endif 9 10 #include "rpc.h" 11 #include "rpcndr.h" 12 13 #ifndef __RPCNDR_H_VERSION__ 14 #error This stub requires an updated version of <rpcndr.h> 15 #endif 16 17 #ifndef COM_NO_WINDOWS_H 18 #include "windows.h" 19 #include "ole2.h" 20 #endif 21 22 #ifndef __subsmgr_h__ 23 #define __subsmgr_h__ 24 25 #ifndef __IEnumItemProperties_FWD_DEFINED__ 26 #define __IEnumItemProperties_FWD_DEFINED__ 27 typedef struct IEnumItemProperties IEnumItemProperties; 28 #endif 29 30 #ifndef __ISubscriptionItem_FWD_DEFINED__ 31 #define __ISubscriptionItem_FWD_DEFINED__ 32 typedef struct ISubscriptionItem ISubscriptionItem; 33 #endif 34 35 #ifndef __IEnumSubscription_FWD_DEFINED__ 36 #define __IEnumSubscription_FWD_DEFINED__ 37 typedef struct IEnumSubscription IEnumSubscription; 38 #endif 39 40 #ifndef __ISubscriptionMgr_FWD_DEFINED__ 41 #define __ISubscriptionMgr_FWD_DEFINED__ 42 typedef struct ISubscriptionMgr ISubscriptionMgr; 43 #endif 44 45 #ifndef __ISubscriptionMgr2_FWD_DEFINED__ 46 #define __ISubscriptionMgr2_FWD_DEFINED__ 47 typedef struct ISubscriptionMgr2 ISubscriptionMgr2; 48 #endif 49 50 #ifndef __SubscriptionMgr_FWD_DEFINED__ 51 #define __SubscriptionMgr_FWD_DEFINED__ 52 #ifdef __cplusplus 53 typedef class SubscriptionMgr SubscriptionMgr; 54 #else 55 typedef struct SubscriptionMgr SubscriptionMgr; 56 #endif 57 #endif 58 59 #include "unknwn.h" 60 #include "ocidl.h" 61 62 #ifdef __cplusplus 63 extern "C" { 64 #endif 65 66 #ifndef __MIDL_user_allocate_free_DEFINED__ 67 #define __MIDL_user_allocate_free_DEFINED__ 68 void *__RPC_API MIDL_user_allocate(size_t); 69 void __RPC_API MIDL_user_free(void *); 70 #endif 71 72 typedef GUID SUBSCRIPTIONCOOKIE; 73 74 extern RPC_IF_HANDLE __MIDL_itf_subsmgr_0000_v0_0_c_ifspec; 75 extern RPC_IF_HANDLE __MIDL_itf_subsmgr_0000_v0_0_s_ifspec; 76 77 #ifndef __IEnumItemProperties_INTERFACE_DEFINED__ 78 #define __IEnumItemProperties_INTERFACE_DEFINED__ 79 typedef IEnumItemProperties *LPENUMITEMPROPERTIES; 80 81 typedef struct _tagITEMPROP { 82 VARIANT variantValue; 83 LPWSTR pwszName; 84 } ITEMPROP; 85 86 typedef struct _tagITEMPROP *LPITEMPROP; 87 88 EXTERN_C const IID IID_IEnumItemProperties; 89 #if defined(__cplusplus) && !defined(CINTERFACE) 90 struct IEnumItemProperties : public IUnknown { 91 public: 92 virtual HRESULT WINAPI Next(ULONG celt,ITEMPROP *rgelt,ULONG *pceltFetched) = 0; 93 virtual HRESULT WINAPI Skip(ULONG celt) = 0; 94 virtual HRESULT WINAPI Reset(void) = 0; 95 virtual HRESULT WINAPI Clone(IEnumItemProperties **ppenum) = 0; 96 virtual HRESULT WINAPI GetCount(ULONG *pnCount) = 0; 97 }; 98 #else 99 typedef struct IEnumItemPropertiesVtbl { 100 BEGIN_INTERFACE 101 HRESULT (WINAPI *QueryInterface)(IEnumItemProperties *This,REFIID riid,void **ppvObject); 102 ULONG (WINAPI *AddRef)(IEnumItemProperties *This); 103 ULONG (WINAPI *Release)(IEnumItemProperties *This); 104 HRESULT (WINAPI *Next)(IEnumItemProperties *This,ULONG celt,ITEMPROP *rgelt,ULONG *pceltFetched); 105 HRESULT (WINAPI *Skip)(IEnumItemProperties *This,ULONG celt); 106 HRESULT (WINAPI *Reset)(IEnumItemProperties *This); 107 HRESULT (WINAPI *Clone)(IEnumItemProperties *This,IEnumItemProperties **ppenum); 108 HRESULT (WINAPI *GetCount)(IEnumItemProperties *This,ULONG *pnCount); 109 END_INTERFACE 110 } IEnumItemPropertiesVtbl; 111 struct IEnumItemProperties { 112 CONST_VTBL struct IEnumItemPropertiesVtbl *lpVtbl; 113 }; 114 #ifdef COBJMACROS 115 #define IEnumItemProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 116 #define IEnumItemProperties_AddRef(This) (This)->lpVtbl->AddRef(This) 117 #define IEnumItemProperties_Release(This) (This)->lpVtbl->Release(This) 118 #define IEnumItemProperties_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched) 119 #define IEnumItemProperties_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) 120 #define IEnumItemProperties_Reset(This) (This)->lpVtbl->Reset(This) 121 #define IEnumItemProperties_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) 122 #define IEnumItemProperties_GetCount(This,pnCount) (This)->lpVtbl->GetCount(This,pnCount) 123 #endif 124 #endif 125 HRESULT WINAPI IEnumItemProperties_Next_Proxy(IEnumItemProperties *This,ULONG celt,ITEMPROP *rgelt,ULONG *pceltFetched); 126 void __RPC_STUB IEnumItemProperties_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 127 HRESULT WINAPI IEnumItemProperties_Skip_Proxy(IEnumItemProperties *This,ULONG celt); 128 void __RPC_STUB IEnumItemProperties_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 129 HRESULT WINAPI IEnumItemProperties_Reset_Proxy(IEnumItemProperties *This); 130 void __RPC_STUB IEnumItemProperties_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 131 HRESULT WINAPI IEnumItemProperties_Clone_Proxy(IEnumItemProperties *This,IEnumItemProperties **ppenum); 132 void __RPC_STUB IEnumItemProperties_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 133 HRESULT WINAPI IEnumItemProperties_GetCount_Proxy(IEnumItemProperties *This,ULONG *pnCount); 134 void __RPC_STUB IEnumItemProperties_GetCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 135 #endif 136 137 #define SI_TEMPORARY 0x80000000 138 139 extern RPC_IF_HANDLE __MIDL_itf_subsmgr_0264_v0_0_c_ifspec; 140 extern RPC_IF_HANDLE __MIDL_itf_subsmgr_0264_v0_0_s_ifspec; 141 142 #ifndef __ISubscriptionItem_INTERFACE_DEFINED__ 143 #define __ISubscriptionItem_INTERFACE_DEFINED__ 144 typedef ISubscriptionItem *LPSUBSCRIPTIONITEM; 145 146 typedef struct tagSUBSCRIPTIONITEMINFO { 147 ULONG cbSize; 148 DWORD dwFlags; 149 DWORD dwPriority; 150 SUBSCRIPTIONCOOKIE ScheduleGroup; 151 CLSID clsidAgent; 152 } SUBSCRIPTIONITEMINFO; 153 154 EXTERN_C const IID IID_ISubscriptionItem; 155 #if defined(__cplusplus) && !defined(CINTERFACE) 156 struct ISubscriptionItem : public IUnknown { 157 public: 158 virtual HRESULT WINAPI GetCookie(SUBSCRIPTIONCOOKIE *pCookie) = 0; 159 virtual HRESULT WINAPI GetSubscriptionItemInfo(SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo) = 0; 160 virtual HRESULT WINAPI SetSubscriptionItemInfo(const SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo) = 0; 161 virtual HRESULT WINAPI ReadProperties(ULONG nCount,const LPCWSTR rgwszName[],VARIANT rgValue[]) = 0; 162 virtual HRESULT WINAPI WriteProperties(ULONG nCount,const LPCWSTR rgwszName[],const VARIANT rgValue[]) = 0; 163 virtual HRESULT WINAPI EnumProperties(IEnumItemProperties **ppEnumItemProperties) = 0; 164 virtual HRESULT WINAPI NotifyChanged(void) = 0; 165 }; 166 #else 167 typedef struct ISubscriptionItemVtbl { 168 BEGIN_INTERFACE 169 HRESULT (WINAPI *QueryInterface)(ISubscriptionItem *This,REFIID riid,void **ppvObject); 170 ULONG (WINAPI *AddRef)(ISubscriptionItem *This); 171 ULONG (WINAPI *Release)(ISubscriptionItem *This); 172 HRESULT (WINAPI *GetCookie)(ISubscriptionItem *This,SUBSCRIPTIONCOOKIE *pCookie); 173 HRESULT (WINAPI *GetSubscriptionItemInfo)(ISubscriptionItem *This,SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo); 174 HRESULT (WINAPI *SetSubscriptionItemInfo)(ISubscriptionItem *This,const SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo); 175 HRESULT (WINAPI *ReadProperties)(ISubscriptionItem *This,ULONG nCount,const LPCWSTR rgwszName[],VARIANT rgValue[]); 176 HRESULT (WINAPI *WriteProperties)(ISubscriptionItem *This,ULONG nCount,const LPCWSTR rgwszName[],const VARIANT rgValue[]); 177 HRESULT (WINAPI *EnumProperties)(ISubscriptionItem *This,IEnumItemProperties **ppEnumItemProperties); 178 HRESULT (WINAPI *NotifyChanged)(ISubscriptionItem *This); 179 END_INTERFACE 180 } ISubscriptionItemVtbl; 181 struct ISubscriptionItem { 182 CONST_VTBL struct ISubscriptionItemVtbl *lpVtbl; 183 }; 184 #ifdef COBJMACROS 185 #define ISubscriptionItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 186 #define ISubscriptionItem_AddRef(This) (This)->lpVtbl->AddRef(This) 187 #define ISubscriptionItem_Release(This) (This)->lpVtbl->Release(This) 188 #define ISubscriptionItem_GetCookie(This,pCookie) (This)->lpVtbl->GetCookie(This,pCookie) 189 #define ISubscriptionItem_GetSubscriptionItemInfo(This,pSubscriptionItemInfo) (This)->lpVtbl->GetSubscriptionItemInfo(This,pSubscriptionItemInfo) 190 #define ISubscriptionItem_SetSubscriptionItemInfo(This,pSubscriptionItemInfo) (This)->lpVtbl->SetSubscriptionItemInfo(This,pSubscriptionItemInfo) 191 #define ISubscriptionItem_ReadProperties(This,nCount,rgwszName,rgValue) (This)->lpVtbl->ReadProperties(This,nCount,rgwszName,rgValue) 192 #define ISubscriptionItem_WriteProperties(This,nCount,rgwszName,rgValue) (This)->lpVtbl->WriteProperties(This,nCount,rgwszName,rgValue) 193 #define ISubscriptionItem_EnumProperties(This,ppEnumItemProperties) (This)->lpVtbl->EnumProperties(This,ppEnumItemProperties) 194 #define ISubscriptionItem_NotifyChanged(This) (This)->lpVtbl->NotifyChanged(This) 195 #endif 196 #endif 197 HRESULT WINAPI ISubscriptionItem_GetCookie_Proxy(ISubscriptionItem *This,SUBSCRIPTIONCOOKIE *pCookie); 198 void __RPC_STUB ISubscriptionItem_GetCookie_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 199 HRESULT WINAPI ISubscriptionItem_GetSubscriptionItemInfo_Proxy(ISubscriptionItem *This,SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo); 200 void __RPC_STUB ISubscriptionItem_GetSubscriptionItemInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 201 HRESULT WINAPI ISubscriptionItem_SetSubscriptionItemInfo_Proxy(ISubscriptionItem *This,const SUBSCRIPTIONITEMINFO *pSubscriptionItemInfo); 202 void __RPC_STUB ISubscriptionItem_SetSubscriptionItemInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 203 HRESULT WINAPI ISubscriptionItem_ReadProperties_Proxy(ISubscriptionItem *This,ULONG nCount,const LPCWSTR rgwszName[],VARIANT rgValue[]); 204 void __RPC_STUB ISubscriptionItem_ReadProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 205 HRESULT WINAPI ISubscriptionItem_WriteProperties_Proxy(ISubscriptionItem *This,ULONG nCount,const LPCWSTR rgwszName[],const VARIANT rgValue[]); 206 void __RPC_STUB ISubscriptionItem_WriteProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 207 HRESULT WINAPI ISubscriptionItem_EnumProperties_Proxy(ISubscriptionItem *This,IEnumItemProperties **ppEnumItemProperties); 208 void __RPC_STUB ISubscriptionItem_EnumProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 209 HRESULT WINAPI ISubscriptionItem_NotifyChanged_Proxy(ISubscriptionItem *This); 210 void __RPC_STUB ISubscriptionItem_NotifyChanged_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 211 #endif 212 213 #ifndef __IEnumSubscription_INTERFACE_DEFINED__ 214 #define __IEnumSubscription_INTERFACE_DEFINED__ 215 typedef IEnumSubscription *LPENUMSUBSCRIPTION; 216 217 EXTERN_C const IID IID_IEnumSubscription; 218 #if defined(__cplusplus) && !defined(CINTERFACE) 219 struct IEnumSubscription : public IUnknown { 220 public: 221 virtual HRESULT WINAPI Next(ULONG celt,SUBSCRIPTIONCOOKIE *rgelt,ULONG *pceltFetched) = 0; 222 virtual HRESULT WINAPI Skip(ULONG celt) = 0; 223 virtual HRESULT WINAPI Reset(void) = 0; 224 virtual HRESULT WINAPI Clone(IEnumSubscription **ppenum) = 0; 225 virtual HRESULT WINAPI GetCount(ULONG *pnCount) = 0; 226 }; 227 #else 228 typedef struct IEnumSubscriptionVtbl { 229 BEGIN_INTERFACE 230 HRESULT (WINAPI *QueryInterface)(IEnumSubscription *This,REFIID riid,void **ppvObject); 231 ULONG (WINAPI *AddRef)(IEnumSubscription *This); 232 ULONG (WINAPI *Release)(IEnumSubscription *This); 233 HRESULT (WINAPI *Next)(IEnumSubscription *This,ULONG celt,SUBSCRIPTIONCOOKIE *rgelt,ULONG *pceltFetched); 234 HRESULT (WINAPI *Skip)(IEnumSubscription *This,ULONG celt); 235 HRESULT (WINAPI *Reset)(IEnumSubscription *This); 236 HRESULT (WINAPI *Clone)(IEnumSubscription *This,IEnumSubscription **ppenum); 237 HRESULT (WINAPI *GetCount)(IEnumSubscription *This,ULONG *pnCount); 238 END_INTERFACE 239 } IEnumSubscriptionVtbl; 240 struct IEnumSubscription { 241 CONST_VTBL struct IEnumSubscriptionVtbl *lpVtbl; 242 }; 243 #ifdef COBJMACROS 244 #define IEnumSubscription_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 245 #define IEnumSubscription_AddRef(This) (This)->lpVtbl->AddRef(This) 246 #define IEnumSubscription_Release(This) (This)->lpVtbl->Release(This) 247 #define IEnumSubscription_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched) 248 #define IEnumSubscription_Skip(This,celt) (This)->lpVtbl->Skip(This,celt) 249 #define IEnumSubscription_Reset(This) (This)->lpVtbl->Reset(This) 250 #define IEnumSubscription_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum) 251 #define IEnumSubscription_GetCount(This,pnCount) (This)->lpVtbl->GetCount(This,pnCount) 252 #endif 253 #endif 254 HRESULT WINAPI IEnumSubscription_Next_Proxy(IEnumSubscription *This,ULONG celt,SUBSCRIPTIONCOOKIE *rgelt,ULONG *pceltFetched); 255 void __RPC_STUB IEnumSubscription_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 256 HRESULT WINAPI IEnumSubscription_Skip_Proxy(IEnumSubscription *This,ULONG celt); 257 void __RPC_STUB IEnumSubscription_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 258 HRESULT WINAPI IEnumSubscription_Reset_Proxy(IEnumSubscription *This); 259 void __RPC_STUB IEnumSubscription_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 260 HRESULT WINAPI IEnumSubscription_Clone_Proxy(IEnumSubscription *This,IEnumSubscription **ppenum); 261 void __RPC_STUB IEnumSubscription_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 262 HRESULT WINAPI IEnumSubscription_GetCount_Proxy(IEnumSubscription *This,ULONG *pnCount); 263 void __RPC_STUB IEnumSubscription_GetCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 264 #endif 265 266 #ifndef __SubscriptionMgr_LIBRARY_DEFINED__ 267 #define __SubscriptionMgr_LIBRARY_DEFINED__ 268 EXTERN_C const IID LIBID_SubscriptionMgr; 269 #ifndef __ISubscriptionMgr_INTERFACE_DEFINED__ 270 #define __ISubscriptionMgr_INTERFACE_DEFINED__ 271 typedef enum SUBSCRIPTIONTYPE { 272 SUBSTYPE_URL = 0,SUBSTYPE_CHANNEL = 1,SUBSTYPE_DESKTOPURL = 2,SUBSTYPE_EXTERNAL = 3,SUBSTYPE_DESKTOPCHANNEL = 4 273 } SUBSCRIPTIONTYPE; 274 275 typedef enum SUBSCRIPTIONINFOFLAGS { 276 SUBSINFO_SCHEDULE = 0x1,SUBSINFO_RECURSE = 0x2,SUBSINFO_WEBCRAWL = 0x4,SUBSINFO_MAILNOT = 0x8, 277 SUBSINFO_MAXSIZEKB = 0x10,SUBSINFO_USER = 0x20,SUBSINFO_PASSWORD = 0x40,SUBSINFO_TASKFLAGS = 0x100, 278 SUBSINFO_GLEAM = 0x200,SUBSINFO_CHANGESONLY = 0x400,SUBSINFO_CHANNELFLAGS = 0x800,SUBSINFO_FRIENDLYNAME = 0x2000, 279 SUBSINFO_NEEDPASSWORD = 0x4000,SUBSINFO_TYPE = 0x8000 280 } SUBSCRIPTIONINFOFLAGS; 281 282 #define SUBSINFO_ALLFLAGS 0x0000EF7F 283 284 typedef enum CREATESUBSCRIPTIONFLAGS { 285 CREATESUBS_ADDTOFAVORITES = 0x1,CREATESUBS_FROMFAVORITES = 0x2,CREATESUBS_NOUI = 0x4,CREATESUBS_NOSAVE = 0x8, 286 CREATESUBS_SOFTWAREUPDATE = 0x10 287 } CREATESUBSCRIPTIONFLAGS; 288 289 typedef enum SUBSCRIPTIONSCHEDULE { 290 SUBSSCHED_AUTO = 0,SUBSSCHED_DAILY = 1,SUBSSCHED_WEEKLY = 2,SUBSSCHED_CUSTOM = 3,SUBSSCHED_MANUAL = 4 291 } SUBSCRIPTIONSCHEDULE; 292 293 typedef struct _tagSubscriptionInfo { 294 DWORD cbSize; 295 DWORD fUpdateFlags; 296 SUBSCRIPTIONSCHEDULE schedule; 297 CLSID customGroupCookie; 298 LPVOID pTrigger; 299 DWORD dwRecurseLevels; 300 DWORD fWebcrawlerFlags; 301 WINBOOL bMailNotification; 302 WINBOOL bGleam; 303 WINBOOL bChangesOnly; 304 WINBOOL bNeedPassword; 305 DWORD fChannelFlags; 306 BSTR bstrUserName; 307 BSTR bstrPassword; 308 BSTR bstrFriendlyName; 309 DWORD dwMaxSizeKB; 310 SUBSCRIPTIONTYPE subType; 311 DWORD fTaskFlags; 312 DWORD dwReserved; 313 } SUBSCRIPTIONINFO; 314 315 typedef struct _tagSubscriptionInfo *LPSUBSCRIPTIONINFO; 316 typedef struct _tagSubscriptionInfo *PSUBSCRIPTIONINFO; 317 318 EXTERN_C const IID IID_ISubscriptionMgr; 319 #if defined(__cplusplus) && !defined(CINTERFACE) 320 struct ISubscriptionMgr : public IUnknown { 321 public: 322 virtual HRESULT WINAPI DeleteSubscription(LPCWSTR pwszURL,HWND hwnd) = 0; 323 virtual HRESULT WINAPI UpdateSubscription(LPCWSTR pwszURL) = 0; 324 virtual HRESULT WINAPI UpdateAll(void) = 0; 325 virtual HRESULT WINAPI IsSubscribed(LPCWSTR pwszURL,WINBOOL *pfSubscribed) = 0; 326 virtual HRESULT WINAPI GetSubscriptionInfo(LPCWSTR pwszURL,SUBSCRIPTIONINFO *pInfo) = 0; 327 virtual HRESULT WINAPI GetDefaultInfo(SUBSCRIPTIONTYPE subType,SUBSCRIPTIONINFO *pInfo) = 0; 328 virtual HRESULT WINAPI ShowSubscriptionProperties(LPCWSTR pwszURL,HWND hwnd) = 0; 329 virtual HRESULT WINAPI CreateSubscription(HWND hwnd,LPCWSTR pwszURL,LPCWSTR pwszFriendlyName,DWORD dwFlags,SUBSCRIPTIONTYPE subsType,SUBSCRIPTIONINFO *pInfo) = 0; 330 }; 331 #else 332 typedef struct ISubscriptionMgrVtbl { 333 BEGIN_INTERFACE 334 HRESULT (WINAPI *QueryInterface)(ISubscriptionMgr *This,REFIID riid,void **ppvObject); 335 ULONG (WINAPI *AddRef)(ISubscriptionMgr *This); 336 ULONG (WINAPI *Release)(ISubscriptionMgr *This); 337 HRESULT (WINAPI *DeleteSubscription)(ISubscriptionMgr *This,LPCWSTR pwszURL,HWND hwnd); 338 HRESULT (WINAPI *UpdateSubscription)(ISubscriptionMgr *This,LPCWSTR pwszURL); 339 HRESULT (WINAPI *UpdateAll)(ISubscriptionMgr *This); 340 HRESULT (WINAPI *IsSubscribed)(ISubscriptionMgr *This,LPCWSTR pwszURL,WINBOOL *pfSubscribed); 341 HRESULT (WINAPI *GetSubscriptionInfo)(ISubscriptionMgr *This,LPCWSTR pwszURL,SUBSCRIPTIONINFO *pInfo); 342 HRESULT (WINAPI *GetDefaultInfo)(ISubscriptionMgr *This,SUBSCRIPTIONTYPE subType,SUBSCRIPTIONINFO *pInfo); 343 HRESULT (WINAPI *ShowSubscriptionProperties)(ISubscriptionMgr *This,LPCWSTR pwszURL,HWND hwnd); 344 HRESULT (WINAPI *CreateSubscription)(ISubscriptionMgr *This,HWND hwnd,LPCWSTR pwszURL,LPCWSTR pwszFriendlyName,DWORD dwFlags,SUBSCRIPTIONTYPE subsType,SUBSCRIPTIONINFO *pInfo); 345 END_INTERFACE 346 } ISubscriptionMgrVtbl; 347 struct ISubscriptionMgr { 348 CONST_VTBL struct ISubscriptionMgrVtbl *lpVtbl; 349 }; 350 #ifdef COBJMACROS 351 #define ISubscriptionMgr_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 352 #define ISubscriptionMgr_AddRef(This) (This)->lpVtbl->AddRef(This) 353 #define ISubscriptionMgr_Release(This) (This)->lpVtbl->Release(This) 354 #define ISubscriptionMgr_DeleteSubscription(This,pwszURL,hwnd) (This)->lpVtbl->DeleteSubscription(This,pwszURL,hwnd) 355 #define ISubscriptionMgr_UpdateSubscription(This,pwszURL) (This)->lpVtbl->UpdateSubscription(This,pwszURL) 356 #define ISubscriptionMgr_UpdateAll(This) (This)->lpVtbl->UpdateAll(This) 357 #define ISubscriptionMgr_IsSubscribed(This,pwszURL,pfSubscribed) (This)->lpVtbl->IsSubscribed(This,pwszURL,pfSubscribed) 358 #define ISubscriptionMgr_GetSubscriptionInfo(This,pwszURL,pInfo) (This)->lpVtbl->GetSubscriptionInfo(This,pwszURL,pInfo) 359 #define ISubscriptionMgr_GetDefaultInfo(This,subType,pInfo) (This)->lpVtbl->GetDefaultInfo(This,subType,pInfo) 360 #define ISubscriptionMgr_ShowSubscriptionProperties(This,pwszURL,hwnd) (This)->lpVtbl->ShowSubscriptionProperties(This,pwszURL,hwnd) 361 #define ISubscriptionMgr_CreateSubscription(This,hwnd,pwszURL,pwszFriendlyName,dwFlags,subsType,pInfo) (This)->lpVtbl->CreateSubscription(This,hwnd,pwszURL,pwszFriendlyName,dwFlags,subsType,pInfo) 362 #endif 363 #endif 364 HRESULT WINAPI ISubscriptionMgr_DeleteSubscription_Proxy(ISubscriptionMgr *This,LPCWSTR pwszURL,HWND hwnd); 365 void __RPC_STUB ISubscriptionMgr_DeleteSubscription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 366 HRESULT WINAPI ISubscriptionMgr_UpdateSubscription_Proxy(ISubscriptionMgr *This,LPCWSTR pwszURL); 367 void __RPC_STUB ISubscriptionMgr_UpdateSubscription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 368 HRESULT WINAPI ISubscriptionMgr_UpdateAll_Proxy(ISubscriptionMgr *This); 369 void __RPC_STUB ISubscriptionMgr_UpdateAll_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 370 HRESULT WINAPI ISubscriptionMgr_IsSubscribed_Proxy(ISubscriptionMgr *This,LPCWSTR pwszURL,WINBOOL *pfSubscribed); 371 void __RPC_STUB ISubscriptionMgr_IsSubscribed_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 372 HRESULT WINAPI ISubscriptionMgr_GetSubscriptionInfo_Proxy(ISubscriptionMgr *This,LPCWSTR pwszURL,SUBSCRIPTIONINFO *pInfo); 373 void __RPC_STUB ISubscriptionMgr_GetSubscriptionInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 374 HRESULT WINAPI ISubscriptionMgr_GetDefaultInfo_Proxy(ISubscriptionMgr *This,SUBSCRIPTIONTYPE subType,SUBSCRIPTIONINFO *pInfo); 375 void __RPC_STUB ISubscriptionMgr_GetDefaultInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 376 HRESULT WINAPI ISubscriptionMgr_ShowSubscriptionProperties_Proxy(ISubscriptionMgr *This,LPCWSTR pwszURL,HWND hwnd); 377 void __RPC_STUB ISubscriptionMgr_ShowSubscriptionProperties_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 378 HRESULT WINAPI ISubscriptionMgr_CreateSubscription_Proxy(ISubscriptionMgr *This,HWND hwnd,LPCWSTR pwszURL,LPCWSTR pwszFriendlyName,DWORD dwFlags,SUBSCRIPTIONTYPE subsType,SUBSCRIPTIONINFO *pInfo); 379 void __RPC_STUB ISubscriptionMgr_CreateSubscription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 380 #endif 381 382 #ifndef __ISubscriptionMgr2_INTERFACE_DEFINED__ 383 #define __ISubscriptionMgr2_INTERFACE_DEFINED__ 384 385 #define RS_READY 0x00000001 386 #define RS_SUSPENDED 0x00000002 387 #define RS_UPDATING 0x00000004 388 #define RS_SUSPENDONIDLE 0x00010000 389 #define RS_MAYBOTHERUSER 0x00020000 390 #define RS_COMPLETED 0x80000000 391 392 #define SUBSMGRUPDATE_MINIMIZE 0x00000001 393 #define SUBSMGRUPDATE_MASK 0x00000001 394 #define SUBSMGRENUM_TEMP 0x00000001 395 #define SUBSMGRENUM_MASK 0x00000001 396 397 EXTERN_C const IID IID_ISubscriptionMgr2; 398 #if defined(__cplusplus) && !defined(CINTERFACE) 399 struct ISubscriptionMgr2 : public ISubscriptionMgr { 400 public: 401 virtual HRESULT WINAPI GetItemFromURL(LPCWSTR pwszURL,ISubscriptionItem **ppSubscriptionItem) = 0; 402 virtual HRESULT WINAPI GetItemFromCookie(const SUBSCRIPTIONCOOKIE *pSubscriptionCookie,ISubscriptionItem **ppSubscriptionItem) = 0; 403 virtual HRESULT WINAPI GetSubscriptionRunState(DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies,DWORD *pdwRunState) = 0; 404 virtual HRESULT WINAPI EnumSubscriptions(DWORD dwFlags,IEnumSubscription **ppEnumSubscriptions) = 0; 405 virtual HRESULT WINAPI UpdateItems(DWORD dwFlags,DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies) = 0; 406 virtual HRESULT WINAPI AbortItems(DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies) = 0; 407 virtual HRESULT WINAPI AbortAll(void) = 0; 408 }; 409 #else 410 typedef struct ISubscriptionMgr2Vtbl { 411 BEGIN_INTERFACE 412 HRESULT (WINAPI *QueryInterface)(ISubscriptionMgr2 *This,REFIID riid,void **ppvObject); 413 ULONG (WINAPI *AddRef)(ISubscriptionMgr2 *This); 414 ULONG (WINAPI *Release)(ISubscriptionMgr2 *This); 415 HRESULT (WINAPI *DeleteSubscription)(ISubscriptionMgr2 *This,LPCWSTR pwszURL,HWND hwnd); 416 HRESULT (WINAPI *UpdateSubscription)(ISubscriptionMgr2 *This,LPCWSTR pwszURL); 417 HRESULT (WINAPI *UpdateAll)(ISubscriptionMgr2 *This); 418 HRESULT (WINAPI *IsSubscribed)(ISubscriptionMgr2 *This,LPCWSTR pwszURL,WINBOOL *pfSubscribed); 419 HRESULT (WINAPI *GetSubscriptionInfo)(ISubscriptionMgr2 *This,LPCWSTR pwszURL,SUBSCRIPTIONINFO *pInfo); 420 HRESULT (WINAPI *GetDefaultInfo)(ISubscriptionMgr2 *This,SUBSCRIPTIONTYPE subType,SUBSCRIPTIONINFO *pInfo); 421 HRESULT (WINAPI *ShowSubscriptionProperties)(ISubscriptionMgr2 *This,LPCWSTR pwszURL,HWND hwnd); 422 HRESULT (WINAPI *CreateSubscription)(ISubscriptionMgr2 *This,HWND hwnd,LPCWSTR pwszURL,LPCWSTR pwszFriendlyName,DWORD dwFlags,SUBSCRIPTIONTYPE subsType,SUBSCRIPTIONINFO *pInfo); 423 HRESULT (WINAPI *GetItemFromURL)(ISubscriptionMgr2 *This,LPCWSTR pwszURL,ISubscriptionItem **ppSubscriptionItem); 424 HRESULT (WINAPI *GetItemFromCookie)(ISubscriptionMgr2 *This,const SUBSCRIPTIONCOOKIE *pSubscriptionCookie,ISubscriptionItem **ppSubscriptionItem); 425 HRESULT (WINAPI *GetSubscriptionRunState)(ISubscriptionMgr2 *This,DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies,DWORD *pdwRunState); 426 HRESULT (WINAPI *EnumSubscriptions)(ISubscriptionMgr2 *This,DWORD dwFlags,IEnumSubscription **ppEnumSubscriptions); 427 HRESULT (WINAPI *UpdateItems)(ISubscriptionMgr2 *This,DWORD dwFlags,DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies); 428 HRESULT (WINAPI *AbortItems)(ISubscriptionMgr2 *This,DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies); 429 HRESULT (WINAPI *AbortAll)(ISubscriptionMgr2 *This); 430 END_INTERFACE 431 } ISubscriptionMgr2Vtbl; 432 struct ISubscriptionMgr2 { 433 CONST_VTBL struct ISubscriptionMgr2Vtbl *lpVtbl; 434 }; 435 #ifdef COBJMACROS 436 #define ISubscriptionMgr2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 437 #define ISubscriptionMgr2_AddRef(This) (This)->lpVtbl->AddRef(This) 438 #define ISubscriptionMgr2_Release(This) (This)->lpVtbl->Release(This) 439 #define ISubscriptionMgr2_DeleteSubscription(This,pwszURL,hwnd) (This)->lpVtbl->DeleteSubscription(This,pwszURL,hwnd) 440 #define ISubscriptionMgr2_UpdateSubscription(This,pwszURL) (This)->lpVtbl->UpdateSubscription(This,pwszURL) 441 #define ISubscriptionMgr2_UpdateAll(This) (This)->lpVtbl->UpdateAll(This) 442 #define ISubscriptionMgr2_IsSubscribed(This,pwszURL,pfSubscribed) (This)->lpVtbl->IsSubscribed(This,pwszURL,pfSubscribed) 443 #define ISubscriptionMgr2_GetSubscriptionInfo(This,pwszURL,pInfo) (This)->lpVtbl->GetSubscriptionInfo(This,pwszURL,pInfo) 444 #define ISubscriptionMgr2_GetDefaultInfo(This,subType,pInfo) (This)->lpVtbl->GetDefaultInfo(This,subType,pInfo) 445 #define ISubscriptionMgr2_ShowSubscriptionProperties(This,pwszURL,hwnd) (This)->lpVtbl->ShowSubscriptionProperties(This,pwszURL,hwnd) 446 #define ISubscriptionMgr2_CreateSubscription(This,hwnd,pwszURL,pwszFriendlyName,dwFlags,subsType,pInfo) (This)->lpVtbl->CreateSubscription(This,hwnd,pwszURL,pwszFriendlyName,dwFlags,subsType,pInfo) 447 #define ISubscriptionMgr2_GetItemFromURL(This,pwszURL,ppSubscriptionItem) (This)->lpVtbl->GetItemFromURL(This,pwszURL,ppSubscriptionItem) 448 #define ISubscriptionMgr2_GetItemFromCookie(This,pSubscriptionCookie,ppSubscriptionItem) (This)->lpVtbl->GetItemFromCookie(This,pSubscriptionCookie,ppSubscriptionItem) 449 #define ISubscriptionMgr2_GetSubscriptionRunState(This,dwNumCookies,pCookies,pdwRunState) (This)->lpVtbl->GetSubscriptionRunState(This,dwNumCookies,pCookies,pdwRunState) 450 #define ISubscriptionMgr2_EnumSubscriptions(This,dwFlags,ppEnumSubscriptions) (This)->lpVtbl->EnumSubscriptions(This,dwFlags,ppEnumSubscriptions) 451 #define ISubscriptionMgr2_UpdateItems(This,dwFlags,dwNumCookies,pCookies) (This)->lpVtbl->UpdateItems(This,dwFlags,dwNumCookies,pCookies) 452 #define ISubscriptionMgr2_AbortItems(This,dwNumCookies,pCookies) (This)->lpVtbl->AbortItems(This,dwNumCookies,pCookies) 453 #define ISubscriptionMgr2_AbortAll(This) (This)->lpVtbl->AbortAll(This) 454 #endif 455 #endif 456 HRESULT WINAPI ISubscriptionMgr2_GetItemFromURL_Proxy(ISubscriptionMgr2 *This,LPCWSTR pwszURL,ISubscriptionItem **ppSubscriptionItem); 457 void __RPC_STUB ISubscriptionMgr2_GetItemFromURL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 458 HRESULT WINAPI ISubscriptionMgr2_GetItemFromCookie_Proxy(ISubscriptionMgr2 *This,const SUBSCRIPTIONCOOKIE *pSubscriptionCookie,ISubscriptionItem **ppSubscriptionItem); 459 void __RPC_STUB ISubscriptionMgr2_GetItemFromCookie_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 460 HRESULT WINAPI ISubscriptionMgr2_GetSubscriptionRunState_Proxy(ISubscriptionMgr2 *This,DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies,DWORD *pdwRunState); 461 void __RPC_STUB ISubscriptionMgr2_GetSubscriptionRunState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 462 HRESULT WINAPI ISubscriptionMgr2_EnumSubscriptions_Proxy(ISubscriptionMgr2 *This,DWORD dwFlags,IEnumSubscription **ppEnumSubscriptions); 463 void __RPC_STUB ISubscriptionMgr2_EnumSubscriptions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 464 HRESULT WINAPI ISubscriptionMgr2_UpdateItems_Proxy(ISubscriptionMgr2 *This,DWORD dwFlags,DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies); 465 void __RPC_STUB ISubscriptionMgr2_UpdateItems_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 466 HRESULT WINAPI ISubscriptionMgr2_AbortItems_Proxy(ISubscriptionMgr2 *This,DWORD dwNumCookies,const SUBSCRIPTIONCOOKIE *pCookies); 467 void __RPC_STUB ISubscriptionMgr2_AbortItems_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 468 HRESULT WINAPI ISubscriptionMgr2_AbortAll_Proxy(ISubscriptionMgr2 *This); 469 void __RPC_STUB ISubscriptionMgr2_AbortAll_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); 470 #endif 471 472 EXTERN_C const CLSID CLSID_SubscriptionMgr; 473 #ifdef __cplusplus 474 class SubscriptionMgr; 475 #endif 476 #endif 477 478 EXTERN_C const CLSID CLSID_WebCrawlerAgent; 479 EXTERN_C const CLSID CLSID_ChannelAgent; 480 EXTERN_C const CLSID CLSID_DialAgent; 481 EXTERN_C const CLSID CLSID_CDLAgent; 482 typedef enum DELIVERY_AGENT_FLAGS { 483 DELIVERY_AGENT_FLAG_NO_BROADCAST = 0x4,DELIVERY_AGENT_FLAG_NO_RESTRICTIONS = 0x8,DELIVERY_AGENT_FLAG_SILENT_DIAL = 0x10 484 } DELIVERY_AGENT_FLAGS; 485 486 typedef enum WEBCRAWL_RECURSEFLAGS { 487 WEBCRAWL_DONT_MAKE_STICKY = 0x1,WEBCRAWL_GET_IMAGES = 0x2,WEBCRAWL_GET_VIDEOS = 0x4,WEBCRAWL_GET_BGSOUNDS = 0x8,WEBCRAWL_GET_CONTROLS = 0x10, 488 WEBCRAWL_LINKS_ELSEWHERE = 0x20,WEBCRAWL_IGNORE_ROBOTSTXT = 0x80,WEBCRAWL_ONLY_LINKS_TO_HTML = 0x100 489 } WEBCRAWL_RECURSEFLAGS; 490 491 typedef enum CHANNEL_AGENT_FLAGS { 492 CHANNEL_AGENT_DYNAMIC_SCHEDULE = 0x1,CHANNEL_AGENT_PRECACHE_SOME = 0x2,CHANNEL_AGENT_PRECACHE_ALL = 0x4,CHANNEL_AGENT_PRECACHE_SCRNSAVER = 0x8 493 } CHANNEL_AGENT_FLAGS; 494 495 #define INET_E_AGENT_MAX_SIZE_EXCEEDED _HRESULT_TYPEDEF_(0x800C0F80) 496 #define INET_S_AGENT_PART_FAIL _HRESULT_TYPEDEF_(0x000C0F81) 497 #define INET_E_AGENT_CACHE_SIZE_EXCEEDED _HRESULT_TYPEDEF_(0x800C0F82) 498 #define INET_E_AGENT_CONNECTION_FAILED _HRESULT_TYPEDEF_(0x800C0F83) 499 #define INET_E_SCHEDULED_UPDATES_DISABLED _HRESULT_TYPEDEF_(0x800C0F84) 500 #define INET_E_SCHEDULED_UPDATES_RESTRICTED _HRESULT_TYPEDEF_(0x800C0F85) 501 #define INET_E_SCHEDULED_UPDATE_INTERVAL _HRESULT_TYPEDEF_(0x800C0F86) 502 #define INET_E_SCHEDULED_EXCLUDE_RANGE _HRESULT_TYPEDEF_(0x800C0F87) 503 #define INET_E_AGENT_EXCEEDING_CACHE_SIZE _HRESULT_TYPEDEF_(0x800C0F90) 504 #define INET_S_AGENT_INCREASED_CACHE_SIZE _HRESULT_TYPEDEF_(0x000C0F90) 505 506 extern RPC_IF_HANDLE __MIDL_itf_subsmgr_0268_v0_0_c_ifspec; 507 extern RPC_IF_HANDLE __MIDL_itf_subsmgr_0268_v0_0_s_ifspec; 508 509 ULONG __RPC_API VARIANT_UserSize(ULONG *,ULONG,VARIANT *); 510 unsigned char *__RPC_API VARIANT_UserMarshal(ULONG *,unsigned char *,VARIANT *); 511 unsigned char *__RPC_API VARIANT_UserUnmarshal(ULONG *,unsigned char *,VARIANT *); 512 void __RPC_API VARIANT_UserFree(ULONG *,VARIANT *); 513 514 #ifdef __cplusplus 515 } 516 #endif 517 #endif 518