d3dxof: Create FileData object using its constructor. Fix return value of CreateEnumObject.
diff --git a/dlls/d3dxof/d3dxof.c b/dlls/d3dxof/d3dxof.c
index c141c42..dff299d 100644
--- a/dlls/d3dxof/d3dxof.c
+++ b/dlls/d3dxof/d3dxof.c
@@ -156,7 +156,6 @@
 
 /*** IDirectXFile methods ***/
 static HRESULT WINAPI IDirectXFileImpl_CreateEnumObject(IDirectXFile* iface, LPVOID pvSource, DXFILELOADOPTIONS dwLoadOptions, LPDIRECTXFILEENUMOBJECT* ppEnumObj)
-
 {
   IDirectXFileImpl *This = (IDirectXFileImpl *)iface;
   IDirectXFileEnumObjectImpl* object;
@@ -1126,17 +1125,17 @@
 {
   IDirectXFileEnumObjectImpl *This = (IDirectXFileEnumObjectImpl *)iface;
   IDirectXFileDataImpl* object;
+  HRESULT hr;
   
   FIXME("(%p/%p)->(%p) stub!\n", This, iface, ppDataObj); 
 
-  object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectXFileDataImpl));
-
-  object->lpVtbl.lpVtbl = &IDirectXFileData_Vtbl;
-  object->ref = 1;
+  hr = IDirectXFileDataImpl_Create(&object);
+  if (!SUCCEEDED(hr))
+    return hr;
 
   *ppDataObj = (LPDIRECTXFILEDATA)object;
 
-  return DXFILEERR_BADVALUE;
+  return DXFILE_OK;
 }
 
 static HRESULT WINAPI IDirectXFileEnumObjectImpl_GetDataObjectById(IDirectXFileEnumObject* iface, REFGUID rguid, LPDIRECTXFILEDATA* ppDataObj)