diff fuhtark_test/include/winapi/ocmm.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fuhtark_test/include/winapi/ocmm.h	Wed Nov 26 21:36:48 2025 +0700
@@ -0,0 +1,395 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 440
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error This stub requires an updated version of <rpcndr.h>
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif
+
+#ifndef __ocmm_h__
+#define __ocmm_h__
+
+#ifndef __ITimerService_FWD_DEFINED__
+#define __ITimerService_FWD_DEFINED__
+typedef struct ITimerService ITimerService;
+#endif
+
+#ifndef __ITimer_FWD_DEFINED__
+#define __ITimer_FWD_DEFINED__
+typedef struct ITimer ITimer;
+#endif
+
+#ifndef __ITimerSink_FWD_DEFINED__
+#define __ITimerSink_FWD_DEFINED__
+typedef struct ITimerSink ITimerSink;
+#endif
+
+#ifndef __IMapMIMEToCLSID_FWD_DEFINED__
+#define __IMapMIMEToCLSID_FWD_DEFINED__
+typedef struct IMapMIMEToCLSID IMapMIMEToCLSID;
+#endif
+
+#ifndef __IImageDecodeFilter_FWD_DEFINED__
+#define __IImageDecodeFilter_FWD_DEFINED__
+typedef struct IImageDecodeFilter IImageDecodeFilter;
+#endif
+
+#ifndef __IImageDecodeEventSink_FWD_DEFINED__
+#define __IImageDecodeEventSink_FWD_DEFINED__
+typedef struct IImageDecodeEventSink IImageDecodeEventSink;
+#endif
+
+#include "oaidl.h"
+#include "oleidl.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+#ifndef __MIDL_user_allocate_free_DEFINED__
+#define __MIDL_user_allocate_free_DEFINED__
+  void *__RPC_API MIDL_user_allocate(size_t);
+  void __RPC_API MIDL_user_free(void *);
+#endif
+
+#define SURFACE_LOCK_EXCLUSIVE 0x01
+#define SURFACE_LOCK_ALLOW_DISCARD 0x02
+#define SURFACE_LOCK_WAIT 0x04
+
+#define E_SURFACE_NOSURFACE 0x8000C000L
+#define E_SURFACE_UNKNOWN_FORMAT 0x8000C001L
+#define E_SURFACE_NOTMYPOINTER 0x8000C002L
+#define E_SURFACE_DISCARDED 0x8000C003L
+#define E_SURFACE_NODC 0x8000C004L
+#define E_SURFACE_NOTMYDC 0x8000C005L
+#define S_SURFACE_DISCARDED 0x0000C003L
+
+  typedef GUID BFID;
+
+#ifndef RGBQUAD_DEFINED
+#define RGBQUAD_DEFINED
+  typedef struct tagRGBQUAD RGBQUAD;
+#endif
+  EXTERN_C const GUID BFID_MONOCHROME;
+  EXTERN_C const GUID BFID_RGB_4;
+  EXTERN_C const GUID BFID_RGB_8;
+  EXTERN_C const GUID BFID_RGB_555;
+  EXTERN_C const GUID BFID_RGB_565;
+  EXTERN_C const GUID BFID_RGB_24;
+  EXTERN_C const GUID BFID_RGB_32;
+  EXTERN_C const GUID BFID_RGBA_32;
+  EXTERN_C const GUID BFID_GRAY_8;
+  EXTERN_C const GUID BFID_GRAY_16;
+
+#define SID_SDirectDraw3 IID_IDirectDraw3
+
+#define COLOR_NO_TRANSPARENT 0xFFFFFFFF
+
+#define IMGDECODE_EVENT_PROGRESS 0x01
+#define IMGDECODE_EVENT_PALETTE 0x02
+#define IMGDECODE_EVENT_BEGINBITS 0x04
+#define IMGDECODE_EVENT_BITSCOMPLETE 0x08
+#define IMGDECODE_EVENT_USEDDRAW 0x10
+
+#define IMGDECODE_HINT_TOPDOWN 0x01
+#define IMGDECODE_HINT_BOTTOMUP 0x02
+#define IMGDECODE_HINT_FULLWIDTH 0x04
+
+#define MAPMIME_DEFAULT 0
+#define MAPMIME_CLSID 1
+#define MAPMIME_DISABLE 2
+#define MAPMIME_DEFAULT_ALWAYS 3
+
+#define BFID_INDEXED_RGB_8 BFID_RGB_8
+#define BFID_INDEXED_RGB_4 BFID_RGB_4
+#define BFID_INDEXED_RGB_1 BFID_MONOCHROME
+
+  EXTERN_C const GUID CLSID_IImageDecodeFilter;
+  EXTERN_C const GUID NAMEDTIMER_DRAW;
+
+  extern RPC_IF_HANDLE __MIDL_itf_ocmm_0000_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_ocmm_0000_v0_0_s_ifspec;
+
+#ifndef __ITimerService_INTERFACE_DEFINED__
+#define __ITimerService_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_ITimerService;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct ITimerService : public IUnknown {
+  public:
+    virtual HRESULT WINAPI CreateTimer(ITimer *pReferenceTimer,ITimer **ppNewTimer) = 0;
+    virtual HRESULT WINAPI GetNamedTimer(REFGUID rguidName,ITimer **ppTimer) = 0;
+    virtual HRESULT WINAPI SetNamedTimerReference(REFGUID rguidName,ITimer *pReferenceTimer) = 0;
+  };
+#else
+  typedef struct ITimerServiceVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(ITimerService *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(ITimerService *This);
+      ULONG (WINAPI *Release)(ITimerService *This);
+      HRESULT (WINAPI *CreateTimer)(ITimerService *This,ITimer *pReferenceTimer,ITimer **ppNewTimer);
+      HRESULT (WINAPI *GetNamedTimer)(ITimerService *This,REFGUID rguidName,ITimer **ppTimer);
+      HRESULT (WINAPI *SetNamedTimerReference)(ITimerService *This,REFGUID rguidName,ITimer *pReferenceTimer);
+    END_INTERFACE
+  } ITimerServiceVtbl;
+  struct ITimerService {
+    CONST_VTBL struct ITimerServiceVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define ITimerService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITimerService_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITimerService_Release(This) (This)->lpVtbl->Release(This)
+#define ITimerService_CreateTimer(This,pReferenceTimer,ppNewTimer) (This)->lpVtbl->CreateTimer(This,pReferenceTimer,ppNewTimer)
+#define ITimerService_GetNamedTimer(This,rguidName,ppTimer) (This)->lpVtbl->GetNamedTimer(This,rguidName,ppTimer)
+#define ITimerService_SetNamedTimerReference(This,rguidName,pReferenceTimer) (This)->lpVtbl->SetNamedTimerReference(This,rguidName,pReferenceTimer)
+#endif
+#endif
+  HRESULT WINAPI ITimerService_CreateTimer_Proxy(ITimerService *This,ITimer *pReferenceTimer,ITimer **ppNewTimer);
+  void __RPC_STUB ITimerService_CreateTimer_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ITimerService_GetNamedTimer_Proxy(ITimerService *This,REFGUID rguidName,ITimer **ppTimer);
+  void __RPC_STUB ITimerService_GetNamedTimer_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ITimerService_SetNamedTimerReference_Proxy(ITimerService *This,REFGUID rguidName,ITimer *pReferenceTimer);
+  void __RPC_STUB ITimerService_SetNamedTimerReference_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __ITimer_INTERFACE_DEFINED__
+#define __ITimer_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_ITimer;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct ITimer : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Advise(VARIANT vtimeMin,VARIANT vtimeMax,VARIANT vtimeInterval,DWORD dwFlags,ITimerSink *pTimerSink,DWORD *pdwCookie) = 0;
+    virtual HRESULT WINAPI Unadvise(DWORD dwCookie) = 0;
+    virtual HRESULT WINAPI Freeze(WINBOOL fFreeze) = 0;
+    virtual HRESULT WINAPI GetTime(VARIANT *pvtime) = 0;
+  };
+#else
+  typedef struct ITimerVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(ITimer *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(ITimer *This);
+      ULONG (WINAPI *Release)(ITimer *This);
+      HRESULT (WINAPI *Advise)(ITimer *This,VARIANT vtimeMin,VARIANT vtimeMax,VARIANT vtimeInterval,DWORD dwFlags,ITimerSink *pTimerSink,DWORD *pdwCookie);
+      HRESULT (WINAPI *Unadvise)(ITimer *This,DWORD dwCookie);
+      HRESULT (WINAPI *Freeze)(ITimer *This,WINBOOL fFreeze);
+      HRESULT (WINAPI *GetTime)(ITimer *This,VARIANT *pvtime);
+    END_INTERFACE
+  } ITimerVtbl;
+  struct ITimer {
+    CONST_VTBL struct ITimerVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define ITimer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITimer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITimer_Release(This) (This)->lpVtbl->Release(This)
+#define ITimer_Advise(This,vtimeMin,vtimeMax,vtimeInterval,dwFlags,pTimerSink,pdwCookie) (This)->lpVtbl->Advise(This,vtimeMin,vtimeMax,vtimeInterval,dwFlags,pTimerSink,pdwCookie)
+#define ITimer_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)
+#define ITimer_Freeze(This,fFreeze) (This)->lpVtbl->Freeze(This,fFreeze)
+#define ITimer_GetTime(This,pvtime) (This)->lpVtbl->GetTime(This,pvtime)
+#endif
+#endif
+  HRESULT WINAPI ITimer_Advise_Proxy(ITimer *This,VARIANT vtimeMin,VARIANT vtimeMax,VARIANT vtimeInterval,DWORD dwFlags,ITimerSink *pTimerSink,DWORD *pdwCookie);
+  void __RPC_STUB ITimer_Advise_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ITimer_Unadvise_Proxy(ITimer *This,DWORD dwCookie);
+  void __RPC_STUB ITimer_Unadvise_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ITimer_Freeze_Proxy(ITimer *This,WINBOOL fFreeze);
+  void __RPC_STUB ITimer_Freeze_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ITimer_GetTime_Proxy(ITimer *This,VARIANT *pvtime);
+  void __RPC_STUB ITimer_GetTime_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __ITimerSink_INTERFACE_DEFINED__
+#define __ITimerSink_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_ITimerSink;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct ITimerSink : public IUnknown {
+  public:
+    virtual HRESULT WINAPI OnTimer(VARIANT vtimeAdvise) = 0;
+  };
+#else
+  typedef struct ITimerSinkVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(ITimerSink *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(ITimerSink *This);
+      ULONG (WINAPI *Release)(ITimerSink *This);
+      HRESULT (WINAPI *OnTimer)(ITimerSink *This,VARIANT vtimeAdvise);
+    END_INTERFACE
+  } ITimerSinkVtbl;
+  struct ITimerSink {
+    CONST_VTBL struct ITimerSinkVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define ITimerSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITimerSink_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITimerSink_Release(This) (This)->lpVtbl->Release(This)
+#define ITimerSink_OnTimer(This,vtimeAdvise) (This)->lpVtbl->OnTimer(This,vtimeAdvise)
+#endif
+#endif
+  HRESULT WINAPI ITimerSink_OnTimer_Proxy(ITimerSink *This,VARIANT vtimeAdvise);
+  void __RPC_STUB ITimerSink_OnTimer_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#define SID_STimerService IID_ITimerService
+
+  extern RPC_IF_HANDLE __MIDL_itf_ocmm_0142_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_ocmm_0142_v0_0_s_ifspec;
+
+#ifndef __IMapMIMEToCLSID_INTERFACE_DEFINED__
+#define __IMapMIMEToCLSID_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IMapMIMEToCLSID;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IMapMIMEToCLSID : public IUnknown {
+  public:
+    virtual HRESULT WINAPI EnableDefaultMappings(WINBOOL bEnable) = 0;
+    virtual HRESULT WINAPI MapMIMEToCLSID(LPCOLESTR pszMIMEType,CLSID *pCLSID) = 0;
+    virtual HRESULT WINAPI SetMapping(LPCOLESTR pszMIMEType,DWORD dwMapMode,REFCLSID clsid) = 0;
+  };
+#else
+  typedef struct IMapMIMEToCLSIDVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IMapMIMEToCLSID *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IMapMIMEToCLSID *This);
+      ULONG (WINAPI *Release)(IMapMIMEToCLSID *This);
+      HRESULT (WINAPI *EnableDefaultMappings)(IMapMIMEToCLSID *This,WINBOOL bEnable);
+      HRESULT (WINAPI *MapMIMEToCLSID)(IMapMIMEToCLSID *This,LPCOLESTR pszMIMEType,CLSID *pCLSID);
+      HRESULT (WINAPI *SetMapping)(IMapMIMEToCLSID *This,LPCOLESTR pszMIMEType,DWORD dwMapMode,REFCLSID clsid);
+    END_INTERFACE
+  } IMapMIMEToCLSIDVtbl;
+  struct IMapMIMEToCLSID {
+    CONST_VTBL struct IMapMIMEToCLSIDVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IMapMIMEToCLSID_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMapMIMEToCLSID_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMapMIMEToCLSID_Release(This) (This)->lpVtbl->Release(This)
+#define IMapMIMEToCLSID_EnableDefaultMappings(This,bEnable) (This)->lpVtbl->EnableDefaultMappings(This,bEnable)
+#define IMapMIMEToCLSID_MapMIMEToCLSID(This,pszMIMEType,pCLSID) (This)->lpVtbl->MapMIMEToCLSID(This,pszMIMEType,pCLSID)
+#define IMapMIMEToCLSID_SetMapping(This,pszMIMEType,dwMapMode,clsid) (This)->lpVtbl->SetMapping(This,pszMIMEType,dwMapMode,clsid)
+#endif
+#endif
+  HRESULT WINAPI IMapMIMEToCLSID_EnableDefaultMappings_Proxy(IMapMIMEToCLSID *This,WINBOOL bEnable);
+  void __RPC_STUB IMapMIMEToCLSID_EnableDefaultMappings_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IMapMIMEToCLSID_MapMIMEToCLSID_Proxy(IMapMIMEToCLSID *This,LPCOLESTR pszMIMEType,CLSID *pCLSID);
+  void __RPC_STUB IMapMIMEToCLSID_MapMIMEToCLSID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IMapMIMEToCLSID_SetMapping_Proxy(IMapMIMEToCLSID *This,LPCOLESTR pszMIMEType,DWORD dwMapMode,REFCLSID clsid);
+  void __RPC_STUB IMapMIMEToCLSID_SetMapping_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IImageDecodeFilter_INTERFACE_DEFINED__
+#define __IImageDecodeFilter_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IImageDecodeFilter;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IImageDecodeFilter : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Initialize(IImageDecodeEventSink *pEventSink) = 0;
+    virtual HRESULT WINAPI Process(IStream *pStream) = 0;
+    virtual HRESULT WINAPI Terminate(HRESULT hrStatus) = 0;
+  };
+#else
+  typedef struct IImageDecodeFilterVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IImageDecodeFilter *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IImageDecodeFilter *This);
+      ULONG (WINAPI *Release)(IImageDecodeFilter *This);
+      HRESULT (WINAPI *Initialize)(IImageDecodeFilter *This,IImageDecodeEventSink *pEventSink);
+      HRESULT (WINAPI *Process)(IImageDecodeFilter *This,IStream *pStream);
+      HRESULT (WINAPI *Terminate)(IImageDecodeFilter *This,HRESULT hrStatus);
+    END_INTERFACE
+  } IImageDecodeFilterVtbl;
+  struct IImageDecodeFilter {
+    CONST_VTBL struct IImageDecodeFilterVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IImageDecodeFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IImageDecodeFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IImageDecodeFilter_Release(This) (This)->lpVtbl->Release(This)
+#define IImageDecodeFilter_Initialize(This,pEventSink) (This)->lpVtbl->Initialize(This,pEventSink)
+#define IImageDecodeFilter_Process(This,pStream) (This)->lpVtbl->Process(This,pStream)
+#define IImageDecodeFilter_Terminate(This,hrStatus) (This)->lpVtbl->Terminate(This,hrStatus)
+#endif
+#endif
+  HRESULT WINAPI IImageDecodeFilter_Initialize_Proxy(IImageDecodeFilter *This,IImageDecodeEventSink *pEventSink);
+  void __RPC_STUB IImageDecodeFilter_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IImageDecodeFilter_Process_Proxy(IImageDecodeFilter *This,IStream *pStream);
+  void __RPC_STUB IImageDecodeFilter_Process_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IImageDecodeFilter_Terminate_Proxy(IImageDecodeFilter *This,HRESULT hrStatus);
+  void __RPC_STUB IImageDecodeFilter_Terminate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IImageDecodeEventSink_INTERFACE_DEFINED__
+#define __IImageDecodeEventSink_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IImageDecodeEventSink;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IImageDecodeEventSink : public IUnknown {
+  public:
+    virtual HRESULT WINAPI GetSurface(LONG nWidth,LONG nHeight,REFGUID bfid,ULONG nPasses,DWORD dwHints,IUnknown **ppSurface) = 0;
+    virtual HRESULT WINAPI OnBeginDecode(DWORD *pdwEvents,ULONG *pnFormats,BFID **ppFormats) = 0;
+    virtual HRESULT WINAPI OnBitsComplete(void) = 0;
+    virtual HRESULT WINAPI OnDecodeComplete(HRESULT hrStatus) = 0;
+    virtual HRESULT WINAPI OnPalette(void) = 0;
+    virtual HRESULT WINAPI OnProgress(RECT *pBounds,WINBOOL bComplete) = 0;
+  };
+#else
+  typedef struct IImageDecodeEventSinkVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IImageDecodeEventSink *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IImageDecodeEventSink *This);
+      ULONG (WINAPI *Release)(IImageDecodeEventSink *This);
+      HRESULT (WINAPI *GetSurface)(IImageDecodeEventSink *This,LONG nWidth,LONG nHeight,REFGUID bfid,ULONG nPasses,DWORD dwHints,IUnknown **ppSurface);
+      HRESULT (WINAPI *OnBeginDecode)(IImageDecodeEventSink *This,DWORD *pdwEvents,ULONG *pnFormats,BFID **ppFormats);
+      HRESULT (WINAPI *OnBitsComplete)(IImageDecodeEventSink *This);
+      HRESULT (WINAPI *OnDecodeComplete)(IImageDecodeEventSink *This,HRESULT hrStatus);
+      HRESULT (WINAPI *OnPalette)(IImageDecodeEventSink *This);
+      HRESULT (WINAPI *OnProgress)(IImageDecodeEventSink *This,RECT *pBounds,WINBOOL bComplete);
+    END_INTERFACE
+  } IImageDecodeEventSinkVtbl;
+  struct IImageDecodeEventSink {
+    CONST_VTBL struct IImageDecodeEventSinkVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IImageDecodeEventSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IImageDecodeEventSink_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IImageDecodeEventSink_Release(This) (This)->lpVtbl->Release(This)
+#define IImageDecodeEventSink_GetSurface(This,nWidth,nHeight,bfid,nPasses,dwHints,ppSurface) (This)->lpVtbl->GetSurface(This,nWidth,nHeight,bfid,nPasses,dwHints,ppSurface)
+#define IImageDecodeEventSink_OnBeginDecode(This,pdwEvents,pnFormats,ppFormats) (This)->lpVtbl->OnBeginDecode(This,pdwEvents,pnFormats,ppFormats)
+#define IImageDecodeEventSink_OnBitsComplete(This) (This)->lpVtbl->OnBitsComplete(This)
+#define IImageDecodeEventSink_OnDecodeComplete(This,hrStatus) (This)->lpVtbl->OnDecodeComplete(This,hrStatus)
+#define IImageDecodeEventSink_OnPalette(This) (This)->lpVtbl->OnPalette(This)
+#define IImageDecodeEventSink_OnProgress(This,pBounds,bComplete) (This)->lpVtbl->OnProgress(This,pBounds,bComplete)
+#endif
+#endif
+  HRESULT WINAPI IImageDecodeEventSink_GetSurface_Proxy(IImageDecodeEventSink *This,LONG nWidth,LONG nHeight,REFGUID bfid,ULONG nPasses,DWORD dwHints,IUnknown **ppSurface);
+  void __RPC_STUB IImageDecodeEventSink_GetSurface_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IImageDecodeEventSink_OnBeginDecode_Proxy(IImageDecodeEventSink *This,DWORD *pdwEvents,ULONG *pnFormats,BFID **ppFormats);
+  void __RPC_STUB IImageDecodeEventSink_OnBeginDecode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IImageDecodeEventSink_OnBitsComplete_Proxy(IImageDecodeEventSink *This);
+  void __RPC_STUB IImageDecodeEventSink_OnBitsComplete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IImageDecodeEventSink_OnDecodeComplete_Proxy(IImageDecodeEventSink *This,HRESULT hrStatus);
+  void __RPC_STUB IImageDecodeEventSink_OnDecodeComplete_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IImageDecodeEventSink_OnPalette_Proxy(IImageDecodeEventSink *This);
+  void __RPC_STUB IImageDecodeEventSink_OnPalette_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IImageDecodeEventSink_OnProgress_Proxy(IImageDecodeEventSink *This,RECT *pBounds,WINBOOL bComplete);
+  void __RPC_STUB IImageDecodeEventSink_OnProgress_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  unsigned long __RPC_API VARIANT_UserSize(unsigned long *,unsigned long,VARIANT *);
+  unsigned char *__RPC_API VARIANT_UserMarshal(unsigned long *,unsigned char *,VARIANT *);
+  unsigned char *__RPC_API VARIANT_UserUnmarshal(unsigned long *,unsigned char *,VARIANT *);
+  void __RPC_API VARIANT_UserFree(unsigned long *,VARIANT *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif