Module: wine Branch: master Commit: 4615f4db3ad665957995c574236072a7abb4eb67 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4615f4db3ad665957995c57423... Author: Michael Müller <michael(a)fds-team.de> Date: Mon May 8 22:50:38 2017 +0000 mfplat: Implement MFTUnregister. Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Signed-off-by: Alexandre Julliard <julliard(a)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 */