diff fuhtark_test/include/winapi/objbase.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/objbase.h	Wed Nov 26 21:36:48 2025 +0700
@@ -0,0 +1,333 @@
+/**
+ * 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.
+ */
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef _OBJBASE_H_
+#define _OBJBASE_H_
+
+#include <pshpack8.h>
+
+#define WINOLEAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI
+#define WINOLEAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+#ifndef __OBJC__
+#define interface struct
+#endif
+
+#define __STRUCT__ struct
+#define STDMETHOD(method) virtual HRESULT WINAPI method
+#define STDMETHOD_(type,method) virtual type WINAPI method
+#define STDMETHODV(method) virtual HRESULT STDMETHODVCALLTYPE method
+#define STDMETHODV_(type,method) virtual type STDMETHODVCALLTYPE method
+#define PURE = 0
+#define THIS_
+#define THIS void
+#define DECLARE_INTERFACE(iface) __STRUCT__ iface
+#define DECLARE_INTERFACE_(iface,baseiface) __STRUCT__ iface : public baseiface
+
+#if !defined(BEGIN_INTERFACE)
+#define BEGIN_INTERFACE
+#define END_INTERFACE
+#endif
+#else
+
+#ifndef __OBJC__
+#define interface struct
+#endif
+
+#define STDMETHOD(method) HRESULT (WINAPI *method)
+#define STDMETHOD_(type,method) type (WINAPI *method)
+#define STDMETHODV(method) HRESULT (STDMETHODVCALLTYPE *method)
+#define STDMETHODV_(type,method) type (STDMETHODVCALLTYPE *method)
+
+#if !defined(BEGIN_INTERFACE)
+#define BEGIN_INTERFACE
+#define END_INTERFACE
+#endif
+
+#define PURE
+#define THIS_ INTERFACE *This,
+#define THIS INTERFACE *This
+#ifdef CONST_VTABLE
+#undef CONST_VTBL
+#define CONST_VTBL const
+#define DECLARE_INTERFACE(iface) typedef struct iface { const struct iface##Vtbl *lpVtbl; } iface; typedef const struct iface##Vtbl iface##Vtbl; const struct iface##Vtbl
+#else
+#undef CONST_VTBL
+#define CONST_VTBL
+#define DECLARE_INTERFACE(iface) typedef struct iface { struct iface##Vtbl *lpVtbl; } iface; typedef struct iface##Vtbl iface##Vtbl; struct iface##Vtbl
+#endif
+#define DECLARE_INTERFACE_(iface,baseiface) DECLARE_INTERFACE(iface)
+#endif
+
+#ifndef FARSTRUCT
+#define FARSTRUCT
+#endif
+
+#ifndef HUGEP
+#define HUGEP
+#endif
+
+#include <stdlib.h>
+
+#define LISet32(li,v) ((li).HighPart = ((LONG) (v)) < 0 ? -1 : 0,(li).LowPart = (v))
+#define ULISet32(li,v) ((li).HighPart = 0,(li).LowPart = (v))
+#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER)
+
+#define CLSCTX_ALL (CLSCTX_INPROC_SERVER| CLSCTX_INPROC_HANDLER| CLSCTX_LOCAL_SERVER| CLSCTX_REMOTE_SERVER)
+#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER)
+
+typedef enum tagREGCLS {
+  REGCLS_SINGLEUSE = 0,REGCLS_MULTIPLEUSE = 1,REGCLS_MULTI_SEPARATE = 2,REGCLS_SUSPENDED = 4,REGCLS_SURROGATE = 8
+} REGCLS;
+
+#define MARSHALINTERFACE_MIN 500
+
+#define CWCSTORAGENAME 32
+
+#define STGM_DIRECT 0x00000000L
+#define STGM_TRANSACTED 0x00010000L
+#define STGM_SIMPLE 0x08000000L
+
+#define STGM_READ 0x00000000L
+#define STGM_WRITE 0x00000001L
+#define STGM_READWRITE 0x00000002L
+
+#define STGM_SHARE_DENY_NONE 0x00000040L
+#define STGM_SHARE_DENY_READ 0x00000030L
+#define STGM_SHARE_DENY_WRITE 0x00000020L
+#define STGM_SHARE_EXCLUSIVE 0x00000010L
+
+#define STGM_PRIORITY 0x00040000L
+#define STGM_DELETEONRELEASE 0x04000000L
+#define STGM_NOSCRATCH 0x00100000L
+#define STGM_CREATE 0x00001000L
+#define STGM_CONVERT 0x00020000L
+#define STGM_FAILIFTHERE 0x00000000L
+#define STGM_NOSNAPSHOT 0x00200000L
+#define STGM_DIRECT_SWMR 0x00400000L
+
+#define ASYNC_MODE_COMPATIBILITY 0x00000001L
+#define ASYNC_MODE_DEFAULT 0x00000000L
+
+#define STGTY_REPEAT 0x00000100L
+#define STG_TOEND 0xFFFFFFFFL
+
+#define STG_LAYOUT_SEQUENTIAL 0x00000000L
+#define STG_LAYOUT_INTERLEAVED 0x00000001L
+
+#define STGFMT_STORAGE 0
+#define STGFMT_NATIVE 1
+#define STGFMT_FILE 3
+#define STGFMT_ANY 4
+#define STGFMT_DOCFILE 5
+
+#define STGFMT_DOCUMENT 0
+
+#ifndef __IRpcStubBuffer_FWD_DEFINED__
+#define __IRpcStubBuffer_FWD_DEFINED__
+typedef struct IRpcStubBuffer IRpcStubBuffer;
+#endif
+#ifndef __IRpcChannelBuffer_FWD_DEFINED__
+#define __IRpcChannelBuffer_FWD_DEFINED__
+typedef struct IRpcChannelBuffer IRpcChannelBuffer;
+#endif
+
+#include <wtypes.h>
+#include <unknwn.h>
+#include <objidl.h>
+
+#include <guiddef.h>
+
+#ifndef INITGUID
+#include <cguid.h>
+#endif
+
+typedef enum tagCOINIT {
+  COINIT_APARTMENTTHREADED = 0x2,COINIT_MULTITHREADED = 0x0,COINIT_DISABLE_OLE1DDE = 0x4,COINIT_SPEED_OVER_MEMORY = 0x8
+} COINIT;
+
+WINOLEAPI_(DWORD) CoBuildVersion(VOID);
+WINOLEAPI CoInitialize(LPVOID pvReserved);
+WINOLEAPI_(void) CoUninitialize(void);
+WINOLEAPI CoGetMalloc(DWORD dwMemContext,LPMALLOC *ppMalloc);
+WINOLEAPI_(DWORD) CoGetCurrentProcess(void);
+WINOLEAPI CoRegisterMallocSpy(LPMALLOCSPY pMallocSpy);
+WINOLEAPI CoRevokeMallocSpy(void);
+WINOLEAPI CoCreateStandardMalloc(DWORD memctx,IMalloc **ppMalloc);
+WINOLEAPI CoInitializeEx(LPVOID pvReserved,DWORD dwCoInit);
+WINOLEAPI CoGetCallerTID(LPDWORD lpdwTID);
+WINOLEAPI CoRegisterInitializeSpy(LPINITIALIZESPY pSpy,ULARGE_INTEGER *puliCookie);
+WINOLEAPI CoRevokeInitializeSpy(ULARGE_INTEGER uliCookie);
+WINOLEAPI CoGetContextToken(ULONG_PTR *pToken);
+
+typedef enum tagCOMSD {
+  SD_LAUNCHPERMISSIONS = 0,SD_ACCESSPERMISSIONS = 1,SD_LAUNCHRESTRICTIONS = 2,SD_ACCESSRESTRICTIONS = 3
+} COMSD;
+
+WINOLEAPI CoGetSystemSecurityPermissions(COMSD comSDType,PSECURITY_DESCRIPTOR *ppSD);
+
+typedef struct tagSOleTlsDataPublic {
+  void *pvReserved0[2];
+  DWORD dwReserved0[3];
+  void *pvReserved1[1];
+  DWORD dwReserved1[3];
+  void *pvReserved2[4];
+  DWORD dwReserved2[1];
+  void *pCurrentCtx;
+} SOleTlsDataPublic;
+
+WINOLEAPI CoGetObjectContext(REFIID riid,LPVOID *ppv);
+WINOLEAPI CoGetClassObject(REFCLSID rclsid,DWORD dwClsContext,LPVOID pvReserved,REFIID riid,LPVOID *ppv);
+WINOLEAPI CoRegisterClassObject(REFCLSID rclsid,LPUNKNOWN pUnk,DWORD dwClsContext,DWORD flags,LPDWORD lpdwRegister);
+WINOLEAPI CoRevokeClassObject(DWORD dwRegister);
+WINOLEAPI CoResumeClassObjects(void);
+WINOLEAPI CoSuspendClassObjects(void);
+WINOLEAPI_(ULONG) CoAddRefServerProcess(void);
+WINOLEAPI_(ULONG) CoReleaseServerProcess(void);
+WINOLEAPI CoGetPSClsid(REFIID riid,CLSID *pClsid);
+WINOLEAPI CoRegisterPSClsid(REFIID riid,REFCLSID rclsid);
+WINOLEAPI CoRegisterSurrogate(LPSURROGATE pSurrogate);
+WINOLEAPI CoGetMarshalSizeMax(ULONG *pulSize,REFIID riid,LPUNKNOWN pUnk,DWORD dwDestContext,LPVOID pvDestContext,DWORD mshlflags);
+WINOLEAPI CoMarshalInterface(LPSTREAM pStm,REFIID riid,LPUNKNOWN pUnk,DWORD dwDestContext,LPVOID pvDestContext,DWORD mshlflags);
+WINOLEAPI CoUnmarshalInterface(LPSTREAM pStm,REFIID riid,LPVOID *ppv);
+WINOLEAPI CoMarshalHresult(LPSTREAM pstm,HRESULT hresult);
+WINOLEAPI CoUnmarshalHresult(LPSTREAM pstm,HRESULT *phresult);
+WINOLEAPI CoReleaseMarshalData(LPSTREAM pStm);
+WINOLEAPI CoDisconnectObject(LPUNKNOWN pUnk,DWORD dwReserved);
+WINOLEAPI CoLockObjectExternal(LPUNKNOWN pUnk,WINBOOL fLock,WINBOOL fLastUnlockReleases);
+WINOLEAPI CoGetStandardMarshal(REFIID riid,LPUNKNOWN pUnk,DWORD dwDestContext,LPVOID pvDestContext,DWORD mshlflags,LPMARSHAL *ppMarshal);
+WINOLEAPI CoGetStdMarshalEx(LPUNKNOWN pUnkOuter,DWORD smexflags,LPUNKNOWN *ppUnkInner);
+
+typedef enum tagSTDMSHLFLAGS {
+  SMEXF_SERVER = 0x01,SMEXF_HANDLER = 0x02
+} STDMSHLFLAGS;
+
+WINOLEAPI_(WINBOOL) CoIsHandlerConnected(LPUNKNOWN pUnk);
+WINOLEAPI CoMarshalInterThreadInterfaceInStream(REFIID riid,LPUNKNOWN pUnk,LPSTREAM *ppStm);
+WINOLEAPI CoGetInterfaceAndReleaseStream(LPSTREAM pStm,REFIID iid,LPVOID *ppv);
+WINOLEAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN punkOuter,LPUNKNOWN *ppunkMarshal);
+WINOLEAPI_(HINSTANCE) CoLoadLibrary(LPOLESTR lpszLibName,WINBOOL bAutoFree);
+WINOLEAPI_(void) CoFreeLibrary(HINSTANCE hInst);
+WINOLEAPI_(void) CoFreeAllLibraries(void);
+WINOLEAPI_(void) CoFreeUnusedLibraries(void);
+WINOLEAPI_(void) CoFreeUnusedLibrariesEx(DWORD dwUnloadDelay,DWORD dwReserved);
+WINOLEAPI CoInitializeSecurity(PSECURITY_DESCRIPTOR pSecDesc,LONG cAuthSvc,SOLE_AUTHENTICATION_SERVICE *asAuthSvc,void *pReserved1,DWORD dwAuthnLevel,DWORD dwImpLevel,void *pAuthList,DWORD dwCapabilities,void *pReserved3);
+WINOLEAPI CoGetCallContext(REFIID riid,void **ppInterface);
+WINOLEAPI CoQueryProxyBlanket(IUnknown *pProxy,DWORD *pwAuthnSvc,DWORD *pAuthzSvc,OLECHAR **pServerPrincName,DWORD *pAuthnLevel,DWORD *pImpLevel,RPC_AUTH_IDENTITY_HANDLE *pAuthInfo,DWORD *pCapabilites);
+WINOLEAPI CoSetProxyBlanket(IUnknown *pProxy,DWORD dwAuthnSvc,DWORD dwAuthzSvc,OLECHAR *pServerPrincName,DWORD dwAuthnLevel,DWORD dwImpLevel,RPC_AUTH_IDENTITY_HANDLE pAuthInfo,DWORD dwCapabilities);
+WINOLEAPI CoCopyProxy(IUnknown *pProxy,IUnknown **ppCopy);
+WINOLEAPI CoQueryClientBlanket(DWORD *pAuthnSvc,DWORD *pAuthzSvc,OLECHAR **pServerPrincName,DWORD *pAuthnLevel,DWORD *pImpLevel,RPC_AUTHZ_HANDLE *pPrivs,DWORD *pCapabilities);
+WINOLEAPI CoImpersonateClient();
+WINOLEAPI CoRevertToSelf();
+WINOLEAPI CoQueryAuthenticationServices(DWORD *pcAuthSvc,SOLE_AUTHENTICATION_SERVICE **asAuthSvc);
+WINOLEAPI CoSwitchCallContext(IUnknown *pNewObject,IUnknown **ppOldObject);
+
+#define COM_RIGHTS_EXECUTE 1
+#define COM_RIGHTS_EXECUTE_LOCAL 2
+#define COM_RIGHTS_EXECUTE_REMOTE 4
+#define COM_RIGHTS_ACTIVATE_LOCAL 8
+#define COM_RIGHTS_ACTIVATE_REMOTE 16
+
+WINOLEAPI CoCreateInstance(REFCLSID rclsid,LPUNKNOWN pUnkOuter,DWORD dwClsContext,REFIID riid,LPVOID *ppv);
+WINOLEAPI CoGetInstanceFromFile(COSERVERINFO *pServerInfo,CLSID *pClsid,IUnknown *punkOuter,DWORD dwClsCtx,DWORD grfMode,OLECHAR *pwszName,DWORD dwCount,MULTI_QI *pResults);
+WINOLEAPI CoGetInstanceFromIStorage(COSERVERINFO *pServerInfo,CLSID *pClsid,IUnknown *punkOuter,DWORD dwClsCtx,struct IStorage *pstg,DWORD dwCount,MULTI_QI *pResults);
+WINOLEAPI CoCreateInstanceEx(REFCLSID Clsid,IUnknown *punkOuter,DWORD dwClsCtx,COSERVERINFO *pServerInfo,DWORD dwCount,MULTI_QI *pResults);
+WINOLEAPI CoGetCancelObject(DWORD dwThreadId,REFIID iid,void **ppUnk);
+WINOLEAPI CoSetCancelObject(IUnknown *pUnk);
+WINOLEAPI CoCancelCall(DWORD dwThreadId,ULONG ulTimeout);
+WINOLEAPI CoTestCancel();
+WINOLEAPI CoEnableCallCancellation(LPVOID pReserved);
+WINOLEAPI CoDisableCallCancellation(LPVOID pReserved);
+WINOLEAPI CoAllowSetForegroundWindow(IUnknown *pUnk,LPVOID lpvReserved);
+WINOLEAPI DcomChannelSetHResult(LPVOID pvReserved,ULONG *pulReserved,HRESULT appsHR);
+WINOLEAPI StringFromCLSID(REFCLSID rclsid,LPOLESTR *lplpsz);
+WINOLEAPI CLSIDFromString(LPOLESTR lpsz,LPCLSID pclsid);
+WINOLEAPI StringFromIID(REFIID rclsid,LPOLESTR *lplpsz);
+WINOLEAPI IIDFromString(LPOLESTR lpsz,LPIID lpiid);
+WINOLEAPI_(WINBOOL) CoIsOle1Class(REFCLSID rclsid);
+WINOLEAPI ProgIDFromCLSID (REFCLSID clsid,LPOLESTR *lplpszProgID);
+WINOLEAPI CLSIDFromProgID (LPCOLESTR lpszProgID,LPCLSID lpclsid);
+WINOLEAPI CLSIDFromProgIDEx (LPCOLESTR lpszProgID,LPCLSID lpclsid);
+WINOLEAPI_(int) StringFromGUID2(REFGUID rguid,LPOLESTR lpsz,int cchMax);
+WINOLEAPI CoCreateGuid(GUID *pguid);
+WINOLEAPI_(WINBOOL) CoFileTimeToDosDateTime(FILETIME *lpFileTime,LPWORD lpDosDate,LPWORD lpDosTime);
+WINOLEAPI_(WINBOOL) CoDosDateTimeToFileTime(WORD nDosDate,WORD nDosTime,FILETIME *lpFileTime);
+WINOLEAPI CoFileTimeNow(FILETIME *lpFileTime);
+WINOLEAPI CoRegisterMessageFilter(LPMESSAGEFILTER lpMessageFilter,LPMESSAGEFILTER *lplpMessageFilter);
+WINOLEAPI CoRegisterChannelHook(REFGUID ExtensionUuid,IChannelHook *pChannelHook);
+WINOLEAPI CoWaitForMultipleHandles (DWORD dwFlags,DWORD dwTimeout,ULONG cHandles,LPHANDLE pHandles,LPDWORD lpdwindex);
+
+typedef enum tagCOWAIT_FLAGS {
+  COWAIT_WAITALL = 1,COWAIT_ALERTABLE = 2,COWAIT_INPUTAVAILABLE = 4
+} COWAIT_FLAGS;
+
+WINOLEAPI CoInvalidateRemoteMachineBindings(LPOLESTR pszMachineName);
+WINOLEAPI CoGetTreatAsClass(REFCLSID clsidOld,LPCLSID pClsidNew);
+WINOLEAPI CoTreatAsClass(REFCLSID clsidOld,REFCLSID clsidNew);
+
+typedef HRESULT (WINAPI *LPFNGETCLASSOBJECT)(REFCLSID,REFIID,LPVOID *);
+typedef HRESULT (WINAPI *LPFNCANUNLOADNOW)(void);
+
+STDAPI DllGetClassObject(REFCLSID rclsid,REFIID riid,LPVOID *ppv);
+STDAPI DllCanUnloadNow(void);
+WINOLEAPI_(LPVOID) CoTaskMemAlloc(SIZE_T cb);
+WINOLEAPI_(LPVOID) CoTaskMemRealloc(LPVOID pv,SIZE_T cb);
+WINOLEAPI_(void) CoTaskMemFree(LPVOID pv);
+WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER *ppDAHolder);
+WINOLEAPI CreateDataCache(LPUNKNOWN pUnkOuter,REFCLSID rclsid,REFIID iid,LPVOID *ppv);
+WINOLEAPI StgCreateDocfile(const OLECHAR *pwcsName,DWORD grfMode,DWORD reserved,IStorage **ppstgOpen);
+WINOLEAPI StgCreateDocfileOnILockBytes(ILockBytes *plkbyt,DWORD grfMode,DWORD reserved,IStorage **ppstgOpen);
+WINOLEAPI StgOpenStorage(const OLECHAR *pwcsName,IStorage *pstgPriority,DWORD grfMode,SNB snbExclude,DWORD reserved,IStorage **ppstgOpen);
+WINOLEAPI StgOpenStorageOnILockBytes(ILockBytes *plkbyt,IStorage *pstgPriority,DWORD grfMode,SNB snbExclude,DWORD reserved,IStorage **ppstgOpen);
+WINOLEAPI StgIsStorageFile(const OLECHAR *pwcsName);
+WINOLEAPI StgIsStorageILockBytes(ILockBytes *plkbyt);
+WINOLEAPI StgSetTimes(OLECHAR const *lpszName,FILETIME const *pctime,FILETIME const *patime,FILETIME const *pmtime);
+WINOLEAPI StgOpenAsyncDocfileOnIFillLockBytes(IFillLockBytes *pflb,DWORD grfMode,DWORD asyncFlags,IStorage **ppstgOpen);
+WINOLEAPI StgGetIFillLockBytesOnILockBytes(ILockBytes *pilb,IFillLockBytes **ppflb);
+WINOLEAPI StgGetIFillLockBytesOnFile(OLECHAR const *pwcsName,IFillLockBytes **ppflb);
+WINOLEAPI StgOpenLayoutDocfile(OLECHAR const *pwcsDfName,DWORD grfMode,DWORD reserved,IStorage **ppstgOpen);
+
+#define STGOPTIONS_VERSION 2
+
+typedef struct tagSTGOPTIONS {
+  USHORT usVersion;
+  USHORT reserved;
+  ULONG ulSectorSize;
+  const WCHAR *pwcsTemplateFile;
+} STGOPTIONS;
+
+WINOLEAPI StgCreateStorageEx (const WCHAR *pwcsName,DWORD grfMode,DWORD stgfmt,DWORD grfAttrs,STGOPTIONS *pStgOptions,void *reserved,REFIID riid,void **ppObjectOpen);
+WINOLEAPI StgOpenStorageEx (const WCHAR *pwcsName,DWORD grfMode,DWORD stgfmt,DWORD grfAttrs,STGOPTIONS *pStgOptions,void *reserved,REFIID riid,void **ppObjectOpen);
+WINOLEAPI BindMoniker(LPMONIKER pmk,DWORD grfOpt,REFIID iidResult,LPVOID *ppvResult);
+WINOLEAPI CoInstall(IBindCtx *pbc,DWORD dwFlags,uCLSSPEC *pClassSpec,QUERYCONTEXT *pQuery,LPWSTR pszCodeBase);
+WINOLEAPI CoGetObject(LPCWSTR pszName,BIND_OPTS *pBindOptions,REFIID riid,void **ppv);
+WINOLEAPI MkParseDisplayName(LPBC pbc,LPCOLESTR szUserName,ULONG *pchEaten,LPMONIKER *ppmk);
+WINOLEAPI MonikerRelativePathTo(LPMONIKER pmkSrc,LPMONIKER pmkDest,LPMONIKER *ppmkRelPath,WINBOOL dwReserved);
+WINOLEAPI MonikerCommonPrefixWith(LPMONIKER pmkThis,LPMONIKER pmkOther,LPMONIKER *ppmkCommon);
+WINOLEAPI CreateBindCtx(DWORD reserved,LPBC *ppbc);
+WINOLEAPI CreateGenericComposite(LPMONIKER pmkFirst,LPMONIKER pmkRest,LPMONIKER *ppmkComposite);
+WINOLEAPI GetClassFile (LPCOLESTR szFilename,CLSID *pclsid);
+WINOLEAPI CreateClassMoniker(REFCLSID rclsid,LPMONIKER *ppmk);
+WINOLEAPI CreateFileMoniker(LPCOLESTR lpszPathName,LPMONIKER *ppmk);
+WINOLEAPI CreateItemMoniker(LPCOLESTR lpszDelim,LPCOLESTR lpszItem,LPMONIKER *ppmk);
+WINOLEAPI CreateAntiMoniker(LPMONIKER *ppmk);
+WINOLEAPI CreatePointerMoniker(LPUNKNOWN punk,LPMONIKER *ppmk);
+WINOLEAPI CreateObjrefMoniker(LPUNKNOWN punk,LPMONIKER *ppmk);
+WINOLEAPI GetRunningObjectTable(DWORD reserved,LPRUNNINGOBJECTTABLE *pprot);
+
+#include <urlmon.h>
+#include <propidl.h>
+
+WINOLEAPI CreateStdProgressIndicator(HWND hwndParent,LPCOLESTR pszTitle,IBindStatusCallback *pIbscCaller,IBindStatusCallback **ppIbsc);
+
+#ifndef RC_INVOKED
+#include <poppack.h>
+#endif
+#endif