25#define WIN32_NO_STATUS
76 IAssemblyEnum_AddRef(iface);
77 *ppobj = &
This->IAssemblyEnum_iface;
90 TRACE(
"(%p)->(ref before = %lu)\n",
This, refCount - 1);
101 TRACE(
"(%p)->(ref before = %lu)\n",
This, refCount + 1);
110 IAssemblyName_Release(asmname->
name);
137 *ppName = asmname->
name;
138 IAssemblyName_AddRef(*ppName);
149 TRACE(
"(%p)\n", iface);
158 FIXME(
"(%p, %p) stub!\n", iface, ppEnum);
175 static const WCHAR ss_fmt[] = {
'%',
's',
'\\',
'%',
's',0};
176 static const WCHAR sss_fmt[] = {
'%',
's',
'\\',
'%',
's',
'_',
'_',
'%',
's',0};
177 static const WCHAR ssss_fmt[] = {
'%',
's',
'\\',
'%',
's',
'%',
's',
'_',
'_',
'%',
's',0};
178 static const WCHAR ver_fmt[] = {
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',0};
179 static const WCHAR star_fmt[] = {
'%',
's',
'\\',
'*',0};
180 static const WCHAR star_prefix_fmt[] = {
'%',
's',
'\\',
'%',
's',
'*',0};
184 DWORD size, major_size, minor_size, build_size, revision_size;
201 hr = IAssemblyName_GetName(
name, &
size, disp);
209 major_size =
sizeof(
major);
210 IAssemblyName_GetProperty(
name, ASM_NAME_MAJOR_VERSION, &
major, &major_size);
212 minor_size =
sizeof(
minor);
213 IAssemblyName_GetProperty(
name, ASM_NAME_MINOR_VERSION, &
minor, &minor_size);
215 build_size =
sizeof(
build);
216 IAssemblyName_GetProperty(
name, ASM_NAME_BUILD_NUMBER, &
build, &build_size);
219 IAssemblyName_GetProperty(
name, ASM_NAME_REVISION_NUMBER, &
revision, &revision_size);
221 if (!major_size || !minor_size || !build_size || !revision_size) verptr =
star;
229 IAssemblyName_GetProperty(
name, ASM_NAME_PUBLIC_KEY_TOKEN,
token, &
size);
235 pubkeyptr = token_str;
248 WORD version1, version2;
255 IAssemblyName_GetProperty(asmname1->
name, ASM_NAME_NAME,
name1, &
size);
257 IAssemblyName_GetProperty(asmname2->
name, ASM_NAME_NAME,
name2, &
size);
261 for (
i = ASM_NAME_MAJOR_VERSION;
i < ASM_NAME_CULTURE;
i++)
263 size =
sizeof(version1);
264 IAssemblyName_GetProperty(asmname1->
name,
i, &version1, &
size);
265 size =
sizeof(version2);
266 IAssemblyName_GetProperty(asmname2->
name,
i, &version2, &
size);
268 if (version1 < version2)
return -1;
269 if (version1 > version2)
return 1;
274 size =
sizeof(token1);
275 IAssemblyName_GetProperty(asmname1->
name, ASM_NAME_PUBLIC_KEY_TOKEN, token1, &
size);
276 size =
sizeof(token2);
277 IAssemblyName_GetProperty(asmname2->
name, ASM_NAME_PUBLIC_KEY_TOKEN, token2, &
size);
308 static const WCHAR dot[] = {
'.',0};
309 static const WCHAR dotdot[] = {
'.',
'.',0};
310 static const WCHAR dblunder[] = {
'_',
'_',0};
311 static const WCHAR path_fmt[] = {
'%',
's',
'\\',
'%',
's',
'\\',
'%',
's',
'.',
'd',
'l',
'l',0};
312 static const WCHAR name_fmt[] = {
'%',
's',
',',
' ',
'V',
'e',
'r',
's',
'i',
'o',
'n',
'=',
'%',
's',
',',
' ',
313 'C',
'u',
'l',
't',
'u',
'r',
'e',
'=',
'n',
'e',
'u',
't',
'r',
'a',
'l',
',',
' ',
314 'P',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',
'=',
'%',
's',0};
315 static const WCHAR ss_fmt[] = {
'%',
's',
'\\',
'%',
's',0};
360 if (!(asmname =
malloc(
sizeof(*asmname))))
377 IAssemblyName_Release(asmname->
name);
398 static const WCHAR gac[] = {
'\\',
'G',
'A',
'C',0};
399 static const WCHAR gac_32[] = {
'\\',
'G',
'A',
'C',
'_',
'3',
'2',0};
400 static const WCHAR gac_64[] = {
'\\',
'G',
'A',
'C',
'_',
'6',
'4',0};
401 static const WCHAR gac_msil[] = {
'\\',
'G',
'A',
'C',
'_',
'M',
'S',
'I',
'L',0};
402 static const WCHAR v40[] = {
'v',
'4',
'.',
'0',
'_',0};
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
#define INVALID_HANDLE_VALUE
static const WCHAR version[]
HRESULT IAssemblyName_SetPath(IAssemblyName *iface, LPCWSTR path)
HRESULT WINAPI CreateAssemblyNameObject(IAssemblyName **ppAssemblyNameObj, LPCWSTR szAssemblyName, DWORD dwFlags, LPVOID pvReserved)
HRESULT WINAPI GetCachePath(ASM_CACHE_FLAGS dwCacheFlags, LPWSTR pwzCachePath, PDWORD pcchPath)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
VOID WINAPI GetNativeSystemInfo(IN LPSYSTEM_INFO lpSystemInfo)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
_ACRTIMP wchar_t *__cdecl wcsstr(const wchar_t *, const wchar_t *)
static void token_to_str(BYTE *bytes, LPWSTR str)
GLint GLint GLsizei GLsizei GLsizei depth
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
static LPCWSTR LPVOID pvReserved
#define PROCESSOR_ARCHITECTURE_AMD64
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define IsEqualIID(riid1, riid2)
__WINE_SERVER_LIST_INLINE struct list * list_next(const struct list *list, const struct list *elem)
#define LIST_FOR_EACH(cursor, list)
__WINE_SERVER_LIST_INLINE void list_add_before(struct list *elem, struct list *to_add)
#define LIST_FOR_EACH_SAFE(cursor, cursor2, list)
IAssemblyEnum IAssemblyEnum_iface
_Field_z_ WCHAR cFileName[MAX_PATH]
Character const *const prefix
#define CONTAINING_RECORD(address, type, field)
@ CANOF_PARSE_DISPLAY_NAME