Implmenet  IDxDiagContainerImpl_GetNumberOfProps, IDxDiagContainerImpl_EnumPropNames, IDxDiagContainerImpl_GetProp  working fine in windows but in reactos we are missing some regvalues (alot). This change should be commit to wine.
Modified: trunk/reactos/lib/ddraw/ddraw.xml
Modified: trunk/reactos/lib/devenum/devenum.xml
Modified: trunk/reactos/lib/dplay/dplay.xml
Modified: trunk/reactos/lib/dxdiagn/container.c
Modified: trunk/reactos/lib/dxdiagn/dxdiag_private.h

Modified: trunk/reactos/lib/ddraw/ddraw.xml
--- trunk/reactos/lib/ddraw/ddraw.xml	2005-12-03 19:40:52 UTC (rev 19843)
+++ trunk/reactos/lib/ddraw/ddraw.xml	2005-12-03 20:53:23 UTC (rev 19844)
@@ -1,5 +1,6 @@
 <module name="ddraw" type="win32dll" installbase="system32" installname="ddraw.dll">
-	<importlibrary definition="ddraw.def" />
+  <autoregister infsection="OleControlDlls" type="DllRegisterServer" />
+  <importlibrary definition="ddraw.def" />
 	<include base="ddraw">.</include>	
 	<define name="UNICODE" />
 	<define name="__USE_W32API" />

Modified: trunk/reactos/lib/devenum/devenum.xml
--- trunk/reactos/lib/devenum/devenum.xml	2005-12-03 19:40:52 UTC (rev 19843)
+++ trunk/reactos/lib/devenum/devenum.xml	2005-12-03 20:53:23 UTC (rev 19844)
@@ -1,4 +1,5 @@
 <module name="devenum" type="win32dll" baseaddress="${BASEADDRESS_DEVENUM}" installbase="system32" installname="devenum.dll" allowwarnings="true">
+  <autoregister infsection="OleControlDlls" type="DllRegisterServer" />
 	<importlibrary definition="devenum.spec.def" />
 	<include base="devenum">.</include>
 	<include base="ReactOS">include/wine</include>

Modified: trunk/reactos/lib/dplay/dplay.xml
--- trunk/reactos/lib/dplay/dplay.xml	2005-12-03 19:40:52 UTC (rev 19843)
+++ trunk/reactos/lib/dplay/dplay.xml	2005-12-03 20:53:23 UTC (rev 19844)
@@ -1,4 +1,4 @@
-<module name="dplay" type="win32dll" baseaddress="${BASEADDRESS_DPLAY}" installbase="system32" installname="dplay.dll">
+<module name="dplay" type="win32dll" baseaddress="${BASEADDRESS_DPLAY}" installbase="system32" installname="dplay.dll">  
 	<importlibrary definition="dplay.spec.def" />
 	<include base="dinput8">.</include>
 	<include base="ReactOS">include/wine</include>

Modified: trunk/reactos/lib/dxdiagn/container.c
--- trunk/reactos/lib/dxdiagn/container.c	2005-12-03 19:40:52 UTC (rev 19843)
+++ trunk/reactos/lib/dxdiagn/container.c	2005-12-03 20:53:23 UTC (rev 19844)
@@ -20,9 +20,9 @@
  */
 
 #include "config.h"
-#include "dxdiag_private.h"
 #include "wine/debug.h"
 #include "wine/unicode.h"
+#include "dxdiag_private.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(dxdiag);
 
@@ -120,21 +120,73 @@
   return E_INVALIDARG;
 }
 
