From 4615f4db3ad665957995c574236072a7abb4eb67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Mon, 8 May 2017 22:50:38 +0000 Subject: [PATCH] mfplat: Implement MFTUnregister. Signed-off-by: Alistair Leslie-Hughes Signed-off-by: Alexandre Julliard --- 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 19e3cab605a..b54dc9d8d29 100644 --- a/dlls/mfplat/main.c +++ b/dlls/mfplat/main.c @@ -163,6 +163,44 @@ HRESULT WINAPI MFTRegister(CLSID clsid, GUID category, LPWSTR name, UINT32 flags return hr; } +/*********************************************************************** + * 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.@) */ diff --git a/dlls/mfplat/mfplat.spec b/dlls/mfplat/mfplat.spec index 042a9199f36..dc6f4029b90 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 2eca9c32dee..a37d6559286 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 */