Nikolay Sivov : wmp: Implement get_versionInfo().

Alexandre Julliard julliard at winehq.org
Mon Jun 16 12:37:49 CDT 2014


Module: wine
Branch: master
Commit: 99449fc8d41c852aa60da710570e956578665783
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=99449fc8d41c852aa60da710570e956578665783

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Sat Jun 14 09:11:29 2014 +0400

wmp: Implement get_versionInfo().

---

 dlls/wmp/Makefile.in       |    2 +-
 dlls/wmp/player.c          |   13 ++++++++++---
 dlls/wmp/rsrc.rc           |    2 ++
 dlls/wmp/tests/Makefile.in |    2 +-
 dlls/wmp/tests/oleobj.c    |   14 ++++++++++++++
 5 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/dlls/wmp/Makefile.in b/dlls/wmp/Makefile.in
index a82cc36..71ca0e5 100644
--- a/dlls/wmp/Makefile.in
+++ b/dlls/wmp/Makefile.in
@@ -1,5 +1,5 @@
 MODULE    = wmp.dll
-IMPORTS   = user32 gdi32
+IMPORTS   = user32 gdi32 oleaut32
 
 C_SRCS = \
 	oleobj.c \
diff --git a/dlls/wmp/player.c b/dlls/wmp/player.c
index e8c349b..4c11c88 100644
--- a/dlls/wmp/player.c
+++ b/dlls/wmp/player.c
@@ -159,11 +159,18 @@ static HRESULT WINAPI WMPPlayer4_get_playlistCollection(IWMPPlayer4 *iface, IWMP
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI WMPPlayer4_get_versionInfo(IWMPPlayer4 *iface, BSTR *pbstrVersionInfo)
+static HRESULT WINAPI WMPPlayer4_get_versionInfo(IWMPPlayer4 *iface, BSTR *version)
 {
+    static const WCHAR versionW[] = {'1','2','.','0','.','7','6','0','1','.','1','6','9','8','2',0};
     WindowsMediaPlayer *This = impl_from_IWMPPlayer4(iface);
-    FIXME("(%p)->(%p)\n", This, pbstrVersionInfo);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%p)\n", This, version);
+
+    if (!version)
+        return E_POINTER;
+
+    *version = SysAllocString(versionW);
+    return *version ? S_OK : E_OUTOFMEMORY;
 }
 
 static HRESULT WINAPI WMPPlayer4_launchURL(IWMPPlayer4 *iface, BSTR url)
diff --git a/dlls/wmp/rsrc.rc b/dlls/wmp/rsrc.rc
index ced1a64..3585d12 100644
--- a/dlls/wmp/rsrc.rc
+++ b/dlls/wmp/rsrc.rc
@@ -23,6 +23,8 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
 /* @makedep: wmp.rgs */
 2 WINE_REGISTRY wmp.rgs
 
+/* NOTE: when changing version value, update a string returned by
+   get_versionInfo() as well */
 #define WINE_FILEDESCRIPTION_STR "Wine Media Player"
 #define WINE_FILENAME_STR "wmp.dll"
 #define WINE_FILEVERSION 12,0,7601,16982
diff --git a/dlls/wmp/tests/Makefile.in b/dlls/wmp/tests/Makefile.in
index 52da0d7..465b878 100644
--- a/dlls/wmp/tests/Makefile.in
+++ b/dlls/wmp/tests/Makefile.in
@@ -1,4 +1,4 @@
 TESTDLL   = wmp.dll
-IMPORTS   = ole32 user32
+IMPORTS   = ole32 oleaut32 user32
 
 C_SRCS    = oleobj.c
diff --git a/dlls/wmp/tests/oleobj.c b/dlls/wmp/tests/oleobj.c
index 31087f5..875fc77 100644
--- a/dlls/wmp/tests/oleobj.c
+++ b/dlls/wmp/tests/oleobj.c
@@ -864,12 +864,14 @@ static void test_wmp(void)
     IOleInPlaceObject *ipobj;
     IPersistStreamInit *psi;
     IOleObject *oleobj;
+    IWMPCore *wmpcore;
     DWORD misc_status;
     RECT pos = {0,0,100,100};
     HWND hwnd;
     GUID guid;
     LONG ref;
     HRESULT hres;
+    BSTR str;
 
     hres = CoCreateInstance(&CLSID_WindowsMediaPlayer, NULL, CLSCTX_INPROC_SERVER, &IID_IOleObject, (void**)&oleobj);
     if(hres == REGDB_E_CLASSNOTREG) {
@@ -878,6 +880,18 @@ static void test_wmp(void)
     }
     ok(hres == S_OK, "Coult not create CLSID_WindowsMediaPlayer instance: %08x\n", hres);
 
+    hres = IOleObject_QueryInterface(oleobj, &IID_IWMPCore, (void**)&wmpcore);
+    ok(hres == S_OK, "got 0x%08x\n", hres);
+
+    hres = IWMPCore_get_versionInfo(wmpcore, NULL);
+    ok(hres == E_POINTER, "got 0x%08x\n", hres);
+
+    hres = IWMPCore_get_versionInfo(wmpcore, &str);
+    ok(hres == S_OK, "got 0x%08x\n", hres);
+    SysFreeString(str);
+
+    IWMPCore_Release(wmpcore);
+
     hres = IOleObject_QueryInterface(oleobj, &IID_IProvideClassInfo2, (void**)&class_info);
     ok(hres == S_OK, "Could not get IProvideClassInfo2 iface: %08x\n", hres);
 




More information about the wine-cvs mailing list