=?UTF-8?Q?Michael=20M=C3=BCller=20?=: mfplat: Implement MFTUnregister.

Alexandre Julliard julliard at winehq.org
Tue May 9 17:21:01 CDT 2017


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

Author: Michael Müller <michael at fds-team.de>
Date:   Mon May  8 22:50:38 2017 +0000

mfplat: Implement MFTUnregister.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mfplat/main.c      | 38 ++++++++++++++++++++++++++++++++++++++
 dlls/mfplat/mfplat.spec |  2 +-
 include/mfapi.h         |  1 +
 3 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/dlls/mfplat/main.c b/dlls/mfplat/main.c
index 19e3cab..b54dc9d 100644
--- a/dlls/mfplat/main.c
+++ b/dlls/mfplat/main.c
@@ -164,6 +164,44 @@ HRESULT WINAPI MFTRegister(CLSID clsid, GUID category, LPWSTR name, UINT32 flags
 }
 
 /***********************************************************************
+ *      MFTUnregister (mfplat.@)
+ */
+HRESULT WINAPI MFTUnregister(CLSID clsid)
+{
+    WCHAR buffer[64], category[MAX_PATH];
+    HKEY htransform, hcategory, htmp;
+    DWORD size = MAX_PATH;
+    DWORD index = 0;
+
+    TRACE("(%s)\n", debugstr_guid(&clsid));
+
+    GUIDToString(buffer, &clsid);
+
+    if (!RegOpenKeyW(HKEY_CLASSES_ROOT, transform_keyW, &htransform))
+    {
+        RegDeleteKeyW(htransform, buffer);
+        RegCloseKey(htransform);
+    }
+
+    if (!RegOpenKeyW(HKEY_CLASSES_ROOT, categories_keyW, &hcategory))
+    {
+        while (RegEnumKeyExW(hcategory, index, category, &size, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
+        {
+            if (!RegOpenKeyW(hcategory, category, &htmp))
+            {
+                RegDeleteKeyW(htmp, buffer);
+                RegCloseKey(htmp);
+            }
+            size = MAX_PATH;
+            index++;
+        }
+        RegCloseKey(hcategory);
+    }
+
+    return S_OK;
+}
+
+/***********************************************************************
  *      MFStartup (mfplat.@)
  */
 HRESULT WINAPI MFStartup(ULONG version, DWORD flags)
diff --git a/dlls/mfplat/mfplat.spec b/dlls/mfplat/mfplat.spec
index 042a919..dc6f402 100644
--- a/dlls/mfplat/mfplat.spec
+++ b/dlls/mfplat/mfplat.spec
@@ -140,7 +140,7 @@
 @ stdcall MFTRegister(int128 int128 wstr long long ptr long ptr ptr)
 @ stub MFTRegisterLocal
 @ stub MFTRegisterLocalByCLSID
-@ stub MFTUnregister
+@ stdcall MFTUnregister(int128)
 @ stub MFTUnregisterLocal
 @ stub MFTUnregisterLocalByCLSID
 @ stub MFTraceError
diff --git a/include/mfapi.h b/include/mfapi.h
index 2eca9c3..a37d655 100644
--- a/include/mfapi.h
+++ b/include/mfapi.h
@@ -39,6 +39,7 @@ HRESULT WINAPI MFTRegister(CLSID clsid, GUID category, LPWSTR name, UINT32 flags
 HRESULT WINAPI MFShutdown(void);
 HRESULT WINAPI MFStartup(ULONG version, DWORD flags);
 HRESULT WINAPI MFUnlockPlatform(void);
+HRESULT WINAPI MFTUnregister(CLSID clsid);
 HRESULT WINAPI MFGetPluginControl(IMFPluginControl**);
 
 #endif /* __WINE_MFAPI_H */




More information about the wine-cvs mailing list