53 win_skip(
"mscoree.dll not available\n");
58 if (!pLoadLibraryShim)
60 win_skip(
"LoadLibraryShim not available\n");
65 hr = pLoadLibraryShim(
L"fusion.dll",
NULL,
NULL, &hfusion);
68 win_skip(
"fusion.dll not available\n");
73 pCreateAssemblyEnum = (
void *)
GetProcAddress(hfusion,
"CreateAssemblyEnum");
74 pCreateAssemblyNameObject = (
void *)
GetProcAddress(hfusion,
"CreateAssemblyNameObject");
77 if (!pCreateAssemblyEnum ||
78 !pCreateAssemblyNameObject || !pGetCachePath)
80 win_skip(
"fusion.dll not implemented\n");
111 new_path[
len - 1] = 0;
127 if(!(slash =
strrchr(new_path,
'\\')))
133 len = slash - new_path;
141 new_path[
len] =
'\\';
179 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
180 ok(asmname !=
NULL,
"Expected non-NULL asmname\n");
193 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
194 ok(asmenum !=
NULL,
"Expected non-NULL asmenum\n");
196 IAssemblyEnum_Release(asmenum);
203 "Expected asmenum to be unchanged, got %p\n", asmenum);
210 "Expected asmenum to be unchanged, got %p\n", asmenum);
212 IAssemblyName_Release(asmname);
223 static const char format[] =
"%s, Version=%s, Culture=%s, PublicKeyToken=%s";
239 if (!
strcmp(ffd.cFileName,
".") || !
strcmp(ffd.cFileName,
".."))
continue;
250 if (!(
ptr =
strchr(ffd.cFileName,
'_')))
continue;
286 if (!
strcmp(ffd.cFileName,
".") || !
strcmp(ffd.cFileName,
".."))
continue;
309 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
328 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
329 ok(asmenum !=
NULL,
"Expected non-NULL asmenum\n");
331 while (IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0) ==
S_OK)
352 ok(found,
"Extra assembly enumerated: %s\n", disp);
353 IAssemblyName_Release(
next);
358 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
361 "Expected next to be unchanged, got %p\n",
next);
367 ok(
FALSE,
"Assembly not enumerated: %s\n", asmname->
data);
373 IAssemblyEnum_Release(asmenum);
389 lstrcpyA(
exp[0],
"wine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16a3fcd171e93a8d");
390 lstrcpyA(
exp[1],
"wine, Version=1.0.1.2, Culture=neutral, PublicKeyToken=123456789abcdef0");
391 lstrcpyA(
exp[2],
"wine, Version=1.0.1.2, Culture=neutral, PublicKeyToken=16a3fcd171e93a8d");
392 lstrcpyA(
exp[3],
"Wine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16a3fcd171e93a8d");
393 lstrcpyA(
exp[4],
"Wine, Version=1.0.1.2, Culture=neutral, PublicKeyToken=123456789abcdef0");
394 lstrcpyA(
exp[5],
"Wine, Version=1.0.1.2, Culture=neutral, PublicKeyToken=16a3fcd171e93a8d");
398 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
406 sprintf(
path,
"%s\\Wine\\1.0.0.0__16a3fcd171e93a8d", gac);
412 win_skip(
"Failed to open file %s, skipping name enumeration tests\n",
path);
416 sprintf(
path,
"%s\\Wine\\1.0.1.2__16a3fcd171e93a8d", gac);
422 win_skip(
"Failed to open file %s, skipping name enumeration tests\n",
path);
426 sprintf(
path,
"%s\\Wine\\1.0.1.2__123456789abcdef0", gac);
432 win_skip(
"Failed to open file %s, skipping name enumeration tests\n",
path);
440 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
441 ok(asmname !=
NULL,
"Expected non-NULL asmname\n");
445 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
446 ok(asmenum !=
NULL,
"Expected non-NULL asmenum\n");
449 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
450 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
456 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
458 "Expected \"%s\" or \"%s\", got \"%s\"\n",
exp[0],
exp[1], disp);
460 IAssemblyName_Release(
next);
463 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
464 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
470 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
473 "Expected \"%s\" or \"%s\", got \"%s\"\n",
exp[1],
exp[2], disp);
475 IAssemblyName_Release(
next);
478 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
479 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
485 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
488 "Expected \"%s\" or \"%s\", got \"%s\"\n",
exp[2],
exp[1], disp);
490 IAssemblyName_Release(
next);
493 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
496 "Expected next to be unchanged, got %p\n",
next);
498 IAssemblyEnum_Release(asmenum);
499 IAssemblyName_Release(asmname);
505 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
506 ok(asmname !=
NULL,
"Expected non-NULL asmname\n");
510 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
511 ok(asmenum !=
NULL,
"Expected non-NULL asmenum\n");
514 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
515 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
521 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
524 "Expected \"%s\" or \"%s\", got \"%s\"\n",
exp[4],
exp[5], disp);
526 IAssemblyName_Release(
next);
529 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
530 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
536 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
539 "Expected \"%s\" or \"%s\", got \"%s\"\n",
exp[5],
exp[4], disp);
541 IAssemblyName_Release(
next);
544 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
547 "Expected next to be unchanged, got %p\n",
next);
549 IAssemblyEnum_Release(asmenum);
550 IAssemblyName_Release(asmname);
553 to_widechar(namestr,
"Wine, PublicKeyToken=16a3fcd171e93a8d");
556 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
557 ok(asmname !=
NULL,
"Expected non-NULL asmname\n");
561 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
562 ok(asmenum !=
NULL,
"Expected non-NULL asmenum\n");
565 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
566 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
572 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
575 IAssemblyName_Release(
next);
578 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
579 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
585 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
588 IAssemblyName_Release(
next);
591 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
594 "Expected next to be unchanged, got %p\n",
next);
596 IAssemblyEnum_Release(asmenum);
597 IAssemblyName_Release(asmname);
603 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
604 ok(asmname !=
NULL,
"Expected non-NULL asmname\n");
608 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
609 ok(asmenum !=
NULL,
"Expected non-NULL asmenum\n");
612 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
613 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
619 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
622 IAssemblyName_Release(
next);
625 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
626 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
632 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
635 "Expected \"%s\" or \"%s\", got \"%s\"\n",
exp[1],
exp[2], disp);
637 IAssemblyName_Release(
next);
640 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
641 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
647 ok(
hr ==
S_OK,
"Expected S_OK, got %08lx\n",
hr);
650 "Expected \"%s\" or \"%s\", got \"%s\"\n",
exp[2],
exp[1], disp);
652 IAssemblyName_Release(
next);
655 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
658 "Expected next to be unchanged, got %p\n",
next);
660 IAssemblyEnum_Release(asmenum);
661 IAssemblyName_Release(asmname);
664 sprintf(
path,
"%s\\Wine\\1.0.0.0__16a3fcd171e93a8d\\Wine.dll", gac);
666 sprintf(
path,
"%s\\Wine\\1.0.1.2__16a3fcd171e93a8d\\Wine.dll", gac);
668 sprintf(
path,
"%s\\Wine\\1.0.1.2__123456789abcdef0\\Wine.dll", gac);
670 sprintf(
path,
"%s\\Wine\\1.0.0.0__16a3fcd171e93a8d", gac);
672 sprintf(
path,
"%s\\Wine\\1.0.1.2__16a3fcd171e93a8d", gac);
674 sprintf(
path,
"%s\\Wine\\1.0.1.2__123456789abcdef0", gac);
static void list_remove(struct list_entry *entry)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
static const WCHAR culture[]
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
BOOL WINAPI RemoveDirectoryA(IN LPCSTR lpPathName)
BOOL WINAPI CreateDirectoryA(IN LPCSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
BOOL WINAPI SetEndOfFile(HANDLE hFile)
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
HANDLE WINAPI FindFirstFileA(IN LPCSTR lpFileName, OUT LPWIN32_FIND_DATAA lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
BOOL WINAPI FindNextFileA(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAA lpFindFileData)
BOOL WINAPI WriteFile(_In_ HANDLE hFile, _In_reads_bytes_opt_(nNumberOfBytesToWrite) LPCVOID lpBuffer, _In_ DWORD nNumberOfBytesToWrite, _Out_opt_ LPDWORD lpNumberOfBytesWritten, _Inout_opt_ LPOVERLAPPED lpOverlapped)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
_ACRTIMP char *__cdecl strchr(const char *, int)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
_ACRTIMP char *__cdecl strrchr(const char *, int)
static const WCHAR szDllName[]
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define ERROR_ALREADY_EXISTS
static LPCWSTR LPVOID pvReserved
static unsigned __int64 next
#define offsetof(TYPE, MEMBER)
#define LIST_FOR_EACH_SAFE(cursor, cursor2, list)
#define INVALID_FILE_ATTRIBUTES
DWORD WINAPI GetLastError(void)
#define ERROR_PATH_NOT_FOUND
@ CANOF_PARSE_DISPLAY_NAME