visual studio - Trying to convert Delphi interface definition to C++ for VS 2008 -


i need convert interface defined in delpi c++. made small demo project contains of stuff shown below.

first delphi function person claims working on this thread:

function canfilebedeletedtorecyclebin(const afilename: unicodestring): boolean; var   recyclebinmanager: irecyclebinmanager; begin   olecheck(cocreateinstance(clsid_recyclebinmanager, nil, clsctx_inproc_server or clsctx_local_server, irecyclebinmanager, recyclebinmanager));   try     result := recyclebinmanager.willrecycle(pwidechar(afilename)) = s_ok;       recyclebinmanager := nil;   end; end; 

the rest of delphi interface definitions are here.

so came following c++ code unfortunately crashes. (again, let me repeat person wrote delphi version claims works fine him.)

hresult hr;  coinitializeex(null, coinit_disable_ole1dde | coinit_apartmentthreaded);  // {4a04656d-52aa-49de-8a09-cb178760e748} const clsid clsid_recyclebinmanager = {0x4a04656d, 0x52aa, 0x49de, {0x8a, 0x09, 0xcb, 0x17, 0x87, 0x60, 0xe7, 0x48}};  // {5869092d-8af9-4a6c-ae84-1f03be2246cc} const iid iid_irecyclebinmanager = {0x5869092d, 0x8af9, 0x4a6c, {0xae, 0x84, 0x1f, 0x03, 0xbe, 0x22, 0x46, 0xcc}};  irecyclebinmanager* pirbm = null;  hr = cocreateinstance(clsid_recyclebinmanager, null, clsctx_inproc_server | clsctx_local_server,     iid_irecyclebinmanager, (void**) &pirbm); //  hr = shcocreateinstance(null, &clsid_recyclebinmanager, null, iid_irecyclebinmanager, (void **)&pirbm); if (succeeded(hr)) {     //i crash on next line:     //unhandled exception @ 0x76175ed2: 0xc0000005: access violation writing location 0xa84d252b.     hr = pirbm->willrecycle(l"c:\\test del");      pirbm->release(); } 

i tried best convert interface delphi (here) c++. here's got (after @remylebeau's suggestions, unfortunately still didn't work me.)

