MSI: move product, feature and component enumeration functions to registry.c

Mike McCormack mike at codeweavers.com
Tue Feb 15 23:17:54 CST 2005


These functions are all registry querying functions.

Mike


ChangeLog:
* move product, feature and component enumeration functions to registry.c
-------------- next part --------------
Index: dlls/msi/registry.c
===================================================================
RCS file: /home/wine/wine/dlls/msi/registry.c,v
retrieving revision 1.3
diff -u -p -r1.3 registry.c
--- dlls/msi/registry.c	26 Jan 2005 19:41:13 -0000	1.3
+++ dlls/msi/registry.c	16 Feb 2005 05:05:53 -0000
@@ -484,3 +484,231 @@ UINT WINAPI MsiDecomposeDescriptorA( LPC
 
     return r;
 }
+
+UINT WINAPI MsiEnumProductsA(DWORD index, LPSTR lpguid)
+{
+    DWORD r;
+    WCHAR szwGuid[GUID_SIZE];
+
+    TRACE("%ld %p\n",index,lpguid);
+    
+    if (NULL == lpguid)
+        return ERROR_INVALID_PARAMETER;
+    r = MsiEnumProductsW(index, szwGuid);
+    if( r == ERROR_SUCCESS )
+        WideCharToMultiByte(CP_ACP, 0, szwGuid, -1, lpguid, GUID_SIZE, NULL, NULL);
+
+    return r;
+}
+
+UINT WINAPI MsiEnumProductsW(DWORD index, LPWSTR lpguid)
+{
+    HKEY hkeyFeatures = 0;
+    DWORD r;
+    WCHAR szKeyName[33];
+
+    TRACE("%ld %p\n",index,lpguid);
+
+    if (NULL == lpguid)
+        return ERROR_INVALID_PARAMETER;
+
+    r = MSIREG_OpenFeatures(&hkeyFeatures);
+    if( r != ERROR_SUCCESS )
+        goto end;
+
+    r = RegEnumKeyW(hkeyFeatures, index, szKeyName, GUID_SIZE);
+
+    unsquash_guid(szKeyName, lpguid);
+
+end:
+
+    if( hkeyFeatures )
+        RegCloseKey(hkeyFeatures);
+
+    return r;
+}
+
+UINT WINAPI MsiEnumFeaturesA(LPCSTR szProduct, DWORD index, 
+      LPSTR szFeature, LPSTR szParent)
+{
+    DWORD r;
+    WCHAR szwFeature[GUID_SIZE], szwParent[GUID_SIZE];
+    LPWSTR szwProduct = NULL;
+
+    TRACE("%s %ld %p %p\n",debugstr_a(szProduct),index,szFeature,szParent);
+
+    if( szProduct )
+    {
+        UINT len = MultiByteToWideChar( CP_ACP, 0, szProduct, -1, NULL, 0 );
+        szwProduct = HeapAlloc( GetProcessHeap(), 0, len * sizeof (WCHAR) );
+        if( szwProduct )
+            MultiByteToWideChar( CP_ACP, 0, szProduct, -1, szwProduct, len );
+        else
+            return ERROR_FUNCTION_FAILED;
+    }
+
+    r = MsiEnumFeaturesW(szwProduct, index, szwFeature, szwParent);
+    if( r == ERROR_SUCCESS )
+    {
+        WideCharToMultiByte(CP_ACP, 0, szwFeature, -1,
+                            szFeature, GUID_SIZE, NULL, NULL);
+        WideCharToMultiByte(CP_ACP, 0, szwParent, -1,
+                            szParent, GUID_SIZE, NULL, NULL);
+    }
+
+    HeapFree( GetProcessHeap(), 0, szwProduct);
+
+    return r;
+}
+
+UINT WINAPI MsiEnumFeaturesW(LPCWSTR szProduct, DWORD index, 
+      LPWSTR szFeature, LPWSTR szParent)
+{
+    HKEY hkeyProduct = 0;
+    DWORD r, sz;
+
+    TRACE("%s %ld %p %p\n",debugstr_w(szProduct),index,szFeature,szParent);
+
+    r = MSIREG_OpenFeaturesKey(szProduct,&hkeyProduct,FALSE);
+    if( r != ERROR_SUCCESS )
+        goto end;
+
+    sz = GUID_SIZE;
+    r = RegEnumValueW(hkeyProduct, index, szFeature, &sz, NULL, NULL, NULL, NULL);
+
+end:
+    if( hkeyProduct )
+        RegCloseKey(hkeyProduct);
+
+    return r;
+}
+
+UINT WINAPI MsiEnumComponentsA(DWORD index, LPSTR lpguid)
+{
+    DWORD r;
+    WCHAR szwGuid[GUID_SIZE];
+
+    TRACE("%ld %p\n",index,lpguid);
+
+    r = MsiEnumComponentsW(index, szwGuid);
+    if( r == ERROR_SUCCESS )
+        WideCharToMultiByte(CP_ACP, 0, szwGuid, -1, lpguid, GUID_SIZE, NULL, NULL);
+
+    return r;
+}
+
+UINT WINAPI MsiEnumComponentsW(DWORD index, LPWSTR lpguid)
+{
+    HKEY hkeyComponents = 0;
+    DWORD r;
+    WCHAR szKeyName[33];
+
+    TRACE("%ld %p\n",index,lpguid);
+
+    r = MSIREG_OpenComponents(&hkeyComponents);
+    if( r != ERROR_SUCCESS )
+        goto end;
+
+    r = RegEnumKeyW(hkeyComponents, index, szKeyName, GUID_SIZE);
+
+    unsquash_guid(szKeyName, lpguid);
+
+end:
+
+    if( hkeyComponents )
+        RegCloseKey(hkeyComponents);
+
+    return r;
+}
+
+UINT WINAPI MsiEnumClientsA(LPCSTR szComponent, DWORD index, LPSTR szProduct)
+{
+    DWORD r;
+    WCHAR szwProduct[GUID_SIZE];
+    LPWSTR szwComponent = NULL;
+
+    TRACE("%s %ld %p\n",debugstr_a(szComponent),index,szProduct);
+
+    if( szComponent )
+    {
+        UINT len = MultiByteToWideChar( CP_ACP, 0, szComponent, -1, NULL, 0 );
+        szwComponent = HeapAlloc( GetProcessHeap(), 0, len * sizeof (WCHAR) );
+        if( szwComponent )
+            MultiByteToWideChar( CP_ACP, 0, szComponent, -1, szwComponent, len );
+        else
+            return ERROR_FUNCTION_FAILED;
+    }
+
+    r = MsiEnumClientsW(szComponent?szwComponent:NULL, index, szwProduct);
+    if( r == ERROR_SUCCESS )
+    {
+        WideCharToMultiByte(CP_ACP, 0, szwProduct, -1,
+                            szProduct, GUID_SIZE, NULL, NULL);
+    }
+
+    HeapFree( GetProcessHeap(), 0, szwComponent);
+
+    return r;
+}
+
+UINT WINAPI MsiEnumClientsW(LPCWSTR szComponent, DWORD index, LPWSTR szProduct)
+{
+    HKEY hkeyComp = 0;
+    DWORD r, sz;
+    WCHAR szValName[GUID_SIZE];
+
+    TRACE("%s %ld %p\n",debugstr_w(szComponent),index,szProduct);
+
+    r = MSIREG_OpenComponentsKey(szComponent,&hkeyComp,FALSE);
+    if( r != ERROR_SUCCESS )
+        goto end;
+
+    sz = GUID_SIZE;
+    r = RegEnumValueW(hkeyComp, index, szValName, &sz, NULL, NULL, NULL, NULL);
+    if( r != ERROR_SUCCESS )
+        goto end;
+
+    unsquash_guid(szValName, szProduct);
+
+end:
+    if( hkeyComp )
+        RegCloseKey(hkeyComp);
+
+    return r;
+}
+
+UINT WINAPI MsiEnumComponentQualifiersA( LPSTR szComponent, DWORD iIndex,
+                LPSTR lpQualifierBuf, DWORD* pcchQualifierBuf,
+                LPSTR lpApplicationDataBuf, DWORD* pcchApplicationDataBuf)
+{
+    FIXME("%s %08lx %p %p %p %p\n", debugstr_a(szComponent), iIndex,
+          lpQualifierBuf, pcchQualifierBuf, lpApplicationDataBuf,
+          pcchApplicationDataBuf);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+UINT WINAPI MsiEnumComponentQualifiersW( LPWSTR szComponent, DWORD iIndex,
+                LPWSTR lpQualifierBuf, DWORD* pcchQualifierBuf,
+                LPWSTR lpApplicationDataBuf, DWORD* pcchApplicationDataBuf )
+{
+    FIXME("%s %08lx %p %p %p %p\n", debugstr_w(szComponent), iIndex,
+          lpQualifierBuf, pcchQualifierBuf, lpApplicationDataBuf,
+          pcchApplicationDataBuf);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+UINT WINAPI MsiEnumRelatedProductsW(LPCWSTR szUpgradeCode, DWORD dwReserved,
+                                    DWORD iProductIndex, LPWSTR lpProductBuf)
+{
+    FIXME("%s %lu %lu %p\n", debugstr_w(szUpgradeCode), dwReserved,
+          iProductIndex, lpProductBuf);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+UINT WINAPI MsiEnumRelatedProductsA(LPCSTR szUpgradeCode, DWORD dwReserved,
+                                    DWORD iProductIndex, LPSTR lpProductBuf)
+{
+    FIXME("%s %lu %lu %p\n", debugstr_a(szUpgradeCode), dwReserved,
+          iProductIndex, lpProductBuf);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
--- dlls/msi/msi.c.1	2005-02-16 14:03:24.000000000 +0900
+++ dlls/msi/msi.c	2005-02-16 14:03:30.000000000 +0900
@@ -970,219 +970,6 @@ UINT WINAPI MsiMessageBoxW(HWND hWnd, LP
     return ERROR_CALL_NOT_IMPLEMENTED;
 }
 
-UINT WINAPI MsiEnumProductsA(DWORD index, LPSTR lpguid)
-{
-    DWORD r;
-    WCHAR szwGuid[GUID_SIZE];
-
-    TRACE("%ld %p\n",index,lpguid);
-    
-    if (NULL == lpguid) {
-      return ERROR_INVALID_PARAMETER;
-    }
-    r = MsiEnumProductsW(index, szwGuid);
-    if( r == ERROR_SUCCESS )
-        WideCharToMultiByte(CP_ACP, 0, szwGuid, -1, lpguid, GUID_SIZE, NULL, NULL);
-
-    return r;
-}
-
-UINT WINAPI MsiEnumProductsW(DWORD index, LPWSTR lpguid)
-{
-    HKEY hkeyFeatures = 0;
-    DWORD r;
-    WCHAR szKeyName[33];
-
-    TRACE("%ld %p\n",index,lpguid);
-
-    if (NULL == lpguid)
-        return ERROR_INVALID_PARAMETER;
-
-    r = MSIREG_OpenFeatures(&hkeyFeatures);
-    if( r != ERROR_SUCCESS )
-        goto end;
-
-    r = RegEnumKeyW(hkeyFeatures, index, szKeyName, GUID_SIZE);
-
-    unsquash_guid(szKeyName, lpguid);
-
-end:
-
-    if( hkeyFeatures )
-        RegCloseKey(hkeyFeatures);
-
-    return r;
-}
-
-UINT WINAPI MsiEnumFeaturesA(LPCSTR szProduct, DWORD index, 
-      LPSTR szFeature, LPSTR szParent)
-{
-    DWORD r;
-    WCHAR szwFeature[GUID_SIZE], szwParent[GUID_SIZE];
-    LPWSTR szwProduct = NULL;
-
-    TRACE("%s %ld %p %p\n",debugstr_a(szProduct),index,szFeature,szParent);
-
-    if( szProduct )
-    {
-        UINT len = MultiByteToWideChar( CP_ACP, 0, szProduct, -1, NULL, 0 );
-        szwProduct = HeapAlloc( GetProcessHeap(), 0, len * sizeof (WCHAR) );
-        if( szwProduct )
-            MultiByteToWideChar( CP_ACP, 0, szProduct, -1, szwProduct, len );
-        else
-            return ERROR_FUNCTION_FAILED;
-    }
-
-    r = MsiEnumFeaturesW(szwProduct, index, szwFeature, szwParent);
-    if( r == ERROR_SUCCESS )
-    {
-        WideCharToMultiByte(CP_ACP, 0, szwFeature, -1,
-                            szFeature, GUID_SIZE, NULL, NULL);
-        WideCharToMultiByte(CP_ACP, 0, szwParent, -1,
-                            szParent, GUID_SIZE, NULL, NULL);
-    }
-
-    HeapFree( GetProcessHeap(), 0, szwProduct);
-
-    return r;
-}
-
-UINT WINAPI MsiEnumFeaturesW(LPCWSTR szProduct, DWORD index, 
-      LPWSTR szFeature, LPWSTR szParent)
-{
-    HKEY hkeyProduct = 0;
-    DWORD r, sz;
-
-    TRACE("%s %ld %p %p\n",debugstr_w(szProduct),index,szFeature,szParent);
-
-    r = MSIREG_OpenFeaturesKey(szProduct,&hkeyProduct,FALSE);
-    if( r != ERROR_SUCCESS )
-        goto end;
-
-    sz = GUID_SIZE;
-    r = RegEnumValueW(hkeyProduct, index, szFeature, &sz, NULL, NULL, NULL, NULL);
-
-end:
-    if( hkeyProduct )
-        RegCloseKey(hkeyProduct);
-
-    return r;
-}
-
-UINT WINAPI MsiEnumComponentsA(DWORD index, LPSTR lpguid)
-{
-    DWORD r;
-    WCHAR szwGuid[GUID_SIZE];
-
-    TRACE("%ld %p\n",index,lpguid);
-
-    r = MsiEnumComponentsW(index, szwGuid);
-    if( r == ERROR_SUCCESS )
-        WideCharToMultiByte(CP_ACP, 0, szwGuid, -1, lpguid, GUID_SIZE, NULL, NULL);
-
-    return r;
-}
-
-UINT WINAPI MsiEnumComponentsW(DWORD index, LPWSTR lpguid)
-{
-    HKEY hkeyComponents = 0;
-    DWORD r;
-    WCHAR szKeyName[33];
-
-    TRACE("%ld %p\n",index,lpguid);
-
-    r = MSIREG_OpenComponents(&hkeyComponents);
-    if( r != ERROR_SUCCESS )
-        goto end;
-
-    r = RegEnumKeyW(hkeyComponents, index, szKeyName, GUID_SIZE);
-
-    unsquash_guid(szKeyName, lpguid);
-
-end:
-
-    if( hkeyComponents )
-        RegCloseKey(hkeyComponents);
-
-    return r;
-}
-
-UINT WINAPI MsiEnumClientsA(LPCSTR szComponent, DWORD index, LPSTR szProduct)
-{
-    DWORD r;
-    WCHAR szwProduct[GUID_SIZE];
-    LPWSTR szwComponent = NULL;
-
-    TRACE("%s %ld %p\n",debugstr_a(szComponent),index,szProduct);
-
-    if( szComponent )
-    {
-        UINT len = MultiByteToWideChar( CP_ACP, 0, szComponent, -1, NULL, 0 );
-        szwComponent = HeapAlloc( GetProcessHeap(), 0, len * sizeof (WCHAR) );
-        if( szwComponent )
-            MultiByteToWideChar( CP_ACP, 0, szComponent, -1, szwComponent, len );
-        else
-            return ERROR_FUNCTION_FAILED;
-    }
-
-    r = MsiEnumClientsW(szComponent?szwComponent:NULL, index, szwProduct);
-    if( r == ERROR_SUCCESS )
-    {
-        WideCharToMultiByte(CP_ACP, 0, szwProduct, -1,
-                            szProduct, GUID_SIZE, NULL, NULL);
-    }
-
-    HeapFree( GetProcessHeap(), 0, szwComponent);
-
-    return r;
-}
-
-UINT WINAPI MsiEnumClientsW(LPCWSTR szComponent, DWORD index, LPWSTR szProduct)
-{
-    HKEY hkeyComp = 0;
-    DWORD r, sz;
-    WCHAR szValName[GUID_SIZE];
-
-    TRACE("%s %ld %p\n",debugstr_w(szComponent),index,szProduct);
-
-    r = MSIREG_OpenComponentsKey(szComponent,&hkeyComp,FALSE);
-    if( r != ERROR_SUCCESS )
-        goto end;
-
-    sz = GUID_SIZE;
-    r = RegEnumValueW(hkeyComp, index, szValName, &sz, NULL, NULL, NULL, NULL);
-    if( r != ERROR_SUCCESS )
-        goto end;
-
-    unsquash_guid(szValName, szProduct);
-
-end:
-    if( hkeyComp )
-        RegCloseKey(hkeyComp);
-
-    return r;
-}
-
-UINT WINAPI MsiEnumComponentQualifiersA( LPSTR szComponent, DWORD iIndex,
-                LPSTR lpQualifierBuf, DWORD* pcchQualifierBuf,
-                LPSTR lpApplicationDataBuf, DWORD* pcchApplicationDataBuf)
-{
-    FIXME("%s %08lx %p %p %p %p\n", debugstr_a(szComponent), iIndex,
-          lpQualifierBuf, pcchQualifierBuf, lpApplicationDataBuf,
-          pcchApplicationDataBuf);
-    return ERROR_CALL_NOT_IMPLEMENTED;
-}
-
-UINT WINAPI MsiEnumComponentQualifiersW( LPWSTR szComponent, DWORD iIndex,
-                LPWSTR lpQualifierBuf, DWORD* pcchQualifierBuf,
-                LPWSTR lpApplicationDataBuf, DWORD* pcchApplicationDataBuf )
-{
-    FIXME("%s %08lx %p %p %p %p\n", debugstr_w(szComponent), iIndex,
-          lpQualifierBuf, pcchQualifierBuf, lpApplicationDataBuf,
-          pcchApplicationDataBuf);
-    return ERROR_CALL_NOT_IMPLEMENTED;
-}
-
 UINT WINAPI MsiProvideAssemblyA( LPCSTR szAssemblyName, LPCSTR szAppContext,
                 DWORD dwInstallMode, DWORD dwAssemblyInfo, LPSTR lpPathBuf,
                 DWORD* pcchPathBuf ) 
@@ -1678,22 +1465,6 @@ BOOL WINAPI MSI_DllCanUnloadNow(void)
     return S_FALSE;
 }
 
-UINT WINAPI MsiEnumRelatedProductsW(LPCWSTR szUpgradeCode, DWORD dwReserved,
-                                    DWORD iProductIndex, LPWSTR lpProductBuf)
-{
-    FIXME("%s %lu %lu %p\n", debugstr_w(szUpgradeCode), dwReserved,
-          iProductIndex, lpProductBuf);
-    return ERROR_CALL_NOT_IMPLEMENTED;
-}
-
-UINT WINAPI MsiEnumRelatedProductsA(LPCSTR szUpgradeCode, DWORD dwReserved,
-                                    DWORD iProductIndex, LPSTR lpProductBuf)
-{
-    FIXME("%s %lu %lu %p\n", debugstr_a(szUpgradeCode), dwReserved,
-          iProductIndex, lpProductBuf);
-    return ERROR_CALL_NOT_IMPLEMENTED;
-}
-
 UINT WINAPI MsiGetFeatureUsageW(LPCWSTR szProduct, LPCWSTR szFeature,
                                 DWORD* pdwUseCount, WORD* pwDateUsed)
 {


More information about the wine-patches mailing list