kernel32: Fix two tests that fail in win2k3 and modify LoadLibraryEx to match this behavior.

This commit is contained in:
James Hawkins 2008-09-02 01:01:59 -05:00 committed by Alexandre Julliard
parent b1ff962182
commit 731306bf78
2 changed files with 16 additions and 9 deletions

View File

@ -922,6 +922,12 @@ HMODULE WINAPI LoadLibraryExW(LPCWSTR libnameW, HANDLE hfile, DWORD flags)
UNICODE_STRING wstr; UNICODE_STRING wstr;
HMODULE res; HMODULE res;
if (hfile)
{
SetLastError(ERROR_INVALID_PARAMETER);
return 0;
}
if (!libnameW) if (!libnameW)
{ {
SetLastError(ERROR_INVALID_PARAMETER); SetLastError(ERROR_INVALID_PARAMETER);

View File

@ -245,13 +245,12 @@ static void testLoadLibraryEx(void)
SetLastError(0xdeadbeef); SetLastError(0xdeadbeef);
hmodule = LoadLibraryExA("testfile.dll", hfile, 0); hmodule = LoadLibraryExA("testfile.dll", hfile, 0);
ok(hmodule == 0, "Expected 0, got %p\n", hmodule); ok(hmodule == 0, "Expected 0, got %p\n", hmodule);
todo_wine ok(GetLastError() == ERROR_SHARING_VIOLATION ||
{ GetLastError() == ERROR_INVALID_PARAMETER, /* win2k3 */
ok(GetLastError() == ERROR_SHARING_VIOLATION, "Expected ERROR_SHARING_VIOLATION or ERROR_INVALID_PARAMETER, got %d\n",
"Expected ERROR_SHARING_VIOLATION, got %d\n", GetLastError()); GetLastError());
}
/* has nothing to do with hFile */ /* try to open a file that is locked */
SetLastError(0xdeadbeef); SetLastError(0xdeadbeef);
hmodule = LoadLibraryExA("testfile.dll", NULL, 0); hmodule = LoadLibraryExA("testfile.dll", NULL, 0);
ok(hmodule == 0, "Expected 0, got %p\n", hmodule); ok(hmodule == 0, "Expected 0, got %p\n", hmodule);
@ -261,12 +260,14 @@ static void testLoadLibraryEx(void)
"Expected ERROR_SHARING_VIOLATION, got %d\n", GetLastError()); "Expected ERROR_SHARING_VIOLATION, got %d\n", GetLastError());
} }
/* one last try with hFile */ /* lpFileName does not matter */
SetLastError(0xdeadbeef); SetLastError(0xdeadbeef);
hmodule = LoadLibraryExA(NULL, hfile, 0); hmodule = LoadLibraryExA(NULL, hfile, 0);
ok(hmodule == 0, "Expected 0, got %p\n", hmodule); ok(hmodule == 0, "Expected 0, got %p\n", hmodule);
ok(GetLastError() == ERROR_MOD_NOT_FOUND, ok(GetLastError() == ERROR_MOD_NOT_FOUND ||
"Expected ERROR_MOD_NOT_FOUND, got %d\n", GetLastError()); GetLastError() == ERROR_INVALID_PARAMETER, /* win2k3 */
"Expected ERROR_MOD_NOT_FOUND or ERROR_INVALID_PARAMETER, got %d\n",
GetLastError());
CloseHandle(hfile); CloseHandle(hfile);