#pragma pack(push,1) struct deleteditem {     dword dwfilesizelow;     dword dwfilesizehigh; #pragma pack(push,8)     filetime ftdeletiontime; #pragma pack(pop)     wchar szoriginalpath[max_path];     wchar szdisplacedpath[max_path]; }; #pragma pack(pop)  enum recyclebin_type : unsigned char  {      rbtype_volume,      rbtype_knownfolder  };   #if defined(__cplusplus) && !defined(cinterface)      midl_interface("6e325f88-d12f-49e5-895b-8ec98630c021")     ienumrecycleitems : public iunknown     {     public:         //virtual hresult __stdcall next(unsigned celt, /* out */ tagdeleteditem &rgelt, unsigned &pceltfetched) = 0 ;         virtual hresult stdmethodcalltype next(              __rpc__in ulong celt,             __rpc__deref_out deleteditem* rgelt,             __rpc__deref_out ulong* pceltfetched             ) = 0;          //virtual hresult __stdcall skip(unsigned celt) = 0 ;         virtual hresult stdmethodcalltype skip(              __rpc__in ulong celt             ) = 0;          //virtual hresult __stdcall reset(void) = 0 ;         virtual hresult stdmethodcalltype reset(             void             ) = 0;          //virtual hresult __stdcall clone(/* out */ _di_ienumrecycleitems &ppenum) = 0 ;         virtual hresult stdmethodcalltype clone(              __rpc__deref_out ienumrecycleitems** ppenum             ) = 0;      };         midl_interface("0125e62f-8349-443a-854b-a55fb84cfa35")     irecycle : public iunknown     {     public:         //virtual hresult __stdcall compact(void) = 0 ;         virtual hresult stdmethodcalltype compact(void) = 0;          //virtual hresult __stdcall getfiledata(const system::widechar * pszpath, /* out */ tagdeleteditem &lpdata) = 0 ;         virtual hresult stdmethodcalltype getfiledata(              __rpc__in const wchar* pszpath,             __rpc__deref_out deleteditem* lpdata             ) = 0;          //virtual hresult __stdcall getitemcount(/* out */ __int64 &lpcount) = 0 ;         virtual hresult stdmethodcalltype getitemcount(              __rpc__deref_out __int64* lpcount             ) = 0;          //virtual hresult __stdcall getusedspace(/* out */ __int64 &lpusedspace) = 0 ;         virtual hresult stdmethodcalltype getusedspace(              __rpc__deref_out __int64* lpusedspace             ) = 0;          //virtual hresult __stdcall isempty(void) = 0 ;         virtual hresult stdmethodcalltype isempty(              void             ) = 0;          //virtual hresult __stdcall purgeall(_di_ifileoperation pfo) = 0 ;         virtual hresult stdmethodcalltype purgeall(              __rpc__in ifileoperation* pfo             ) = 0;          //virtual hresult __stdcall purgeitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ;         virtual hresult stdmethodcalltype purgeitems(              __rpc__in const wchar* lpstritems,             __rpc__in ifileoperation* pfo             ) = 0;          //virtual hresult __stdcall suspendupdating(bool fsuspend) = 0 ;         virtual hresult stdmethodcalltype suspendupdating(              __rpc__in bool fsuspend             ) = 0;          //virtual hresult __stdcall recycleitem(const system::widechar * lpstritem, const unsigned dwattrs, const __int64 ifilesize, /* out */ _di_ishellitem &psi) = 0 ;         virtual hresult stdmethodcalltype recycleitem(              __rpc__in const wchar* lpstritem,             __rpc__in const dword dwattrs,             __rpc__in const __int64 ifilesize,             __rpc__deref_out ishellitem** psi             ) = 0;          //virtual hresult __stdcall restoreitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ;         virtual hresult stdmethodcalltype restoreitems(              __rpc__in const wchar* lpstritems,             __rpc__in ifileoperation* pfo             ) = 0;          //virtual hresult __stdcall isrecycled(const system::widechar * pszpath, pbool lprecycled) = 0 ;         virtual hresult stdmethodcalltype isrecycled(              __rpc__in const wchar* pszpath,             __rpc__out pbool lprecycled             ) = 0;          //virtual hresult __stdcall enumitems(unsigned dwflags, /* out */ _di_ienumrecycleitems &enumrecycleitems) = 0 ;         virtual hresult stdmethodcalltype enumitems(              __rpc__in dword dwflags,             __rpc__deref_out ienumrecycleitems** enm             ) = 0;          //virtual hresult __stdcall willrecycle(const system::widechar * pszpath) = 0 ;         virtual hresult stdmethodcalltype willrecycle(              __rpc__in const wchar* pszpath             ) = 0;      };         midl_interface("f964ad97-96f4-48ab-b444-e8588bc7c7b3")     irecyclebin : public iunknown     {     public:         //virtual hresult __stdcall compact(void) = 0 ;         virtual hresult stdmethodcalltype compact(void) = 0;          //virtual hresult __stdcall getfiledata(const system::widechar * pszpath, /* out */ tagdeleteditem &lpdata) = 0 ;         virtual hresult stdmethodcalltype getfiledata(              __rpc__in const wchar* pszpath,             __rpc__deref_out deleteditem* lpdata             ) = 0;          //virtual hresult __stdcall getitemcount(/* out */ __int64 &lpcount) = 0 ;         virtual hresult stdmethodcalltype getitemcount(              __rpc__deref_out __int64* lpcount             ) = 0;          //virtual hresult __stdcall getusedspace(/* out */ __int64 &lpusedspace) = 0 ;         virtual hresult stdmethodcalltype getusedspace(              __rpc__deref_out __int64* lpusedspace             ) = 0;          //virtual hresult __stdcall isempty(void) = 0 ;         virtual hresult stdmethodcalltype isempty(              void             ) = 0;          //virtual hresult __stdcall purgeall(_di_ifileoperation pfo) = 0 ;         virtual hresult stdmethodcalltype purgeall(              __rpc__in ifileoperation* pfo             ) = 0;          //virtual hresult __stdcall purgeitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ;         virtual hresult stdmethodcalltype purgeitems(              __rpc__in const wchar* lpstritems,             __rpc__in ifileoperation* pfo             ) = 0;          //virtual hresult __stdcall suspendupdating(bool fsuspend) = 0 ;         virtual hresult stdmethodcalltype suspendupdating(              __rpc__in bool fsuspend             ) = 0;          //virtual hresult __stdcall recycleitem(const system::widechar * lpstritem, const unsigned dwattrs, const __int64 ifilesize, /* out */ _di_ishellitem &psi) = 0 ;         virtual hresult stdmethodcalltype recycleitem(              __rpc__in const wchar* lpstritem,             __rpc__in const dword dwattrs,             __rpc__in const __int64 ifilesize,             __rpc__deref_out ishellitem** psi             ) = 0;          //virtual hresult __stdcall restoreitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ;         virtual hresult stdmethodcalltype restoreitems(              __rpc__in const wchar* lpstritems,             __rpc__in ifileoperation* pfo             ) = 0;          //virtual hresult __stdcall isrecycled(const system::widechar * pszpath, pbool lprecycled) = 0 ;         virtual hresult stdmethodcalltype isrecycled(              __rpc__in const wchar* pszpath,             __rpc__out pbool lprecycled             ) = 0;          //virtual hresult __stdcall enumitems(unsigned dwflags, /* out */ _di_ienumrecycleitems &enumrecycleitems) = 0 ;         virtual hresult stdmethodcalltype enumitems(              __rpc__in dword dwflags,             __rpc__deref_out ienumrecycleitems** enm             ) = 0;          //virtual hresult __stdcall willrecycle(const system::widechar * pszpath) = 0 ;         virtual hresult stdmethodcalltype willrecycle(              __rpc__in const wchar* pszpath             ) = 0;          //virtual hresult __stdcall initialize(const tagrecyclebin_type rbtype, const system::widechar * pszid) = 0 ;         virtual hresult stdmethodcalltype initialize(             __rpc__in const recyclebin_type rbtype,             __rpc__in const wchar* pszid             ) = 0;          //virtual hresult __stdcall gettypeid(/* out */ tagrecyclebin_type &rbtype, system::widechar * &pszid) = 0 ;         virtual hresult stdmethodcalltype gettypeid(             __rpc__deref_out recyclebin_type* rbtype,             __rpc__in const wchar* pszid             ) = 0;          //virtual hresult __stdcall getidlist(/* out */ winapi::shlobj::pitemidlist &ppidl) = 0 ;         virtual hresult stdmethodcalltype getidlist(             __rpc__deref_out lpitemidlist *ppidl             ) = 0;          //virtual hresult __stdcall getlocation(system::widechar * pszpathbuffer, unsigned cchmax) = 0 ;         virtual hresult stdmethodcalltype getlocation(              __rpc__in wchar* pszpathbuffer,             __rpc__in uint cchmax             ) = 0;          //virtual hresult __stdcall getmaxcapacityrange(/* out */ __int64 &lpmin, /* out */ __int64 &lpmax) = 0 ;         virtual hresult stdmethodcalltype getmaxcapacityrange(              __rpc__deref_out __int64* lpmin,             __rpc__deref_out __int64* lpmax             ) = 0;          //virtual hresult __stdcall getmaxcapacity(/* out */ __int64 &lpcapacity) = 0 ;         virtual hresult stdmethodcalltype getmaxcapacity(              __rpc__deref_out __int64* lpcapacity             ) = 0;          //virtual hresult __stdcall setmaxcapacity(const __int64 lpcapacity) = 0 ;         virtual hresult stdmethodcalltype setmaxcapacity(              __rpc__in const __int64 lpcapacity             ) = 0;          //virtual hresult __stdcall getpurgeondelete(/* out */ bool &fnukeondelete) = 0 ;         virtual hresult stdmethodcalltype getpurgeondelete(              __rpc__deref_out bool* fnukeondelete             ) = 0;          //virtual hresult __stdcall setpurgeondelete(const bool fnukeondelete) = 0 ;         virtual hresult stdmethodcalltype setpurgeondelete(              __rpc__in const bool fnukeondelete             ) = 0;      };         midl_interface("5869092d-8af9-4a6c-ae84-1f03be2246cc")     irecyclebinmanager : public iunknown     {     public:          //virtual hresult __stdcall compact(void) = 0 ;         virtual hresult stdmethodcalltype compact(void) = 0;          //virtual hresult __stdcall getfiledata(const system::widechar * pszpath, /* out */ tagdeleteditem &lpdata) = 0 ;         virtual hresult stdmethodcalltype getfiledata(              __rpc__in const wchar* pszpath,             __rpc__deref_out deleteditem* pdeleteditem             ) = 0;          //virtual hresult __stdcall getitemcount(/* out */ __int64 &lpcount) = 0 ;         virtual hresult stdmethodcalltype getitemcount(              __rpc__deref_out __int64* lpcount             ) = 0;          //virtual hresult __stdcall getusedspace(/* out */ __int64 &lpusedspace) = 0 ;         virtual hresult stdmethodcalltype getusedspace(              __rpc__deref_out __int64* lpusedspace             ) = 0;          //virtual hresult __stdcall isempty(void) = 0 ;         virtual hresult stdmethodcalltype isempty(              void             ) = 0;          //virtual hresult __stdcall purgeall(_di_ifileoperation pfo) = 0 ;         virtual hresult stdmethodcalltype purgeall(              __rpc__in ifileoperation* pfo             ) = 0;          //virtual hresult __stdcall purgeitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ;         virtual hresult stdmethodcalltype purgeitems(              __rpc__in const wchar* lpstritems,             __rpc__in ifileoperation* pfo             ) = 0;          //virtual hresult __stdcall suspendupdating(bool fsuspend) = 0 ;         virtual hresult stdmethodcalltype suspendupdating(              __rpc__in bool fsuspend             ) = 0;          //virtual hresult __stdcall recycleitem(const system::widechar * lpstritem, const unsigned dwattrs, const __int64 ifilesize, /* out */ _di_ishellitem &psi) = 0 ;         virtual hresult stdmethodcalltype recycleitem(              __rpc__in const wchar* lpstritem,             __rpc__in const dword dwattrs,             __rpc__in const __int64 ifilesize,             __rpc__deref_out ishellitem** psi             ) = 0;          //virtual hresult __stdcall restoreitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ;         virtual hresult stdmethodcalltype restoreitems(              __rpc__in const wchar* lpstritems,             __rpc__in ifileoperation* pfo             ) = 0;          //virtual hresult __stdcall isrecycled(const system::widechar * pszpath, pbool lprecycled) = 0 ;         virtual hresult stdmethodcalltype isrecycled(              __rpc__in const wchar* pszpath,             __rpc__out pbool lprecycled             ) = 0;          //virtual hresult __stdcall enumitems(unsigned dwflags, /* out */ _di_ienumrecycleitems &enumrecycleitems) = 0 ;         virtual hresult stdmethodcalltype enumitems(              __rpc__in dword dwflags,             __rpc__deref_out ienumrecycleitems** enm             ) = 0;          //virtual hresult __stdcall willrecycle(const system::widechar * pszpath) = 0 ;         virtual hresult stdmethodcalltype willrecycle(              __rpc__in const wchar* pszpath             ) = 0;          //virtual hresult __stdcall delaycompaction(const bool fdelay) = 0 ;         virtual hresult stdmethodcalltype delaycompaction(              __rpc__in const bool fdelay             ) = 0;          //virtual hresult __stdcall getrecyclebincount(/* out */ int &icount) = 0 ;         virtual hresult stdmethodcalltype getrecyclebincount(              __rpc__deref_out int* icount             ) = 0;          //virtual hresult __stdcall getrecyclebinat(const int index, const guid &iid, /* out */ void *ppv) = 0 ;         virtual hresult stdmethodcalltype getrecyclebinat(              __rpc__in const int index,             const guid *iid,             __rpc__deref_out void **ppv             ) = 0;          //virtual hresult __stdcall getrecyclebin(const system::widechar * pszpath, const guid &iid, /* out */ void *ppv) = 0 ;         virtual hresult stdmethodcalltype getrecyclebin(              __rpc__in const wchar* pszrootpath,             const guid *iid,             __rpc__deref_out void **ppv             ) = 0;          //virtual hresult __stdcall refresh(void) = 0 ;         virtual hresult stdmethodcalltype refresh(              void             ) = 0;      };  #endif 

