25 #define WIN32_NO_STATUS 29 #define NONAMELESSUNION 30 #define NONAMELESSSTRUCT 42 #include "wine/list.h" 78 IAssemblyEnum_AddRef(iface);
79 *ppobj = &
This->IAssemblyEnum_iface;
92 TRACE(
"(%p)->(ref before = %u)\n",
This, refCount - 1);
103 TRACE(
"(%p)->(ref before = %u)\n",
This, refCount + 1);
112 IAssemblyName_Release(asmname->
name);
139 *ppName = asmname->
name;
140 IAssemblyName_AddRef(*ppName);
151 TRACE(
"(%p)\n", iface);
160 FIXME(
"(%p, %p) stub!\n", iface, ppEnum);
177 static const WCHAR ss_fmt[] = {
'%',
's',
'\\',
'%',
's',0};
178 static const WCHAR sss_fmt[] = {
'%',
's',
'\\',
'%',
's',
'_',
'_',
'%',
's',0};
179 static const WCHAR ssss_fmt[] = {
'%',
's',
'\\',
'%',
's',
'%',
's',
'_',
'_',
'%',
's',0};
180 static const WCHAR ver_fmt[] = {
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',0};
181 static const WCHAR star_fmt[] = {
'%',
's',
'\\',
'*',0};
182 static const WCHAR star_prefix_fmt[] = {
'%',
's',
'\\',
'%',
's',
'*',0};
186 DWORD size, major_size, minor_size, build_size, revision_size;
193 if (prefix &&
depth == 1)
203 hr = IAssemblyName_GetName(
name, &
size, disp);
211 major_size =
sizeof(
major);
212 IAssemblyName_GetProperty(
name, ASM_NAME_MAJOR_VERSION, &
major, &major_size);
214 minor_size =
sizeof(
minor);
215 IAssemblyName_GetProperty(
name, ASM_NAME_MINOR_VERSION, &
minor, &minor_size);
217 build_size =
sizeof(build);
218 IAssemblyName_GetProperty(
name, ASM_NAME_BUILD_NUMBER, &build, &build_size);
220 revision_size =
sizeof(revision);
221 IAssemblyName_GetProperty(
name, ASM_NAME_REVISION_NUMBER, &revision, &revision_size);
223 if (!major_size || !minor_size || !build_size || !revision_size) verptr =
star;
231 IAssemblyName_GetProperty(
name, ASM_NAME_PUBLIC_KEY_TOKEN,
token, &
size);
237 pubkeyptr = token_str;
250 WORD version1, version2;
257 IAssemblyName_GetProperty(asmname1->
name, ASM_NAME_NAME,
name1, &
size);
259 IAssemblyName_GetProperty(asmname2->
name, ASM_NAME_NAME,
name2, &
size);
263 for (
i = ASM_NAME_MAJOR_VERSION;
i < ASM_NAME_CULTURE;
i++)
265 size =
sizeof(version1);
266 IAssemblyName_GetProperty(asmname1->
name,
i, &version1, &
size);
267 size =
sizeof(version2);
268 IAssemblyName_GetProperty(asmname2->
name,
i, &version2, &
size);
270 if (version1 < version2)
return -1;
271 if (version1 > version2)
return 1;
276 size =
sizeof(token1);
277 IAssemblyName_GetProperty(asmname1->
name, ASM_NAME_PUBLIC_KEY_TOKEN, token1, &
size);
278 size =
sizeof(token2);
279 IAssemblyName_GetProperty(asmname2->
name, ASM_NAME_PUBLIC_KEY_TOKEN, token2, &
size);
310 static const WCHAR dot[] = {
'.',0};
311 static const WCHAR dotdot[] = {
'.',
'.',0};
312 static const WCHAR dblunder[] = {
'_',
'_',0};
313 static const WCHAR path_fmt[] = {
'%',
's',
'\\',
'%',
's',
'\\',
'%',
's',
'.',
'd',
'l',
'l',0};
314 static const WCHAR name_fmt[] = {
'%',
's',
',',
' ',
'V',
'e',
'r',
's',
'i',
'o',
'n',
'=',
'%',
's',
',',
' ',
315 'C',
'u',
'l',
't',
'u',
'r',
'e',
'=',
'n',
'e',
'u',
't',
'r',
'a',
'l',
',',
' ',
316 'P',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',
'=',
'%',
's',0};
317 static const WCHAR ss_fmt[] = {
'%',
's',
'\\',
'%',
's',0};
355 unsigned int prefix_len =
lstrlenW(prefix);
356 if (
lstrlenW(ffd.cFileName) >= prefix_len &&
357 !
_wcsnicmp(ffd.cFileName, prefix, prefix_len))
362 if (!(asmname =
heap_alloc(
sizeof(*asmname))))
379 IAssemblyName_Release(asmname->
name);
400 static const WCHAR gac[] = {
'\\',
'G',
'A',
'C',0};
401 static const WCHAR gac_32[] = {
'\\',
'G',
'A',
'C',
'_',
'3',
'2',0};
402 static const WCHAR gac_64[] = {
'\\',
'G',
'A',
'C',
'_',
'6',
'4',0};
403 static const WCHAR gac_msil[] = {
'\\',
'G',
'A',
'C',
'_',
'M',
'S',
'I',
'L',0};
404 static const WCHAR v40[] = {
'v',
'4',
'.',
'0',
'_',0};
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
static void token_to_str(BYTE *bytes, LPWSTR str)
#define LIST_FOR_EACH_SAFE(cursor, cursor2, list)
VOID WINAPI GetNativeSystemInfo(IN LPSYSTEM_INFO lpSystemInfo)
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
IAssemblyEnum IAssemblyEnum_iface
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#define INVALID_HANDLE_VALUE
static void * heap_alloc(size_t len)
__WINE_SERVER_LIST_INLINE struct list * list_head(const struct list *list)
__WINE_SERVER_LIST_INLINE void list_add_tail(struct list *list, struct list *elem)
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 token
#define LIST_FOR_EACH(cursor, list)
static const WCHAR version[]
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
__WINE_SERVER_LIST_INLINE void list_remove(struct list *elem)
HRESULT WINAPI CreateAssemblyNameObject(IAssemblyName **ppAssemblyNameObj, LPCWSTR szAssemblyName, DWORD dwFlags, LPVOID pvReserved)
#define PROCESSOR_ARCHITECTURE_AMD64
GLint GLint GLsizei GLsizei GLsizei depth
#define InterlockedDecrement
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
HRESULT WINAPI GetCachePath(ASM_CACHE_FLAGS dwCacheFlags, LPWSTR pwzCachePath, PDWORD pcchPath)
HRESULT IAssemblyName_SetPath(IAssemblyName *iface, LPCWSTR path)
#define InterlockedIncrement
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
__WINE_SERVER_LIST_INLINE void list_add_before(struct list *elem, struct list *to_add)
__WINE_SERVER_LIST_INLINE struct list * list_next(const struct list *list, const struct list *elem)
__WINE_SERVER_LIST_INLINE void list_init(struct list *list)
#define IsEqualIID(riid1, riid2)
static BOOL heap_free(void *mem)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)