[SHELL32]
[reactos.git] / reactos / dll / win32 / shell32 / shellole.cpp
index c4f1b50..ef9e56b 100644 (file)
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include <precomp.h>
+#include "precomp.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(shell);
 
-extern HRESULT WINAPI IFSFolder_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv);
-
 static const WCHAR sShell32[12] = {'S','H','E','L','L','3','2','.','D','L','L','\0'};
 
 /**************************************************************************
@@ -129,7 +127,7 @@ HRESULT WINAPI SHCoCreateInstance(
 
     /* now we create an instance */
     if (bLoadFromShell32) {
-        if (! SUCCEEDED(DllGetClassObject(*myclsid, IID_IClassFactory, (LPVOID*)&pcf))) {
+        if (! SUCCEEDED(DllGetClassObject(*myclsid, IID_PPV_ARG(IClassFactory, &pcf)))) {
             ERR("LoadFromShell failed for CLSID=%s\n", shdebugstr_guid(myclsid));
         }
     } else if (bLoadWithoutCOM) {
@@ -248,7 +246,7 @@ HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal)
  * SEE ALSO
  *     CoTaskMemAlloc, SHLoadOLE
  */
-LPVOID WINAPI SHAlloc(DWORD len)
+LPVOID WINAPI SHAlloc(SIZE_T len)
 {
     LPVOID ret;
 
@@ -286,7 +284,7 @@ HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
 
     if(!psf) return E_INVALIDARG;
     *psf = NULL;
-    hres = CDesktopFolder::_CreatorClass::CreateInstance(NULL, IID_IShellFolder, (void**)psf);
+    hres = CDesktopFolder::_CreatorClass::CreateInstance(NULL, IID_PPV_ARG(IShellFolder, psf));
 
     TRACE("-- %p->(%p)\n",psf, *psf);
     return hres;
@@ -388,7 +386,7 @@ HRESULT IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, const I
     ATLTRY (theClassObject = new CComObject<IDefClFImpl>);
     if (theClassObject == NULL)
         return E_OUTOFMEMORY;
-    hResult = theClassObject->QueryInterface (IID_IClassFactory, (void **)&result);
+    hResult = theClassObject->QueryInterface (IID_PPV_ARG(IClassFactory, &result));
     if (FAILED (hResult))
     {
         delete theClassObject;
@@ -422,7 +420,7 @@ HRESULT WINAPI SHCreateDefClassObject(
     if (FAILED(hResult))
         return hResult;
     *ppv = pcf;
-    return NOERROR;
+    return S_OK;
 }
 
 /*************************************************************************
@@ -596,40 +594,40 @@ EXTERN_C HRESULT WINAPI SHPropStgCreate(IPropertySetStorage *psstg, REFFMTID fmt
         grfFlags, grfMode, dwDisposition, ppstg, puCodePage);
 
     hres = psstg->Open(fmtid, grfMode, ppstg);
+
      switch (dwDisposition)
      {
          case CREATE_ALWAYS:
              if (SUCCEEDED(hres))
              {
-                 reinterpret_cast<IPropertyStorage*>(*ppstg)->Release();
+                 (*ppstg)->Release();
                  hres = psstg->Delete(fmtid);
                  if(FAILED(hres))
                      return hres;
                  hres = E_FAIL;
              }
+
          case OPEN_ALWAYS:
          case CREATE_NEW:
              if (FAILED(hres))
                  hres = psstg->Create(fmtid, pclsid, grfFlags, grfMode, ppstg);
+
          case OPEN_EXISTING:
              if (FAILED(hres))
                  return hres;
+
              if (puCodePage)
              {
                  prop.ulKind = PRSPEC_PROPID;
                  prop.propid = PID_CODEPAGE;
-                 hres = reinterpret_cast<IPropertyStorage*>(*ppstg)->ReadMultiple(1, &prop, &ret);
+                 hres = (*ppstg)->ReadMultiple(1, &prop, &ret);
                  if (FAILED(hres) || ret.vt!=VT_I2)
                      *puCodePage = 0;
                  else
                      *puCodePage = ret.iVal;
              }
      }
+
      return S_OK;
 }
 
@@ -641,32 +639,32 @@ EXTERN_C HRESULT WINAPI SHPropStgReadMultiple(IPropertyStorage *pps, UINT uCodeP
 {
     STATPROPSETSTG stat;
     HRESULT hres;
+
     FIXME("%p %u %u %p %p\n", pps, uCodePage, cpspec, rgpspec, rgvar);
+
     memset(rgvar, 0, cpspec*sizeof(PROPVARIANT));
     hres = pps->ReadMultiple(cpspec, rgpspec, rgvar);
     if (FAILED(hres))
         return hres;
+
     if (!uCodePage)
     {
         PROPSPEC prop;
         PROPVARIANT ret;
+
         prop.ulKind = PRSPEC_PROPID;
         prop.propid = PID_CODEPAGE;
         hres = pps->ReadMultiple(1, &prop, &ret);
         if(FAILED(hres) || ret.vt!=VT_I2)
             return S_OK;
+
         uCodePage = ret.iVal;
     }
+
     hres = pps->Stat(&stat);
     if (FAILED(hres))
         return S_OK;
+
     /* TODO: do something with codepage and stat */
     return S_OK;
 }
@@ -680,20 +678,20 @@ EXTERN_C HRESULT WINAPI SHPropStgWriteMultiple(IPropertyStorage *pps, UINT *uCod
     STATPROPSETSTG stat;
     UINT codepage;
     HRESULT hres;
+
     FIXME("%p %p %u %p %p %d\n", pps, uCodePage, cpspec, rgpspec, rgvar, propidNameFirst);
+
     hres = pps->Stat(&stat);
     if (FAILED(hres))
         return hres;
+
     if (uCodePage && *uCodePage)
         codepage = *uCodePage;
     else
     {
         PROPSPEC prop;
         PROPVARIANT ret;
+
         prop.ulKind = PRSPEC_PROPID;
         prop.propid = PID_CODEPAGE;
         hres = pps->ReadMultiple(1, &prop, &ret);
@@ -701,14 +699,14 @@ EXTERN_C HRESULT WINAPI SHPropStgWriteMultiple(IPropertyStorage *pps, UINT *uCod
             return hres;
         if (ret.vt!=VT_I2 || !ret.iVal)
             return E_FAIL;
+
         codepage = ret.iVal;
         if (uCodePage)
             *uCodePage = codepage;
     }
+
     /* TODO: do something with codepage and stat */
+
     hres = pps->WriteMultiple(cpspec, rgpspec, rgvar, propidNameFirst);
     return hres;
 }