Implmenet IDxDiagContainerImpl_GetNumberOfProps, IDxDiagContainerImpl_EnumPropNames...
authorMagnus Olsen <magnus@greatlord.com>
Sat, 3 Dec 2005 20:53:23 +0000 (20:53 +0000)
committerMagnus Olsen <magnus@greatlord.com>
Sat, 3 Dec 2005 20:53:23 +0000 (20:53 +0000)
svn path=/trunk/; revision=19844

reactos/lib/ddraw/ddraw.xml
reactos/lib/devenum/devenum.xml
reactos/lib/dplay/dplay.xml
reactos/lib/dxdiagn/container.c
reactos/lib/dxdiagn/dxdiag_private.h

index 75df1e8..7528591 100644 (file)
@@ -1,5 +1,6 @@
 <module name="ddraw" type="win32dll" installbase="system32" installname="ddraw.dll">\r
-       <importlibrary definition="ddraw.def" />\r
+  <autoregister infsection="OleControlDlls" type="DllRegisterServer" />\r
+  <importlibrary definition="ddraw.def" />\r
        <include base="ddraw">.</include>       \r
        <define name="UNICODE" />\r
        <define name="__USE_W32API" />\r
index b2c0c01..ef6b2ae 100644 (file)
@@ -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>
index ae81c5a..77d0a94 100644 (file)
@@ -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>
index 04348c0..63acaad 100644 (file)
@@ -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 @@ HRESULT WINAPI IDxDiagContainerImpl_GetChildContainer(PDXDIAGCONTAINER iface, LP
   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;
 }
 
index 2837226..8336098 100644 (file)
@@ -48,6 +48,12 @@ extern IDxDiagProviderVtbl DxDiagProvider_Vtbl;
 /*****************************************************************************
  * IDxDiagProvider implementation structure
  */
+typedef struct Contain_Property
+{
+    WCHAR *pwszPropName;
+    VARIANT pvarProp;    
+} Contain_Property;
+
 struct IDxDiagProviderImpl {
   /* IUnknown fields */
   IDxDiagProviderVtbl *lpVtbl;
@@ -92,6 +98,8 @@ struct IDxDiagContainerImpl {
   /* IDxDiagContainer fields */
   IDxDiagContainerImpl_SubContainer* subContainers;
   DWORD nSubContainers;
+  Contain_Property* pProperty;
+  DWORD nSubpProperty;
 };
 
 /* IUnknown: */