27#define WIN32_NO_STATUS
69 {
'P',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',0};
71 'A',
'r',
'c',
'h',
'i',
't',
'e',
'c',
't',
'u',
'r',
'e',0};
73#define CHARS_PER_PUBKEY 16
92 IAssemblyName_AddRef(iface);
93 *ppobj = &
This->IAssemblyName_iface;
106 TRACE(
"(%p)->(ref before = %u)\n",
This, refCount - 1);
116 TRACE(
"(%p)->(ref before = %u)\n",
This, refCount + 1);
136 FIXME(
"(%p, %d, %p, %d) stub!\n", iface,
PropertyId, pvProperty, cbProperty);
148 TRACE(
"(%p, %d, %p, %p)\n", iface,
PropertyId, pvProperty, pcbProperty);
153 case ASM_NAME_NULL_PUBLIC_KEY:
154 case ASM_NAME_NULL_PUBLIC_KEY_TOKEN:
159 case ASM_NAME_NULL_CUSTOM:
167 if (
size < *pcbProperty)
173 case ASM_NAME_MAJOR_VERSION:
175 if (
name->versize >= 1)
177 *pcbProperty =
sizeof(
WORD);
178 if (
size < *pcbProperty)
184 case ASM_NAME_MINOR_VERSION:
186 if (
name->versize >= 2)
188 *pcbProperty =
sizeof(
WORD);
189 if (
size < *pcbProperty)
195 case ASM_NAME_BUILD_NUMBER:
197 if (
name->versize >= 3)
199 *pcbProperty =
sizeof(
WORD);
200 if (
size < *pcbProperty)
206 case ASM_NAME_REVISION_NUMBER:
208 if (
name->versize >= 4)
210 *pcbProperty =
sizeof(
WORD);
211 if (
size < *pcbProperty)
217 case ASM_NAME_CULTURE:
222 if (
size < *pcbProperty)
228 case ASM_NAME_PUBLIC_KEY_TOKEN:
232 *pcbProperty =
sizeof(
DWORD) * 2;
233 if (
size < *pcbProperty)
239 case ASM_NAME_ARCHITECTURE:
243 *pcbProperty =
sizeof(
PEKIND);
244 if (
size < *pcbProperty)
260 FIXME(
"(%p) stub!\n", iface);
267 DWORD dwDisplayFlags)
269 static const WCHAR equals[] = {
'=',0};
274 TRACE(
"(%p, %p, %p, %d)\n", iface, szDisplayName,
275 pccDisplayName, dwDisplayFlags);
277 if (dwDisplayFlags == 0)
279 if (!
name->displayname || !*
name->displayname)
284 if (*pccDisplayName <
size)
286 *pccDisplayName =
size;
290 if (szDisplayName)
lstrcpyW(szDisplayName,
name->displayname);
291 *pccDisplayName =
size;
302 if ((dwDisplayFlags & ASM_DISPLAYF_VERSION) && (
name->versize > 0))
304 static const WCHAR spec[] = {
'%',
'd',0};
305 static const WCHAR period[] = {
'.',0};
310 for (
i = 1;
i <
name->versize;
i++)
322 if ((dwDisplayFlags & ASM_DISPLAYF_CULTURE) && (
name->culture))
324 static const WCHAR neutral[] = {
'n',
'e',
'u',
't',
'r',
'a',
'l', 0};
330 if ((dwDisplayFlags & ASM_DISPLAYF_PUBLIC_KEY_TOKEN) && (
name->haspubkey))
333 if ((dwDisplayFlags & ASM_DISPLAYF_PROCESSORARCHITECTURE) && (
name->procarch))
336 if (
size > *pccDisplayName)
338 *pccDisplayName =
size;
345 if ((dwDisplayFlags & ASM_DISPLAYF_VERSION) && (
name->versize > 0))
354 if ((dwDisplayFlags & ASM_DISPLAYF_CULTURE) && (
name->culture))
360 lstrcatW(szDisplayName, cultureval);
363 if ((dwDisplayFlags & ASM_DISPLAYF_PUBLIC_KEY_TOKEN) && (
name->haspubkey))
366 static const WCHAR spec[] = {
'%',
'0',
'2',
'x',
'%',
'0',
'2',
'x',
'%',
'0',
'2',
'x',
367 '%',
'0',
'2',
'x',
'%',
'0',
'2',
'x',
'%',
'0',
'2',
'x',
'%',
'0',
'2',
'x',
'%',
'0',
'2',
'x',0};
381 if ((dwDisplayFlags & ASM_DISPLAYF_PROCESSORARCHITECTURE) && (
name->procarch))
390 *pccDisplayName =
size;
398 LPCOLESTR szReserved,
404 TRACE(
"(%p, %s, %p, %p, %s, %s, %p, %d, %p)\n", iface,
419 TRACE(
"(%p, %p, %p)\n", iface, lpcwBuffer, pwzName);
426 if (*lpcwBuffer <
len)
444 TRACE(
"(%p, %p, %p)\n", iface, pdwVersionHi, pdwVersionLow);
449 if (
name->versize != 4)
468 if (
flags & ~ASM_CMPF_IL_ALL)
FIXME(
"unsupported flags\n");
473 if ((
flags & ASM_CMPF_MAJOR_VERSION) &&
475 if ((
flags & ASM_CMPF_MINOR_VERSION) &&
477 if ((
flags & ASM_CMPF_BUILD_NUMBER) &&
479 if ((
flags & ASM_CMPF_REVISION_NUMBER) &&
482 if ((
flags & ASM_CMPF_PUBLIC_KEY_TOKEN) &&
486 if ((
flags & ASM_CMPF_CULTURE) &&
594 return ((
c >=
'a' &&
c <=
'f') ||
595 (
c >=
'A' &&
c <=
'F') ||
596 (
c >=
'0' &&
c <=
'9'));
601 if(
c >=
'0' &&
c <=
'9')
603 if(
c >=
'A' &&
c <=
'F')
605 if(
c >=
'a' &&
c <=
'f')
614 static const WCHAR nullstr[] = {
'n',
'u',
'l',
'l',0};
639 static const WCHAR msilW[] = {
'm',
's',
'i',
'l',0};
640 static const WCHAR x86W[] = {
'x',
'8',
'6',0};
641 static const WCHAR ia64W[] = {
'i',
'a',
'6',
'4',0};
642 static const WCHAR amd64W[] = {
'a',
'm',
'd',
'6',
'4',0};
674 while (*
p && *
p !=
'\"')
ret[
i++] = *
p++;
675 if ((quoted && *
p !=
'\"') || (!quoted && *
p ==
'\"'))
694 if (!
name->displayname)
759 while (*
str ==
' ')
str++;
804 TRACE(
"(%p, %s, %08x, %p)\n", ppAssemblyNameObj,
807 if (!ppAssemblyNameObj)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static WCHAR * strdupW(const WCHAR *src)
_In_ PSTORAGE_PROPERTY_ID PropertyId
#define FUSION_E_PRIVATE_ASM_DISALLOWED
#define FUSION_E_INVALID_NAME
static const WCHAR empty[]
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
static ULONG WINAPI IAssemblyNameImpl_Release(IAssemblyName *iface)
static HRESULT WINAPI IAssemblyNameImpl_GetVersion(IAssemblyName *iface, LPDWORD pdwVersionHi, LPDWORD pdwVersionLow)
static HRESULT WINAPI IAssemblyNameImpl_Clone(IAssemblyName *iface, IAssemblyName **pName)
static HRESULT parse_pubkey(IAssemblyNameImpl *name, LPCWSTR pubkey)
static HRESULT WINAPI IAssemblyNameImpl_GetProperty(IAssemblyName *iface, DWORD PropertyId, LPVOID pvProperty, LPDWORD pcbProperty)
static HRESULT parse_version(IAssemblyNameImpl *name, LPWSTR version)
static const WCHAR version[]
static ULONG WINAPI IAssemblyNameImpl_AddRef(IAssemblyName *iface)
static HRESULT WINAPI IAssemblyNameImpl_IsEqual(IAssemblyName *iface, IAssemblyName *pName, DWORD flags)
HRESULT IAssemblyName_SetPath(IAssemblyName *iface, LPCWSTR path)
static const WCHAR procarch[]
static HRESULT WINAPI IAssemblyNameImpl_Reserved(IAssemblyName *iface, REFIID refIID, IUnknown *pUnkReserved1, IUnknown *pUnkReserved2, LPCOLESTR szReserved, LONGLONG llReserved, LPVOID pvReserved, DWORD cbReserved, LPVOID *ppReserved)
static HRESULT WINAPI IAssemblyNameImpl_QueryInterface(IAssemblyName *iface, REFIID riid, LPVOID *ppobj)
static const WCHAR separator[]
static HRESULT WINAPI IAssemblyNameImpl_Finalize(IAssemblyName *iface)
static HRESULT WINAPI IAssemblyNameImpl_GetName(IAssemblyName *iface, LPDWORD lpcwBuffer, WCHAR *pwzName)
static WCHAR * parse_value(const WCHAR *str, unsigned int len)
HRESULT WINAPI CreateAssemblyNameObject(IAssemblyName **ppAssemblyNameObj, LPCWSTR szAssemblyName, DWORD dwFlags, LPVOID pvReserved)
static BYTE hextobyte(WCHAR c)
static HRESULT parse_procarch(IAssemblyNameImpl *name, LPCWSTR procarch)
HRESULT IAssemblyName_GetPath(IAssemblyName *iface, LPWSTR buf, ULONG *len)
static const WCHAR pubkey[]
static IAssemblyNameImpl * unsafe_impl_from_IAssemblyName(IAssemblyName *iface)
static HRESULT WINAPI IAssemblyNameImpl_GetDisplayName(IAssemblyName *iface, LPOLESTR szDisplayName, LPDWORD pccDisplayName, DWORD dwDisplayFlags)
static IAssemblyNameImpl * impl_from_IAssemblyName(IAssemblyName *iface)
static const IAssemblyNameVtbl AssemblyNameVtbl
static HRESULT parse_culture(IAssemblyNameImpl *name, LPCWSTR culture)
static HRESULT parse_display_name(IAssemblyNameImpl *name, LPCWSTR szAssemblyName)
static const WCHAR culture[]
static HRESULT WINAPI IAssemblyNameImpl_SetProperty(IAssemblyName *iface, DWORD PropertyId, LPVOID pvProperty, DWORD cbProperty)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
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
_Check_return_ long __cdecl wcstol(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
static LPCSTR DWORD void * pvReserved
#define IsEqualIID(riid1, riid2)
wchar_t const *const size_t const buffer_size
#define STRSAFE_E_INSUFFICIENT_BUFFER
IAssemblyName IAssemblyName_iface
IAssemblyName IAssemblyName_iface
#define CONTAINING_RECORD(address, type, field)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define E_NOT_SUFFICIENT_BUFFER
@ CANOF_PARSE_DISPLAY_NAME
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)