can take look. missing there?

rather translating interface code delphi c++, can take original code russian site, put in .pas file as-is, , add file c++ project. when build project (or compile .pas file itself), c++ .hpp file generated you, can #include c++ code.

doing way, following code works fine me in c++builder xe2 on windows 7:

#include "urecyclebinstuff.hpp" #include <comobj.hpp>  bool __fastcall canfilebedeletedtorecyclebin(const unicodestring &afilename) {     delphiinterface<irecyclebinmanager> recyclebinmanager;     olecheck(cocreateinstance(clsid_recyclebinmanager, null, clsctx_inproc_server | clsctx_local_server, iid_irecyclebinmanager, (void**)&recyclebinmanager));     return (recyclebinmanager->willrecycle(afilename.c_str()) == s_ok); }  void __fastcall tform1::button1click(tobject *sender) {     if (canfilebedeletedtorecyclebin(l"c:\\test del"))         showmessage("can deleted"); // <-- code makes here     else         showmessage("can not deleted"); } 

here generated .hpp file looks like:

// codegear c++builder // copyright (c) 1995, 2011 embarcadero technologies, inc. // rights reserved  // (do not edit: machine generated header) 'urecyclebinstuff.pas' rev: 23.00 (win32)  #ifndef urecyclebinstuffhpp #define urecyclebinstuffhpp  #pragma delphiheader begin #pragma option push #pragma option -w-      // warnings off #pragma option -vx      // zero-length empty class member functions #pragma pack(push,8) #include <system.hpp>   // pascal unit #include <sysinit.hpp>  // pascal unit #include <winapi.windows.hpp>   // pascal unit #include <winapi.messages.hpp>  // pascal unit #include <winapi.shlobj.hpp>    // pascal unit  //-- user supplied -----------------------------------------------------------  namespace urecyclebinstuff { //-- type declarations ------------------------------------------------------- #pragma option push -b- enum tagrecyclebin_type : unsigned char { rbtype_volume, rbtype_knownfolder }; #pragma option pop  typedef tagrecyclebin_type trecyclebintype;  struct tagdeleteditem; typedef tagdeleteditem *pdeleteditem;  #pragma pack(push,1) struct declspec_drecord tagdeleteditem {  public:     unsigned dwfilesizelow;     unsigned dwfilesizehigh;     #pragma pack(push,8)     _filetime ftdeletiontime;     #pragma pack(pop)     system::staticarray<system::widechar, 260> szoriginalpath;     system::staticarray<system::widechar, 260> szdisplacedpath; }; #pragma pack(pop)   typedef tagdeleteditem tdeleteditem;  __interface ienumrecycleitems; typedef system::delphiinterface<ienumrecycleitems> _di_ienumrecycleitems; __interface  interface_uuid("{6e325f88-d12f-49e5-895b-8ec98630c021}") ienumrecycleitems  : public system::iinterface  {  public:     virtual hresult __stdcall next(unsigned celt, /* out */ tagdeleteditem &rgelt, unsigned &pceltfetched) = 0 ;     virtual hresult __stdcall skip(unsigned celt) = 0 ;     virtual hresult __stdcall reset(void) = 0 ;     virtual hresult __stdcall clone(/* out */ _di_ienumrecycleitems &ppenum) = 0 ; };  __interface irecycle; typedef system::delphiinterface<irecycle> _di_irecycle; __interface  interface_uuid("{0125e62f-8349-443a-854b-a55fb84cfa35}") irecycle  : public system::iinterface  {  public:     virtual hresult __stdcall compact(void) = 0 ;     virtual hresult __stdcall getfiledata(const system::widechar * pszpath, /* out */ tagdeleteditem &lpdata) = 0 ;     virtual hresult __stdcall getitemcount(/* out */ __int64 &lpcount) = 0 ;     virtual hresult __stdcall getusedspace(/* out */ __int64 &lpusedspace) = 0 ;     virtual hresult __stdcall isempty(void) = 0 ;     virtual hresult __stdcall purgeall(_di_ifileoperation pfo) = 0 ;     virtual hresult __stdcall purgeitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ;     virtual hresult __stdcall suspendupdating(bool fsuspend) = 0 ;     virtual hresult __stdcall recycleitem(const system::widechar * lpstritem, const unsigned dwattrs, const __int64 ifilesize, /* out */ _di_ishellitem &psi) = 0 ;     virtual hresult __stdcall restoreitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ;     virtual hresult __stdcall isrecycled(const system::widechar * pszpath, pbool lprecycled) = 0 ;     virtual hresult __stdcall enumitems(unsigned dwflags, /* out */ _di_ienumrecycleitems &enumrecycleitems) = 0 ;     virtual hresult __stdcall willrecycle(const system::widechar * pszpath) = 0 ; };  __interface irecyclebin; typedef system::delphiinterface<irecyclebin> _di_irecyclebin; __interface  interface_uuid("{f964ad97-96f4-48ab-b444-e8588bc7c7b3}") irecyclebin  : public system::iinterface  {  public:     virtual hresult __stdcall compact(void) = 0 ;     virtual hresult __stdcall getfiledata(const system::widechar * pszpath, /* out */ tagdeleteditem &lpdata) = 0 ;     virtual hresult __stdcall getitemcount(/* out */ __int64 &lpcount) = 0 ;     virtual hresult __stdcall getusedspace(/* out */ __int64 &lpusedspace) = 0 ;     virtual hresult __stdcall isempty(void) = 0 ;     virtual hresult __stdcall purgeall(_di_ifileoperation pfo) = 0 ;     virtual hresult __stdcall purgeitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ;     virtual hresult __stdcall suspendupdating(bool fsuspend) = 0 ;     virtual hresult __stdcall recycleitem(const system::widechar * lpstritem, const unsigned dwattrs, const __int64 ifilesize, /* out */ _di_ishellitem &psi) = 0 ;     virtual hresult __stdcall restoreitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ;     virtual hresult __stdcall isrecycled(const system::widechar * pszpath, pbool lprecycled) = 0 ;     virtual hresult __stdcall enumitems(unsigned dwflags, /* out */ _di_ienumrecycleitems &enumrecycleitems) = 0 ;     virtual hresult __stdcall willrecycle(const system::widechar * pszpath) = 0 ;     virtual hresult __stdcall initialize(const tagrecyclebin_type rbtype, const system::widechar * pszid) = 0 ;     virtual hresult __stdcall gettypeid(/* out */ tagrecyclebin_type &rbtype, system::widechar * &pszid) = 0 ;     virtual hresult __stdcall getidlist(/* out */ winapi::shlobj::pitemidlist &ppidl) = 0 ;     virtual hresult __stdcall getlocation(system::widechar * pszpathbuffer, unsigned cchmax) = 0 ;     virtual hresult __stdcall getmaxcapacityrange(/* out */ __int64 &lpmin, /* out */ __int64 &lpmax) = 0 ;     virtual hresult __stdcall getmaxcapacity(/* out */ __int64 &lpcapacity) = 0 ;     virtual hresult __stdcall setmaxcapacity(const __int64 lpcapacity) = 0 ;     virtual hresult __stdcall getpurgeondelete(/* out */ bool &fnukeondelete) = 0 ;     virtual hresult __stdcall setpurgeondelete(const bool fnukeondelete) = 0 ; };  __interface irecyclebinmanager; typedef system::delphiinterface<irecyclebinmanager> _di_irecyclebinmanager; __interface  interface_uuid("{5869092d-8af9-4a6c-ae84-1f03be2246cc}") irecyclebinmanager  : public system::iinterface  {  public:     virtual hresult __stdcall compact(void) = 0 ;     virtual hresult __stdcall getfiledata(const system::widechar * pszpath, /* out */ tagdeleteditem &lpdata) = 0 ;     virtual hresult __stdcall getitemcount(/* out */ __int64 &lpcount) = 0 ;     virtual hresult __stdcall getusedspace(/* out */ __int64 &lpusedspace) = 0 ;     virtual hresult __stdcall isempty(void) = 0 ;     virtual hresult __stdcall purgeall(_di_ifileoperation pfo) = 0 ;     virtual hresult __stdcall purgeitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ;     virtual hresult __stdcall suspendupdating(bool fsuspend) = 0 ;     virtual hresult __stdcall recycleitem(const system::widechar * lpstritem, const unsigned dwattrs, const __int64 ifilesize, /* out */ _di_ishellitem &psi) = 0 ;     virtual hresult __stdcall restoreitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ;     virtual hresult __stdcall isrecycled(const system::widechar * pszpath, pbool lprecycled) = 0 ;     virtual hresult __stdcall enumitems(unsigned dwflags, /* out */ _di_ienumrecycleitems &enumrecycleitems) = 0 ;     virtual hresult __stdcall willrecycle(const system::widechar * pszpath) = 0 ;     virtual hresult __stdcall delaycompaction(const bool fdelay) = 0 ;     virtual hresult __stdcall getrecyclebincount(/* out */ int &icount) = 0 ;     virtual hresult __stdcall getrecyclebinat(const int index, const guid &iid, /* out */ void *ppv) = 0 ;     virtual hresult __stdcall getrecyclebin(const system::widechar * pszpath, const guid &iid, /* out */ void *ppv) = 0 ;     virtual hresult __stdcall refresh(void) = 0 ; };  //-- var, const, procedure --------------------------------------------------- extern package guid iid_ienumrecycleitems; extern package guid iid_irecycle; extern package guid iid_irecyclebin; extern package guid iid_irecyclebinmanager; extern package guid clsid_recyclebinmanager;  }   /* namespace urecyclebinstuff */ #if !defined(delphiheader_no_implicit_namespace_use) && !defined(no_using_namespace_urecyclebinstuff) using namespace urecyclebinstuff; #endif #pragma pack(pop) #pragma option pop  #pragma delphiheader end. //-- end unit ---------------------------------------------------------------- #endif  // urecyclebinstuffhpp 

if compare .hpp file's irecyclebinmanager manual irecyclebinmanager, there discrepancies in code. such as, have recycleitem() , isrecycled() methods named purgeitems() , restoreitems() instead, , have 2 restoreitems() methods.


Comments

Popular posts from this blog

php - render data via PDO::FETCH_FUNC vs loop -

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

The canvas has been tainted by cross-origin data in chrome only -