ole32: Add a test that shows CoFreeUnusedLibraries only frees unused libraries from the current apartment.
This commit is contained in:
parent
c40f1b6659
commit
1d8879bccc
|
@ -27,6 +27,7 @@
|
|||
#include "winbase.h"
|
||||
#include "objbase.h"
|
||||
#include "shlguid.h"
|
||||
#include "urlmon.h" /* for CLSID_FileProtocol */
|
||||
|
||||
#include "wine/test.h"
|
||||
|
||||
|
@ -701,6 +702,57 @@ static void test_CoRegisterClassObject(void)
|
|||
CoUninitialize();
|
||||
}
|
||||
|
||||
static DWORD CALLBACK free_libraries_thread(LPVOID p)
|
||||
{
|
||||
CoFreeUnusedLibraries();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline BOOL is_module_loaded(const char *module)
|
||||
{
|
||||
return GetModuleHandle(module) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
static void test_CoFreeUnusedLibraries(void)
|
||||
{
|
||||
HRESULT hr;
|
||||
IUnknown *pUnk;
|
||||
DWORD tid;
|
||||
HANDLE thread;
|
||||
|
||||
pCoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
|
||||
|
||||
ok(!is_module_loaded("urlmon.dll"), "urlmon.dll shouldn't be loaded\n");
|
||||
|
||||
hr = CoCreateInstance(&CLSID_FileProtocol, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)&pUnk);
|
||||
if (hr == REGDB_E_CLASSNOTREG)
|
||||
{
|
||||
trace("IE not installed so can't run CoFreeUnusedLibraries test\n");
|
||||
return;
|
||||
}
|
||||
ok_ole_success(hr, "CoCreateInstance");
|
||||
|
||||
ok(is_module_loaded("urlmon.dll"), "urlmon.dll should be loaded\n");
|
||||
|
||||
IUnknown_Release(pUnk);
|
||||
|
||||
ok(is_module_loaded("urlmon.dll"), "urlmon.dll should be loaded\n");
|
||||
|
||||
thread = CreateThread(NULL, 0, free_libraries_thread, NULL, 0, &tid);
|
||||
WaitForSingleObject(thread, INFINITE);
|
||||
CloseHandle(thread);
|
||||
|
||||
todo_wine
|
||||
ok(is_module_loaded("urlmon.dll"), "urlmon.dll should be loaded\n");
|
||||
|
||||
CoFreeUnusedLibraries();
|
||||
|
||||
ok(!is_module_loaded("urlmon.dll"), "urlmon.dll shouldn't be loaded\n");
|
||||
|
||||
CoUninitialize();
|
||||
}
|
||||
|
||||
|
||||
START_TEST(compobj)
|
||||
{
|
||||
HMODULE hOle32 = GetModuleHandle("ole32");
|
||||
|
@ -724,4 +776,5 @@ START_TEST(compobj)
|
|||
test_CoMarshalInterface();
|
||||
test_CoMarshalInterThreadInterfaceInStream();
|
||||
test_CoRegisterClassObject();
|
||||
test_CoFreeUnusedLibraries();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue