ReactOS  0.4.14-dev-583-g2a1ba2c
asmname.c File Reference
#include <stdarg.h>
#include <assert.h>
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "ole2.h"
#include "guiddef.h"
#include "fusion.h"
#include "corerror.h"
#include "strsafe.h"
#include "wine/debug.h"
#include "fusionpriv.h"
Include dependency graph for asmname.c:

Go to the source code of this file.

Classes

struct  IAssemblyNameImpl
 

Macros

#define COBJMACROS
 
#define INITGUID
 
#define CHARS_PER_PUBKEY   16
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (fusion)
 
static IAssemblyNameImplimpl_from_IAssemblyName (IAssemblyName *iface)
 
static HRESULT WINAPI IAssemblyNameImpl_QueryInterface (IAssemblyName *iface, REFIID riid, LPVOID *ppobj)
 
static ULONG WINAPI IAssemblyNameImpl_AddRef (IAssemblyName *iface)
 
static ULONG WINAPI IAssemblyNameImpl_Release (IAssemblyName *iface)
 
static HRESULT WINAPI IAssemblyNameImpl_SetProperty (IAssemblyName *iface, DWORD PropertyId, LPVOID pvProperty, DWORD cbProperty)
 
static HRESULT WINAPI IAssemblyNameImpl_GetProperty (IAssemblyName *iface, DWORD PropertyId, LPVOID pvProperty, LPDWORD pcbProperty)
 
static HRESULT WINAPI IAssemblyNameImpl_Finalize (IAssemblyName *iface)
 
static HRESULT WINAPI IAssemblyNameImpl_GetDisplayName (IAssemblyName *iface, LPOLESTR szDisplayName, LPDWORD pccDisplayName, DWORD dwDisplayFlags)
 
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_GetName (IAssemblyName *iface, LPDWORD lpcwBuffer, WCHAR *pwzName)
 
static HRESULT WINAPI IAssemblyNameImpl_GetVersion (IAssemblyName *iface, LPDWORD pdwVersionHi, LPDWORD pdwVersionLow)
 
static HRESULT WINAPI IAssemblyNameImpl_IsEqual (IAssemblyName *iface, IAssemblyName *pName, DWORD flags)
 
static HRESULT WINAPI IAssemblyNameImpl_Clone (IAssemblyName *iface, IAssemblyName **pName)
 
static IAssemblyNameImplunsafe_impl_from_IAssemblyName (IAssemblyName *iface)
 
HRESULT IAssemblyName_SetPath (IAssemblyName *iface, LPCWSTR path)
 
HRESULT IAssemblyName_GetPath (IAssemblyName *iface, LPWSTR buf, ULONG *len)
 
static HRESULT parse_version (IAssemblyNameImpl *name, LPWSTR version)
 
static HRESULT parse_culture (IAssemblyNameImpl *name, LPCWSTR culture)
 
static BOOL is_hex (WCHAR c)
 
static BYTE hextobyte (WCHAR c)
 
static HRESULT parse_pubkey (IAssemblyNameImpl *name, LPCWSTR pubkey)
 
static HRESULT parse_procarch (IAssemblyNameImpl *name, LPCWSTR procarch)
 
static WCHARparse_value (const WCHAR *str, unsigned int len)
 
static HRESULT parse_display_name (IAssemblyNameImpl *name, LPCWSTR szAssemblyName)
 
HRESULT WINAPI CreateAssemblyNameObject (IAssemblyName **ppAssemblyNameObj, LPCWSTR szAssemblyName, DWORD dwFlags, LPVOID pvReserved)
 

Variables

static const WCHAR separator [] = {',',' ',0}
 
static const WCHAR version [] = {'V','e','r','s','i','o','n',0}
 
static const WCHAR culture [] = {'C','u','l','t','u','r','e',0}
 
static const WCHAR pubkey []
 
static const WCHAR procarch []
 
static const IAssemblyNameVtbl AssemblyNameVtbl
 

Macro Definition Documentation

◆ CHARS_PER_PUBKEY

#define CHARS_PER_PUBKEY   16

Definition at line 73 of file asmname.c.

◆ COBJMACROS

#define COBJMACROS

Definition at line 24 of file asmname.c.

◆ INITGUID

#define INITGUID

Definition at line 25 of file asmname.c.

Function Documentation

◆ CreateAssemblyNameObject()

HRESULT WINAPI CreateAssemblyNameObject ( IAssemblyName **  ppAssemblyNameObj,
LPCWSTR  szAssemblyName,
DWORD  dwFlags,
LPVOID  pvReserved 
)

Definition at line 797 of file asmname.c.

800 {
802  HRESULT hr;
803 
804  TRACE("(%p, %s, %08x, %p)\n", ppAssemblyNameObj,
806 
807  if (!ppAssemblyNameObj)
808  return E_INVALIDARG;
809 
812  return E_INVALIDARG;
813 
814  if (!(name = heap_alloc_zero(sizeof(*name)))) return E_OUTOFMEMORY;
815 
817  name->ref = 1;
818 
820  if (FAILED(hr))
821  {
822  heap_free(name);
823  return hr;
824  }
825 
826  *ppAssemblyNameObj = &name->IAssemblyName_iface;
827 
828  return S_OK;
829 }
HRESULT hr
Definition: shlfolder.c:183
static LPCWSTR szAssemblyName
Definition: asmname.c:40
IAssemblyName IAssemblyName_iface
Definition: name.c:40
static LPCWSTR DWORD LPVOID pvReserved
Definition: asmname.c:40
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define debugstr_w
Definition: kernel32.h:32
#define E_INVALIDARG
Definition: ddrawi.h:101
static const IAssemblyNameVtbl AssemblyNameVtbl
Definition: asmname.c:500
static HRESULT parse_display_name(IAssemblyNameImpl *name, LPCWSTR szAssemblyName)
Definition: asmname.c:684
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
#define S_OK
Definition: intsafe.h:59
Definition: name.c:38
static BOOL heap_free(void *mem)
Definition: appwiz.h:75
GLuint const GLchar * name
Definition: glext.h:6031

Referenced by cache_QueryAssemblyInfo(), cache_UninstallAssembly(), enum_gac_assemblies(), IAssemblyCacheImpl_QueryAssemblyInfo(), and IAssemblyCacheImpl_UninstallAssembly().

◆ hextobyte()

static BYTE hextobyte ( WCHAR  c)
static

Definition at line 599 of file asmname.c.

600 {
601  if(c >= '0' && c <= '9')
602  return c - '0';
603  if(c >= 'A' && c <= 'F')
604  return c - 'A' + 10;
605  if(c >= 'a' && c <= 'f')
606  return c - 'a' + 10;
607  return 0;
608 }
const GLubyte * c
Definition: glext.h:8905

Referenced by parse_pubkey().

◆ IAssemblyName_GetPath()

HRESULT IAssemblyName_GetPath ( IAssemblyName iface,
LPWSTR  buf,
ULONG len 
)

Definition at line 534 of file asmname.c.

535 {
536  ULONG buffer_size = *len;
538 
539  if (!name->path)
540  return S_OK;
541 
542  if (!buf)
543  buffer_size = 0;
544 
545  *len = lstrlenW(name->path) + 1;
546 
547  if (*len <= buffer_size)
548  lstrcpyW(buf, name->path);
549  else
551 
552  return S_OK;
553 }
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define lstrlenW
Definition: compat.h:415
static IAssemblyNameImpl * unsafe_impl_from_IAssemblyName(IAssemblyName *iface)
Definition: asmname.c:516
static void buffer_size(GLcontext *ctx, GLuint *width, GLuint *height)
Definition: swimpl.c:927
GLenum GLsizei len
Definition: glext.h:6722
#define E_NOT_SUFFICIENT_BUFFER
Definition: winerror.h:2345
#define S_OK
Definition: intsafe.h:59
#define lstrcpyW
Definition: compat.h:414
Definition: name.c:38
unsigned int ULONG
Definition: retypes.h:1

Referenced by IAssemblyCacheImpl_QueryAssemblyInfo(), and IAssemblyCacheImpl_UninstallAssembly().

◆ IAssemblyName_SetPath()

HRESULT IAssemblyName_SetPath ( IAssemblyName iface,
LPCWSTR  path 
)

Definition at line 523 of file asmname.c.

524 {
526 
527  name->path = strdupW(path);
528  if (!name->path)
529  return E_OUTOFMEMORY;
530 
531  return S_OK;
532 }
static WCHAR * strdupW(const WCHAR *src)
Definition: main.c:92
static IAssemblyNameImpl * unsafe_impl_from_IAssemblyName(IAssemblyName *iface)
Definition: asmname.c:516
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define S_OK
Definition: intsafe.h:59
Definition: name.c:38

Referenced by enum_gac_assemblies().

◆ IAssemblyNameImpl_AddRef()

static ULONG WINAPI IAssemblyNameImpl_AddRef ( IAssemblyName iface)
static

Definition at line 101 of file asmname.c.

102 {
104  ULONG refCount = InterlockedIncrement(&This->ref);
105 
106  TRACE("(%p)->(ref before = %u)\n", This, refCount - 1);
107 
108  return refCount;
109 }
static IAssemblyNameImpl * impl_from_IAssemblyName(IAssemblyName *iface)
Definition: asmname.c:75
#define TRACE(s)
Definition: solgame.cpp:4
#define InterlockedIncrement
Definition: armddk.h:53
unsigned int ULONG
Definition: retypes.h:1

◆ IAssemblyNameImpl_Clone()

static HRESULT WINAPI IAssemblyNameImpl_Clone ( IAssemblyName iface,
IAssemblyName **  pName 
)
static

Definition at line 493 of file asmname.c.

495 {
496  FIXME("(%p, %p) stub!\n", iface, pName);
497  return E_NOTIMPL;
498 }
#define FIXME(fmt,...)
Definition: debug.h:110
static LPSTR pName
Definition: security.c:75
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ IAssemblyNameImpl_Finalize()

static HRESULT WINAPI IAssemblyNameImpl_Finalize ( IAssemblyName iface)
static

Definition at line 258 of file asmname.c.

259 {
260  FIXME("(%p) stub!\n", iface);
261  return E_NOTIMPL;
262 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ IAssemblyNameImpl_GetDisplayName()

static HRESULT WINAPI IAssemblyNameImpl_GetDisplayName ( IAssemblyName iface,
LPOLESTR  szDisplayName,
LPDWORD  pccDisplayName,
DWORD  dwDisplayFlags 
)
static

Definition at line 264 of file asmname.c.

268 {
269  static const WCHAR equals[] = {'=',0};
271  WCHAR verstr[30], *cultureval = NULL;
272  DWORD size;
273 
274  TRACE("(%p, %p, %p, %d)\n", iface, szDisplayName,
275  pccDisplayName, dwDisplayFlags);
276 
277  if (dwDisplayFlags == 0)
278  {
279  if (!name->displayname || !*name->displayname)
280  return FUSION_E_INVALID_NAME;
281 
282  size = lstrlenW(name->displayname) + 1;
283 
284  if (*pccDisplayName < size)
285  {
286  *pccDisplayName = size;
288  }
289 
290  if (szDisplayName) lstrcpyW(szDisplayName, name->displayname);
291  *pccDisplayName = size;
292 
293  return S_OK;
294  }
295 
296  if (!name->name || !*name->name)
297  return FUSION_E_INVALID_NAME;
298 
299  /* Verify buffer size is sufficient */
300  size = lstrlenW(name->name) + 1;
301 
302  if ((dwDisplayFlags & ASM_DISPLAYF_VERSION) && (name->versize > 0))
303  {
304  static const WCHAR spec[] = {'%','d',0};
305  static const WCHAR period[] = {'.',0};
306  DWORD i;
307 
308  wsprintfW(verstr, spec, name->version[0]);
309 
310  for (i = 1; i < name->versize; i++)
311  {
312  WCHAR value[6];
313  wsprintfW(value, spec, name->version[i]);
314 
315  lstrcatW(verstr, period);
316  lstrcatW(verstr, value);
317  }
318 
319  size += lstrlenW(separator) + lstrlenW(version) + lstrlenW(equals) + lstrlenW(verstr);
320  }
321 
322  if ((dwDisplayFlags & ASM_DISPLAYF_CULTURE) && (name->culture))
323  {
324  static const WCHAR neutral[] = {'n','e','u','t','r','a','l', 0};
325 
326  cultureval = (lstrlenW(name->culture) == 2) ? name->culture : (LPWSTR) neutral;
327  size += lstrlenW(separator) + lstrlenW(culture) + lstrlenW(equals) + lstrlenW(cultureval);
328  }
329 
330  if ((dwDisplayFlags & ASM_DISPLAYF_PUBLIC_KEY_TOKEN) && (name->haspubkey))
332 
333  if ((dwDisplayFlags & ASM_DISPLAYF_PROCESSORARCHITECTURE) && (name->procarch))
334  size += lstrlenW(separator) + lstrlenW(procarch) + lstrlenW(equals) + lstrlenW(name->procarch);
335 
336  if (size > *pccDisplayName)
337  {
338  *pccDisplayName = size;
340  }
341 
342  /* Construct the string */
343  lstrcpyW(szDisplayName, name->name);
344 
345  if ((dwDisplayFlags & ASM_DISPLAYF_VERSION) && (name->versize > 0))
346  {
347  lstrcatW(szDisplayName, separator);
348 
349  lstrcatW(szDisplayName, version);
350  lstrcatW(szDisplayName, equals);
351  lstrcatW(szDisplayName, verstr);
352  }
353 
354  if ((dwDisplayFlags & ASM_DISPLAYF_CULTURE) && (name->culture))
355  {
356  lstrcatW(szDisplayName, separator);
357 
358  lstrcatW(szDisplayName, culture);
359  lstrcatW(szDisplayName, equals);
360  lstrcatW(szDisplayName, cultureval);
361  }
362 
363  if ((dwDisplayFlags & ASM_DISPLAYF_PUBLIC_KEY_TOKEN) && (name->haspubkey))
364  {
365  WCHAR pkt[CHARS_PER_PUBKEY + 1];
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};
368 
369  lstrcatW(szDisplayName, separator);
370 
371  lstrcatW(szDisplayName, pubkey);
372  lstrcatW(szDisplayName, equals);
373 
374  wsprintfW(pkt, spec, name->pubkey[0], name->pubkey[1], name->pubkey[2],
375  name->pubkey[3], name->pubkey[4], name->pubkey[5], name->pubkey[6],
376  name->pubkey[7]);
377 
378  lstrcatW(szDisplayName, pkt);
379  }
380 
381  if ((dwDisplayFlags & ASM_DISPLAYF_PROCESSORARCHITECTURE) && (name->procarch))
382  {
383  lstrcatW(szDisplayName, separator);
384 
385  lstrcatW(szDisplayName, procarch);
386  lstrcatW(szDisplayName, equals);
387  lstrcatW(szDisplayName, name->procarch);
388  }
389 
390  *pccDisplayName = size;
391  return S_OK;
392 }
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
static const WCHAR separator[]
Definition: asmname.c:65
WCHAR * version
Definition: name.c:46
static const WCHAR pubkey[]
Definition: asmname.c:68
#define CHARS_PER_PUBKEY
Definition: asmname.c:73
static IAssemblyNameImpl * impl_from_IAssemblyName(IAssemblyName *iface)
Definition: asmname.c:75
#define lstrlenW
Definition: compat.h:415
static const WCHAR procarch[]
Definition: asmname.c:70
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
Definition: glfuncs.h:248
smooth NULL
Definition: ftsmooth.c:416
static const WCHAR version[]
Definition: asmname.c:66
#define TRACE(s)
Definition: solgame.cpp:4
GLsizeiptr size
Definition: glext.h:5919
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define FUSION_E_INVALID_NAME
Definition: corerror.h:123
unsigned long DWORD
Definition: ntddk_ex.h:95
#define E_NOT_SUFFICIENT_BUFFER
Definition: winerror.h:2345
#define S_OK
Definition: intsafe.h:59
#define lstrcpyW
Definition: compat.h:414
Definition: name.c:38
static const WCHAR culture[]
Definition: asmname.c:67
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274
WCHAR * LPWSTR
Definition: xmlstorage.h:184
WCHAR * name
Definition: name.c:42

◆ IAssemblyNameImpl_GetName()

static HRESULT WINAPI IAssemblyNameImpl_GetName ( IAssemblyName iface,
LPDWORD  lpcwBuffer,
WCHAR pwzName 
)
static

Definition at line 412 of file asmname.c.

415 {
417  DWORD len;
418 
419  TRACE("(%p, %p, %p)\n", iface, lpcwBuffer, pwzName);
420 
421  if (name->name)
422  len = lstrlenW(name->name) + 1;
423  else
424  len = 0;
425 
426  if (*lpcwBuffer < len)
427  {
428  *lpcwBuffer = len;
430  }
431  if (!name->name) lpcwBuffer[0] = 0;
432  else lstrcpyW(pwzName, name->name);
433 
434  *lpcwBuffer = len;
435  return S_OK;
436 }
static IAssemblyNameImpl * impl_from_IAssemblyName(IAssemblyName *iface)
Definition: asmname.c:75
#define lstrlenW
Definition: compat.h:415
#define TRACE(s)
Definition: solgame.cpp:4
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLsizei len
Definition: glext.h:6722
#define E_NOT_SUFFICIENT_BUFFER
Definition: winerror.h:2345
#define S_OK
Definition: intsafe.h:59
#define lstrcpyW
Definition: compat.h:414
Definition: name.c:38
WCHAR * name
Definition: name.c:42

◆ IAssemblyNameImpl_GetProperty()

static HRESULT WINAPI IAssemblyNameImpl_GetProperty ( IAssemblyName iface,
DWORD  PropertyId,
LPVOID  pvProperty,
LPDWORD  pcbProperty 
)
static

Definition at line 140 of file asmname.c.

144 {
146  DWORD size;
147 
148  TRACE("(%p, %d, %p, %p)\n", iface, PropertyId, pvProperty, pcbProperty);
149 
150  size = *pcbProperty;
151  switch (PropertyId)
152  {
153  case ASM_NAME_NULL_PUBLIC_KEY:
154  case ASM_NAME_NULL_PUBLIC_KEY_TOKEN:
155  if (name->haspubkey)
156  return S_OK;
157  return S_FALSE;
158 
159  case ASM_NAME_NULL_CUSTOM:
160  return S_OK;
161 
162  case ASM_NAME_NAME:
163  *pcbProperty = 0;
164  if (name->name)
165  {
166  *pcbProperty = (lstrlenW(name->name) + 1) * 2;
167  if (size < *pcbProperty)
169  lstrcpyW(pvProperty, name->name);
170  }
171  break;
172 
173  case ASM_NAME_MAJOR_VERSION:
174  *pcbProperty = 0;
175  if (name->versize >= 1)
176  {
177  *pcbProperty = sizeof(WORD);
178  if (size < *pcbProperty)
180  *((WORD *)pvProperty) = name->version[0];
181  }
182  break;
183 
184  case ASM_NAME_MINOR_VERSION:
185  *pcbProperty = 0;
186  if (name->versize >= 2)
187  {
188  *pcbProperty = sizeof(WORD);
189  if (size < *pcbProperty)
191  *((WORD *)pvProperty) = name->version[1];
192  }
193  break;
194 
195  case ASM_NAME_BUILD_NUMBER:
196  *pcbProperty = 0;
197  if (name->versize >= 3)
198  {
199  *pcbProperty = sizeof(WORD);
200  if (size < *pcbProperty)
202  *((WORD *)pvProperty) = name->version[2];
203  }
204  break;
205 
206  case ASM_NAME_REVISION_NUMBER:
207  *pcbProperty = 0;
208  if (name->versize >= 4)
209  {
210  *pcbProperty = sizeof(WORD);
211  if (size < *pcbProperty)
213  *((WORD *)pvProperty) = name->version[3];
214  }
215  break;
216 
217  case ASM_NAME_CULTURE:
218  *pcbProperty = 0;
219  if (name->culture)
220  {
221  *pcbProperty = (lstrlenW(name->culture) + 1) * 2;
222  if (size < *pcbProperty)
224  lstrcpyW(pvProperty, name->culture);
225  }
226  break;
227 
228  case ASM_NAME_PUBLIC_KEY_TOKEN:
229  *pcbProperty = 0;
230  if (name->haspubkey)
231  {
232  *pcbProperty = sizeof(DWORD) * 2;
233  if (size < *pcbProperty)
235  memcpy(pvProperty, name->pubkey, sizeof(DWORD) * 2);
236  }
237  break;
238 
239  case ASM_NAME_ARCHITECTURE:
240  *pcbProperty = 0;
241  if (name->pekind != peNone)
242  {
243  *pcbProperty = sizeof(PEKIND);
244  if (size < *pcbProperty)
246  *((PEKIND *)pvProperty) = name->pekind;
247  }
248  break;
249 
250  default:
251  *pcbProperty = 0;
252  break;
253  }
254 
255  return S_OK;
256 }
WCHAR * version
Definition: name.c:46
_In_ PSTORAGE_PROPERTY_ID PropertyId
Definition: classpnp.h:966
static IAssemblyNameImpl * impl_from_IAssemblyName(IAssemblyName *iface)
Definition: asmname.c:75
#define lstrlenW
Definition: compat.h:415
#define STRSAFE_E_INSUFFICIENT_BUFFER
Definition: strsafe.h:103
#define DWORD
Definition: nt_native.h:44
#define S_FALSE
Definition: winerror.h:2357
#define TRACE(s)
Definition: solgame.cpp:4
GLsizeiptr size
Definition: glext.h:5919
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
PEKIND
Definition: fusion.idl:35
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define S_OK
Definition: intsafe.h:59
#define lstrcpyW
Definition: compat.h:414
Definition: name.c:38
WCHAR * name
Definition: name.c:42

◆ IAssemblyNameImpl_GetVersion()

static HRESULT WINAPI IAssemblyNameImpl_GetVersion ( IAssemblyName iface,
LPDWORD  pdwVersionHi,
LPDWORD  pdwVersionLow 
)
static

Definition at line 438 of file asmname.c.

441 {
443 
444  TRACE("(%p, %p, %p)\n", iface, pdwVersionHi, pdwVersionLow);
445 
446  *pdwVersionHi = 0;
447  *pdwVersionLow = 0;
448 
449  if (name->versize != 4)
450  return FUSION_E_INVALID_NAME;
451 
452  *pdwVersionHi = (name->version[0] << 16) + name->version[1];
453  *pdwVersionLow = (name->version[2] << 16) + name->version[3];
454 
455  return S_OK;
456 }
WCHAR * version
Definition: name.c:46
static IAssemblyNameImpl * impl_from_IAssemblyName(IAssemblyName *iface)
Definition: asmname.c:75
#define TRACE(s)
Definition: solgame.cpp:4
#define FUSION_E_INVALID_NAME
Definition: corerror.h:123
#define S_OK
Definition: intsafe.h:59
Definition: name.c:38

◆ IAssemblyNameImpl_IsEqual()

static HRESULT WINAPI IAssemblyNameImpl_IsEqual ( IAssemblyName iface,
IAssemblyName pName,
DWORD  flags 
)
static

Definition at line 458 of file asmname.c.

461 {
464 
465  TRACE("(%p, %p, 0x%08x)\n", iface, pName, flags);
466 
467  if (!pName) return S_FALSE;
468  if (flags & ~ASM_CMPF_IL_ALL) FIXME("unsupported flags\n");
469 
470  if ((flags & ASM_CMPF_NAME) && lstrcmpW(name1->name, name2->name)) return S_FALSE;
471  if (name1->versize && name2->versize)
472  {
473  if ((flags & ASM_CMPF_MAJOR_VERSION) &&
474  name1->version[0] != name2->version[0]) return S_FALSE;
475  if ((flags & ASM_CMPF_MINOR_VERSION) &&
476  name1->version[1] != name2->version[1]) return S_FALSE;
477  if ((flags & ASM_CMPF_BUILD_NUMBER) &&
478  name1->version[2] != name2->version[2]) return S_FALSE;
479  if ((flags & ASM_CMPF_REVISION_NUMBER) &&
480  name1->version[3] != name2->version[3]) return S_FALSE;
481  }
482  if ((flags & ASM_CMPF_PUBLIC_KEY_TOKEN) &&
483  name1->haspubkey && name2->haspubkey &&
484  memcmp(name1->pubkey, name2->pubkey, sizeof(name1->pubkey))) return S_FALSE;
485 
486  if ((flags & ASM_CMPF_CULTURE) &&
487  name1->culture && name2->culture &&
488  lstrcmpW(name1->culture, name2->culture)) return S_FALSE;
489 
490  return S_OK;
491 }
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:170
static IAssemblyNameImpl * impl_from_IAssemblyName(IAssemblyName *iface)
Definition: asmname.c:75
static WCHAR name1[]
Definition: record.c:34
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_FALSE
Definition: winerror.h:2357
#define TRACE(s)
Definition: solgame.cpp:4
static LPSTR pName
Definition: security.c:75
GLbitfield flags
Definition: glext.h:7161
#define S_OK
Definition: intsafe.h:59
static WCHAR name2[]
Definition: record.c:35

◆ IAssemblyNameImpl_QueryInterface()

static HRESULT WINAPI IAssemblyNameImpl_QueryInterface ( IAssemblyName iface,
REFIID  riid,
LPVOID ppobj 
)
static

Definition at line 80 of file asmname.c.

82 {
84 
85  TRACE("(%p, %s, %p)\n", This, debugstr_guid(riid), ppobj);
86 
87  *ppobj = NULL;
88 
89  if (IsEqualIID(riid, &IID_IUnknown) ||
90  IsEqualIID(riid, &IID_IAssemblyName))
91  {
92  IAssemblyName_AddRef(iface);
93  *ppobj = &This->IAssemblyName_iface;
94  return S_OK;
95  }
96 
97  WARN("(%p, %s, %p): not found\n", This, debugstr_guid(riid), ppobj);
98  return E_NOINTERFACE;
99 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
#define WARN(fmt,...)
Definition: debug.h:111
static IAssemblyNameImpl * impl_from_IAssemblyName(IAssemblyName *iface)
Definition: asmname.c:75
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
const GUID IID_IUnknown
#define S_OK
Definition: intsafe.h:59
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

◆ IAssemblyNameImpl_Release()

static ULONG WINAPI IAssemblyNameImpl_Release ( IAssemblyName iface)
static

Definition at line 111 of file asmname.c.

112 {
114  ULONG refCount = InterlockedDecrement(&This->ref);
115 
116  TRACE("(%p)->(ref before = %u)\n", This, refCount + 1);
117 
118  if (!refCount)
119  {
120  heap_free(This->path);
121  heap_free(This->displayname);
122  heap_free(This->name);
123  heap_free(This->culture);
124  heap_free(This->procarch);
125  heap_free(This);
126  }
127 
128  return refCount;
129 }
static IAssemblyNameImpl * impl_from_IAssemblyName(IAssemblyName *iface)
Definition: asmname.c:75
#define TRACE(s)
Definition: solgame.cpp:4
#define InterlockedDecrement
Definition: armddk.h:52
unsigned int ULONG
Definition: retypes.h:1
static BOOL heap_free(void *mem)
Definition: appwiz.h:75

◆ IAssemblyNameImpl_Reserved()

static HRESULT WINAPI IAssemblyNameImpl_Reserved ( IAssemblyName iface,
REFIID  refIID,
IUnknown pUnkReserved1,
IUnknown pUnkReserved2,
LPCOLESTR  szReserved,
LONGLONG  llReserved,
LPVOID  pvReserved,
DWORD  cbReserved,
LPVOID ppReserved 
)
static

Definition at line 394 of file asmname.c.

403 {
404  TRACE("(%p, %s, %p, %p, %s, %s, %p, %d, %p)\n", iface,
405  debugstr_guid(refIID), pUnkReserved1, pUnkReserved2,
406  debugstr_w(szReserved), wine_dbgstr_longlong(llReserved),
407  pvReserved, cbReserved, ppReserved);
408 
409  return E_NOTIMPL;
410 }
static LPCWSTR DWORD LPVOID pvReserved
Definition: asmname.c:40
#define debugstr_w
Definition: kernel32.h:32
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
#define E_NOTIMPL
Definition: ddrawi.h:99
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:41

◆ IAssemblyNameImpl_SetProperty()

static HRESULT WINAPI IAssemblyNameImpl_SetProperty ( IAssemblyName iface,
DWORD  PropertyId,
LPVOID  pvProperty,
DWORD  cbProperty 
)
static

Definition at line 131 of file asmname.c.

135 {
136  FIXME("(%p, %d, %p, %d) stub!\n", iface, PropertyId, pvProperty, cbProperty);
137  return E_NOTIMPL;
138 }
_In_ PSTORAGE_PROPERTY_ID PropertyId
Definition: classpnp.h:966
#define FIXME(fmt,...)
Definition: debug.h:110
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ impl_from_IAssemblyName()

static IAssemblyNameImpl* impl_from_IAssemblyName ( IAssemblyName iface)
inlinestatic

Definition at line 75 of file asmname.c.

76 {
77  return CONTAINING_RECORD(iface, IAssemblyNameImpl, IAssemblyName_iface);
78 }
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)
Definition: Messaging.c:560

Referenced by IAssemblyNameImpl_AddRef(), IAssemblyNameImpl_GetDisplayName(), IAssemblyNameImpl_GetName(), IAssemblyNameImpl_GetProperty(), IAssemblyNameImpl_GetVersion(), IAssemblyNameImpl_IsEqual(), IAssemblyNameImpl_QueryInterface(), IAssemblyNameImpl_Release(), and unsafe_impl_from_IAssemblyName().

◆ is_hex()

static BOOL is_hex ( WCHAR  c)
static

Definition at line 592 of file asmname.c.

593 {
594  return ((c >= 'a' && c <= 'f') ||
595  (c >= 'A' && c <= 'F') ||
596  (c >= '0' && c <= '9'));
597 }
const GLubyte * c
Definition: glext.h:8905

Referenced by parse_pubkey().

◆ parse_culture()

static HRESULT parse_culture ( IAssemblyNameImpl name,
LPCWSTR  culture 
)
static

Definition at line 580 of file asmname.c.

581 {
582  static const WCHAR empty[] = {0};
583 
584  if (lstrlenW(culture) == 2)
585  name->culture = strdupW(culture);
586  else
587  name->culture = strdupW(empty);
588 
589  return S_OK;
590 }
static WCHAR * strdupW(const WCHAR *src)
Definition: main.c:92
#define lstrlenW
Definition: compat.h:415
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define S_OK
Definition: intsafe.h:59
BOOL empty
Definition: button.c:170
Definition: name.c:38
static const WCHAR culture[]
Definition: asmname.c:67

Referenced by parse_display_name().

◆ parse_display_name()

static HRESULT parse_display_name ( IAssemblyNameImpl name,
LPCWSTR  szAssemblyName 
)
static

Definition at line 684 of file asmname.c.

685 {
686  LPWSTR str, save, ptr, ptr2, value;
687  HRESULT hr = S_OK;
688  BOOL done = FALSE;
689 
690  if (!szAssemblyName)
691  return S_OK;
692 
693  name->displayname = strdupW(szAssemblyName);
694  if (!name->displayname)
695  return E_OUTOFMEMORY;
696 
698  save = str;
699  if (!str)
700  {
701  hr = E_OUTOFMEMORY;
702  goto done;
703  }
704 
705  ptr = wcschr(str, ',');
706  if (ptr) *ptr = '\0';
707 
708  /* no ',' but ' ' only */
709  if( !ptr && wcschr(str, ' ') )
710  {
712  goto done;
713  }
714 
715  name->name = strdupW(str);
716  if (!name->name)
717  {
718  hr = E_OUTOFMEMORY;
719  goto done;
720  }
721 
722  if (!ptr)
723  goto done;
724 
725  str = ptr + 1;
726  while (!done)
727  {
728  ptr = wcschr(str, '=');
729  if (!ptr)
730  {
732  goto done;
733  }
734 
735  *(ptr++) = '\0';
736  if (!*ptr)
737  {
739  goto done;
740  }
741 
742  if (!(ptr2 = wcschr(ptr, ',')))
743  {
744  if (!(ptr2 = wcschr(ptr, '\0')))
745  {
747  goto done;
748  }
749 
750  done = TRUE;
751  }
752 
753  *ptr2 = '\0';
754  if (!(value = parse_value( ptr, ptr2 - ptr )))
755  {
757  goto done;
758  }
759  while (*str == ' ') str++;
760 
761  if (!lstrcmpiW(str, version))
762  hr = parse_version( name, value );
763  else if (!lstrcmpiW(str, culture))
764  hr = parse_culture( name, value );
765  else if (!lstrcmpiW(str, pubkey))
766  hr = parse_pubkey( name, value );
767  else if (!lstrcmpiW(str, procarch))
768  {
769  name->procarch = value;
770  value = NULL;
771 
772  hr = parse_procarch( name, name->procarch );
773  }
774  heap_free( value );
775 
776  if (FAILED(hr))
777  goto done;
778 
779  str = ptr2 + 1;
780  }
781 
782 done:
783  heap_free(save);
784  if (FAILED(hr))
785  {
786  heap_free(name->displayname);
787  heap_free(name->name);
788  heap_free(name->culture);
789  heap_free(name->procarch);
790  }
791  return hr;
792 }
static HRESULT parse_version(IAssemblyNameImpl *name, LPWSTR version)
Definition: asmname.c:555
#define TRUE
Definition: types.h:120
static WCHAR * parse_value(const WCHAR *str, unsigned int len)
Definition: asmname.c:661
HRESULT hr
Definition: shlfolder.c:183
static WCHAR * strdupW(const WCHAR *src)
Definition: main.c:92
static const WCHAR pubkey[]
Definition: asmname.c:68
static LPCWSTR szAssemblyName
Definition: asmname.c:40
static const WCHAR procarch[]
Definition: asmname.c:70
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:194
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
unsigned int BOOL
Definition: ntddk_ex.h:94
static PVOID ptr
Definition: dispmode.c:27
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
static const WCHAR version[]
Definition: asmname.c:66
static HRESULT parse_procarch(IAssemblyNameImpl *name, LPCWSTR procarch)
Definition: asmname.c:637
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
LONG HRESULT
Definition: typedefs.h:77
#define FUSION_E_INVALID_NAME
Definition: corerror.h:123
static HRESULT parse_culture(IAssemblyNameImpl *name, LPCWSTR culture)
Definition: asmname.c:580
GLsizei const GLfloat * value
Definition: glext.h:6069
#define S_OK
Definition: intsafe.h:59
Definition: name.c:38
static const WCHAR culture[]
Definition: asmname.c:67
WCHAR * LPWSTR
Definition: xmlstorage.h:184
static HRESULT parse_pubkey(IAssemblyNameImpl *name, LPCWSTR pubkey)
Definition: asmname.c:610
WCHAR * name
Definition: name.c:42
static BOOL heap_free(void *mem)
Definition: appwiz.h:75

Referenced by CreateAssemblyNameObject().

◆ parse_procarch()

static HRESULT parse_procarch ( IAssemblyNameImpl name,
LPCWSTR  procarch 
)
static

Definition at line 637 of file asmname.c.

638 {
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};
643 
644  if (!lstrcmpiW(procarch, msilW))
645  name->pekind = peMSIL;
646  else if (!lstrcmpiW(procarch, x86W))
647  name->pekind = peI386;
648  else if (!lstrcmpiW(procarch, ia64W))
649  name->pekind = peIA64;
650  else if (!lstrcmpiW(procarch, amd64W))
651  name->pekind = peAMD64;
652  else
653  {
654  ERR("unrecognized architecture: %s\n", wine_dbgstr_w(procarch));
655  return FUSION_E_INVALID_NAME;
656  }
657 
658  return S_OK;
659 }
char * wine_dbgstr_w(const wchar_t *wstr)
Definition: atltest.h:87
static const WCHAR procarch[]
Definition: asmname.c:70
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:194
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define FUSION_E_INVALID_NAME
Definition: corerror.h:123
#define ERR(fmt,...)
Definition: debug.h:109
#define S_OK
Definition: intsafe.h:59
Definition: name.c:38

Referenced by parse_display_name().

◆ parse_pubkey()

static HRESULT parse_pubkey ( IAssemblyNameImpl name,
LPCWSTR  pubkey 
)
static

Definition at line 610 of file asmname.c.

611 {
612  int i;
613  BYTE val;
614  static const WCHAR nullstr[] = {'n','u','l','l',0};
615 
616  if(lstrcmpiW(pubkey, nullstr) == 0)
618 
620  return FUSION_E_INVALID_NAME;
621 
622  for (i = 0; i < CHARS_PER_PUBKEY; i++)
623  if (!is_hex(pubkey[i]))
624  return FUSION_E_INVALID_NAME;
625 
626  name->haspubkey = TRUE;
627 
628  for (i = 0; i < CHARS_PER_PUBKEY; i += 2)
629  {
630  val = (hextobyte(pubkey[i]) << 4) + hextobyte(pubkey[i + 1]);
631  name->pubkey[i / 2] = val;
632  }
633 
634  return S_OK;
635 }
#define TRUE
Definition: types.h:120
static const WCHAR pubkey[]
Definition: asmname.c:68
#define FUSION_E_PRIVATE_ASM_DISALLOWED
Definition: corerror.h:122
#define CHARS_PER_PUBKEY
Definition: asmname.c:73
#define lstrlenW
Definition: compat.h:415
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:194
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
Definition: glfuncs.h:248
static BOOL is_hex(WCHAR c)
Definition: asmname.c:592
GLuint GLfloat * val
Definition: glext.h:7180
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define FUSION_E_INVALID_NAME
Definition: corerror.h:123
unsigned char BYTE
Definition: mem.h:68
#define S_OK
Definition: intsafe.h:59
Definition: name.c:38
static BYTE hextobyte(WCHAR c)
Definition: asmname.c:599