-HRESULT WINAPI IDxDiagContainerImpl_GetNumberOfProps(PDXDIAGCONTAINER iface, DWORD* pdwCount) {
-  /* IDxDiagContainerImpl *This = (IDxDiagContainerImpl *)iface; */
-  FIXME("(%p, %p): stub\n", iface, pdwCount);
+HRESULT WINAPI IDxDiagContainerImpl_GetNumberOfProps(PDXDIAGCONTAINER iface, DWORD* pdwCount) 
+{
+  IDxDiagContainerImpl *This = (IDxDiagContainerImpl *)iface;   
+    
+         
+  *pdwCount = This->nSubpProperty;
+
+   TRACE("(%p)->(%ld)\n", iface, *pdwCount); 
+   
   return S_OK;
 }
 
 HRESULT WINAPI IDxDiagContainerImpl_EnumPropNames(PDXDIAGCONTAINER iface, DWORD dwIndex, LPWSTR pwszPropName, DWORD cchPropName) {
-  /* IDxDiagContainerImpl *This = (IDxDiagContainerImpl *)iface; */
-  FIXME("(%p, %lu, %s, %lu): stub\n", iface, dwIndex, debugstr_w(pwszPropName), cchPropName);
-  return S_OK;
+   
+    IDxDiagContainerImpl *This = (IDxDiagContainerImpl *)iface; 
+    
+    if (This->pProperty == NULL)
+    {
+        
+        This->pProperty = (Contain_Property *)HeapAlloc(GetProcessHeap(), 
+                                                        HEAP_ZERO_MEMORY, 
+                                                        sizeof(Contain_Property) *(dwIndex+1));        
+
+        This->nSubpProperty = dwIndex+1;                                                    
+    }                                                        
+    else
+    {
+      if (dwIndex>=This->nSubpProperty)
+      {       
+         This->pProperty = (Contain_Property *) HeapReAlloc(GetProcessHeap(), 
+                                                            HEAP_ZERO_MEMORY, This->pProperty,
+                                                            sizeof(Contain_Property) *(dwIndex+1));        
+        This->nSubpProperty = dwIndex+1; 
+      }
+          
+    }   
+                                                                                                                             
+    lstrcpynW(pwszPropName, This->pProperty[dwIndex].pwszPropName, cchPropName);
+
+    TRACE("(%p)->(%s)\n", iface, debugstr_w(This->pProperty[dwIndex].pwszPropName));
+    return S_OK;
 }
 
-HRESULT WINAPI IDxDiagContainerImpl_GetProp(PDXDIAGCONTAINER iface, LPCWSTR pwszPropName, VARIANT* pvarProp) {
-  /* IDxDiagContainerImpl *This = (IDxDiagContainerImpl *)iface; */
-  FIXME("(%p, %s, %p): stub\n", iface, debugstr_w(pwszPropName), pvarProp);
+HRESULT WINAPI IDxDiagContainerImpl_GetProp(PDXDIAGCONTAINER iface, LPCWSTR pwszPropName, VARIANT* pvarProp) 
+{
+  IDxDiagContainerImpl *This = (IDxDiagContainerImpl *)iface; 
+  Contain_Property *propert = This->pProperty;
+  TRACE("(%p)->(%s, %p)\n", iface, debugstr_w(pwszPropName), pvarProp); 
+      
+    while (propert->pwszPropName && lstrcmpW(propert->pwszPropName, pwszPropName))
+    {
+       propert += sizeof(Contain_Property);         
+    }
+
+    if (!propert->pwszPropName)
+        return E_INVALIDARG;
+
+    /* FIXME
+    if (property->pvarProp == VT_EMPTY)
+        return E_INVALIDARG;
+        
+    if (property->pvarProp.vt == VT_ERROR)
+        return E_INVALIDARG;
+    */
+    
+    memcpy(pvarProp,&propert->pvarProp, sizeof(VARIANT));
+            
   return S_OK;
 }
 

Modified: trunk/reactos/lib/dxdiagn/dxdiag_private.h
--- trunk/reactos/lib/dxdiagn/dxdiag_private.h	2005-12-03 19:40:52 UTC (rev 19843)
+++ trunk/reactos/lib/dxdiagn/dxdiag_private.h	2005-12-03 20:53:23 UTC (rev 19844)
@@ -48,6 +48,12 @@
 /*****************************************************************************
  * IDxDiagProvider implementation structure
  */
+typedef struct Contain_Property
+{
+    WCHAR *pwszPropName;
+    VARIANT pvarProp;    
+} Contain_Property;
+
 struct IDxDiagProviderImpl {
   /* IUnknown fields */
   IDxDiagProviderVtbl *lpVtbl;
@@ -92,6 +98,8 @@
   /* IDxDiagContainer fields */
   IDxDiagContainerImpl_SubContainer* subContainers;
   DWORD nSubContainers;
+  Contain_Property* pProperty;
+  DWORD nSubpProperty;
 };
 
 /* IUnknown: */