Referenced by parse_display_name().

◆ parse_value()

static WCHAR* parse_value ( const WCHAR str,
unsigned int  len 
)
static

Definition at line 661 of file asmname.c.

662 {
663  WCHAR *ret;
664  const WCHAR *p = str;
665  BOOL quoted = FALSE;
666  unsigned int i = 0;
667 
668  if (!(ret = heap_alloc( (len + 1) * sizeof(WCHAR) ))) return NULL;
669  if (*p == '\"')
670  {
671  quoted = TRUE;
672  p++;
673  }
674  while (*p && *p != '\"') ret[i++] = *p++;
675  if ((quoted && *p != '\"') || (!quoted && *p == '\"'))
676  {
677  heap_free( ret );
678  return NULL;
679  }
680  ret[i] = 0;
681  return ret;
682 }
#define TRUE
Definition: types.h:120
static void * heap_alloc(size_t len)
Definition: appwiz.h:65
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
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
__wchar_t WCHAR
Definition: xmlstorage.h:180
int ret
GLenum GLsizei len
Definition: glext.h:6722
GLfloat GLfloat p
Definition: glext.h:8902
static BOOL heap_free(void *mem)
Definition: appwiz.h:75

Referenced by parse_display_name().

◆ parse_version()

static HRESULT parse_version ( IAssemblyNameImpl name,
LPWSTR  version 
)
static

Definition at line 555 of file asmname.c.

556 {
557  LPWSTR beg, end;
558  int i;
559 
560  for (i = 0, beg = version; i < 4; i++)
561  {
562  if (!*beg)
563  return S_OK;
564 
565  end = wcschr(beg, '.');
566 
567  if (end) *end = '\0';
568  name->version[i] = wcstol(beg, NULL, 10);
569  name->versize++;
570 
571  if (!end && i < 3)
572  return S_OK;
573 
574  beg = end + 1;
575  }
576 
577  return S_OK;
578 }
WCHAR * version
Definition: name.c:46
GLuint GLuint end
Definition: gl.h:1545
_Check_return_ long __cdecl wcstol(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
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
Definition: glfuncs.h:248
smooth NULL
Definition: ftsmooth.c:416
static const WCHAR version[]
Definition: asmname.c:66
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
#define S_OK
Definition: intsafe.h:59
Definition: name.c:38
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Referenced by parse_display_name().

◆ unsafe_impl_from_IAssemblyName()

static IAssemblyNameImpl* unsafe_impl_from_IAssemblyName ( IAssemblyName iface)
inlinestatic

Definition at line 516 of file asmname.c.

517 {
518  assert(iface->lpVtbl == &AssemblyNameVtbl);
519 
520  return impl_from_IAssemblyName(iface);
521 }
#define assert(x)
Definition: debug.h:53
static IAssemblyNameImpl * impl_from_IAssemblyName(IAssemblyName *iface)
Definition: asmname.c:75
static const IAssemblyNameVtbl AssemblyNameVtbl
Definition: asmname.c:500

Referenced by IAssemblyName_GetPath(), and IAssemblyName_SetPath().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( fusion  )

Variable Documentation

◆ AssemblyNameVtbl

const IAssemblyNameVtbl AssemblyNameVtbl
static
Initial value:
= {
}
static HRESULT WINAPI IAssemblyNameImpl_GetProperty(IAssemblyName *iface, DWORD PropertyId, LPVOID pvProperty, LPDWORD pcbProperty)
Definition: asmname.c:140
static HRESULT WINAPI IAssemblyNameImpl_GetName(IAssemblyName *iface, LPDWORD lpcwBuffer, WCHAR *pwzName)
Definition: asmname.c:412
static HRESULT WINAPI IAssemblyNameImpl_Finalize(IAssemblyName *iface)
Definition: asmname.c:258
static HRESULT WINAPI IAssemblyNameImpl_GetVersion(IAssemblyName *iface, LPDWORD pdwVersionHi, LPDWORD pdwVersionLow)
Definition: asmname.c:438
static HRESULT WINAPI IAssemblyNameImpl_SetProperty(IAssemblyName *iface, DWORD PropertyId, LPVOID pvProperty, DWORD cbProperty)
Definition: asmname.c:131
static HRESULT WINAPI IAssemblyNameImpl_Clone(IAssemblyName *iface, IAssemblyName **pName)
Definition: asmname.c:493
static HRESULT WINAPI IAssemblyNameImpl_IsEqual(IAssemblyName *iface, IAssemblyName *pName, DWORD flags)
Definition: asmname.c:458
static ULONG WINAPI IAssemblyNameImpl_AddRef(IAssemblyName *iface)
Definition: asmname.c:101
static HRESULT WINAPI IAssemblyNameImpl_Reserved(IAssemblyName *iface, REFIID refIID, IUnknown *pUnkReserved1, IUnknown *pUnkReserved2, LPCOLESTR szReserved, LONGLONG llReserved, LPVOID pvReserved, DWORD cbReserved, LPVOID *ppReserved)
Definition: asmname.c:394
static HRESULT WINAPI IAssemblyNameImpl_GetDisplayName(IAssemblyName *iface, LPOLESTR szDisplayName, LPDWORD pccDisplayName, DWORD dwDisplayFlags)
Definition: asmname.c:264
static HRESULT WINAPI IAssemblyNameImpl_QueryInterface(IAssemblyName *iface, REFIID riid, LPVOID *ppobj)
Definition: asmname.c:80
static ULONG WINAPI IAssemblyNameImpl_Release(IAssemblyName *iface)
Definition: asmname.c:111

Definition at line 500 of file asmname.c.

Referenced by CreateAssemblyNameObject(), and unsafe_impl_from_IAssemblyName().

◆ culture

◆ procarch

const WCHAR procarch[]
static
Initial value:
= {'p','r','o','c','e','s','s','o','r',
'A','r','c','h','i','t','e','c','t','u','r','e',0}

Definition at line 70 of file asmname.c.

Referenced by IAssemblyNameImpl_GetDisplayName(), parse_display_name(), and parse_procarch().

◆ pubkey

const WCHAR pubkey[]
static
Initial value:
=
{'P','u','b','l','i','c','K','e','y','T','o','k','e','n',0}

Definition at line 68 of file asmname.c.

Referenced by assembly_get_pubkey_token(), CryptImportKey(), IAssemblyNameImpl_GetDisplayName(), parse_display_name(), parse_pubkey(), and test_QueryAssemblyInfo().

◆ separator

◆ version

const WCHAR version[] = {'V','e','r','s','i','o','n',0}
static

Definition at line 66 of file asmname.c.

Referenced by __rpcb_findaddr_timed(), _TestVesion(), acmGetVersion(), ACTION_FileVersionMatches(), add_widl_version_define(), assembly_get_runtime_version(), assembly_get_version(), build_assembly_id(), build_assembly_name(), build_file_mask(), build_manifest_filename(), build_manifest_path(), build_policy_filename(), build_policy_path(), build_request_header(), cache_QueryAssemblyInfo(), cache_UninstallAssembly(), CHashEncodeMsg_GetParam(), check_tiff_format(), check_version(), clnt_dg_create(), CLRMetaHost_GetVersionFromFile(), CLRRuntimeInfo_GetRuntimeDirectory(), CLRRuntimeInfo_GetVersionString(), CLRRuntimeInfo_LoadLibrary(), CompareStringEx(), component_GetVersion(), component_IsThisVersionInstalled(), create_database_wordcount(), create_msft_typelib(), create_webbrowser(), create_writer(), CreateDebuggingInterfaceFromVersion(), CRYPT_AsnDecodeCMSSignedInfo(), CRYPT_AsnDecodePKCSDigestedData(), CRYPT_AsnDecodePKCSEnvelopedData(), CRYPT_AsnDecodeRsaPrivKey(), d3d_device_create(), d3d_device_init(), d3drm_device_init(), D3DXDisassembleShader(), D3DXFindShaderComment(), ddraw_surface_create(), ddraw_surface_init(), debugstr_dmversion(), deflateInit2_(), deflateInit_(), DetectPlatform(), DirectInput8Create(), DllMain(), enum_gac_assemblies(), examine_app14(), filesys_GetFileVersion(), fill_keyboard_dideviceinstanceA(), fill_keyboard_dideviceinstanceW(), fill_mouse_dideviceinstanceA(), fill_mouse_dideviceinstanceW(), fill_processor(), find_builtin_prop(), get_app_version(), get_assembly_directory(), get_clr_version(), get_clr_version_str(), get_corversion(), get_device_type(), get_file_version(), get_mono_path_from_registry(), get_msxml_version(), get_processor_version(), get_runtime_info(), get_version_info(), get_versionstring(), GetCachePath(), GetUIVersion(), gl_GetString(), glsl_is_shadow_sampler(), gxv_bsln_validate(), gxv_just_validate(), gxv_kern_subtable_validate(), gxv_kern_validate_generic(), gxv_lcar_validate(), gxv_mort_validate(), gxv_morx_validate(), gxv_opbd_validate(), gxv_prop_property_validate(), gxv_prop_validate(), gxv_trak_validate(), hash_basename(), HTMLDOMImplementation_hasFeature(), HttpCreateRequestQueue(), HttpCreateServerSession(), HttpInitialize(), IAssemblyCacheImpl_InstallAssembly(), IAssemblyNameImpl_GetDisplayName(), IDirectInput8AImpl_Initialize(), IDirectInput8WImpl_Initialize(), IDirectInputAImpl_Initialize(), ImmGetVirtualKey(), inflateBackInit_(), inflateInit2_(), inflateInit_(), InstallerImpl_Version(), is_vertex_shader(), iso_recv_msg(), ITERATE_UnregisterTypeLibraries(), joystick_tests(), jpeg_CreateCompress(), jpeg_CreateDecompress(), JSPROXY_InternetInitializeAutoProxyDll(), keyboard_tests(), keyboarddev_enum_deviceA(), keyboarddev_enum_deviceW(), LCMapStringEx(), ldap_startup(), lineGetCountryW(), load_wine_gecko_v(), LoadLibraryShim(), LoadMenuIndirectW(), main(), match_languages(), MetadataReaderInfo_GetSpecVersion(), MetadataReaderInfo_GetVersion(), mousedev_enum_deviceA(), mousedev_enum_deviceW(), msi_compare_file_versions(), msi_font_version_from_file(), msi_get_disk_file_version(), MSI_GetComponentPath(), msi_version_str_to_dword(), MsiGetFileVersionW(), MSSTYLES_OpenThemeFile(), MXWriter_create(), mxwriter_get_version(), mxwriter_put_version(), name_GetDisplayName(), name_GetVersion(), nfs41_mount(), nfs41_send_compound(), nfs41_shutdown_daemon(), nfs41_unmount(), nfs41_UpcallCreate(), OLEFontImpl_Load(), OLEFontImpl_Save(), OpenBookmarkFile(), otv_BASE_validate(), otv_GDEF_validate(), otv_GPOS_validate(), otv_GSUB_validate(), output_typelib_regscript(), XMLStorage::XMLReaderBase::parse(), parse_assembly_elem(), parse_cie_details(), parse_display_name(), parse_runtime_version(), parse_supported_runtime(), parse_version(), ParseFile(), PdhGetDllVersion(), per_user_install_callback(), pmap_getport(), pmap_set(), pmap_unset(), pointer_default(), PRINTF_ATTR(), process_pdu_logon(), profile3_GetVersion(), CCMIAdapter::queryChip(), read_version_entry(), register_avicap_devices(), rpc_should_retry(), rpcb_getaddr(), rpcb_set(), rpcb_unset(), SAXAttributes_create(), SdbpReadFileVersion(), SECUR32_initNTLMSP(), set_msi_assembly_prop(), SetPerUserSecValuesW(), sfnt_init_face(), sfnt_open_font(), shader_generate_glsl_declarations(), shader_glsl_atomic(), shader_glsl_gen_sample_c_lz(), shader_glsl_generate_pshader(), shader_glsl_generate_vshader(), shader_glsl_get_register_name(), shader_glsl_ld_uav(), shader_glsl_load_constants_f(), shader_glsl_resinfo(), shader_glsl_ret(), shader_glsl_store_uav(), START_TEST(), Status(), TcRegisterClient(), test_appsearch_drlocator(), test_appsearch_inilocator(), test_appsearch_reglocator(), test_assoc_perceived(), test_find_surrogate(), test_GetCachePath(), test_GetFileVersion(), test_GetTempPathW(), test_height_selection_vdmx(), test_ldap_get_optionW(), test_MsiGetFileVersion(), test_OleDoAutoConvert(), test_pack_SHELLSTATE(), test_PdhGetDllVersion(), test_request_parameter_defaults(), test_service_flags(), test_text_metrics(), test_UuidCreate(), test_UuidCreateSequential(), test_version(), test_versioninfo(), test_WithWSAStartup(), TestV5VersionMessage(), TestVersionMessage(), tt_face_get_kerning(), tt_face_load_maxp(), tt_face_load_os2(), UniataAhciDetect(), UniAtaAhciValidateVersion(), upcall_parse(), update_heap_entry(), VfdOpenDevice(), walk_constant_heap(), walk_constant_heap_clamped(), warning(), WinHttpOpenRequest(), WMProfileManager2_GetSystemProfileVersion(), WMProfileManager2_SetSystemProfileVersion(), WMProfileManager_CreateEmptyProfile(), write_coclass(), write_msi_summary_info(), write_typelib_interface(), xmlCheckVersion(), XMLStorage::XMLReaderBase::XmlDeclHandler(), xmlParseTextDecl(), xmlParseVersionInfo(), xmlParseXMLDecl(), xmlSAXVersion(), xsltApplyStylesheetInternal(), xsltDocumentElem(), and xsltGetHTMLIDs().