ReactOS  0.4.14-dev-583-g2a1ba2c
fusionpriv.h File Reference
#include <stdarg.h>
#include "ntstatus.h"
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "winver.h"
#include "wine/heap.h"
#include <pshpack1.h>
#include <poppack.h>
Include dependency graph for fusionpriv.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  METADATAHDR
 
struct  METADATASTREAMHDR
 
struct  METADATATABLESHDR
 
struct  MODULETABLE
 
struct  TYPEDEFTABLE
 
struct  TYPEREFTABLE
 
struct  FIELDTABLE
 
struct  ASSEMBLYTABLE
 
struct  MANIFESTRESTABLE
 
struct  METHODDEFTABLE
 
struct  PARAMTABLE
 
struct  INTERFACEIMPLTABLE
 
struct  MEMBERREFTABLE
 
struct  CONSTANTTABLE
 
struct  CUSTOMATTRIBUTETABLE
 
struct  FIELDMARSHALTABLE
 
struct  DECLSECURITYTABLE
 
struct  CLASSLAYOUTTABLE
 
struct  FIELDLAYOUTTABLE
 
struct  STANDALONESIGTABLE
 
struct  EVENTMAPTABLE
 
struct  EVENTTABLE
 
struct  PROPERTYMAPTABLE
 
struct  PROPERTYTABLE
 
struct  METHODSEMANTICSTABLE
 
struct  METHODIMPLTABLE
 
struct  MODULEREFTABLE
 
struct  TYPESPECTABLE
 
struct  IMPLMAPTABLE
 
struct  FIELDRVATABLE
 
struct  ASSEMBLYPROCESSORTABLE
 
struct  ASSEMBLYOSTABLE
 
struct  ASSEMBLYREFTABLE
 
struct  ASSEMBLYREFPROCESSORTABLE
 
struct  ASSEMBLYREFOSTABLE
 
struct  FILETABLE
 
struct  EXPORTEDTYPETABLE
 
struct  NESTEDCLASSTABLE
 
struct  GENERICPARAMTABLE
 
struct  METHODSPECTABLE
 
struct  GENERICPARAMCONSTRAINTTABLE
 
struct  IMPORTTABLE
 
struct  IMPORTLOOKUPTABLE
 
struct  HINTNAMETABLE
 
struct  RELOCATION
 
struct  VS_VERSIONINFO
 
struct  VARFILEINFO
 
struct  VAR
 
struct  STRINGFILEINFO
 
struct  STRINGTABLE
 
struct  STRINGHDR
 
struct  RESOURCE
 

Macros

#define WIN32_NO_STATUS
 
#define BYTES_PER_TOKEN   8
 
#define CHARS_PER_BYTE   2
 
#define TOKEN_LENGTH   (BYTES_PER_TOKEN * CHARS_PER_BYTE + 1)
 

Typedefs

typedef struct tagASSEMBLY ASSEMBLY
 

Functions

HRESULT assembly_create (ASSEMBLY **out, LPCWSTR file) DECLSPEC_HIDDEN
 
HRESULT assembly_release (ASSEMBLY *assembly) DECLSPEC_HIDDEN
 
HRESULT assembly_get_name (ASSEMBLY *assembly, LPWSTR *name) DECLSPEC_HIDDEN
 
HRESULT assembly_get_path (const ASSEMBLY *assembly, LPWSTR *path) DECLSPEC_HIDDEN
 
HRESULT assembly_get_version (ASSEMBLY *assembly, LPWSTR *version) DECLSPEC_HIDDEN
 
PEKIND assembly_get_architecture (ASSEMBLY *assembly) DECLSPEC_HIDDEN
 
HRESULT assembly_get_pubkey_token (ASSEMBLY *assembly, LPWSTR *token) DECLSPEC_HIDDEN
 
HRESULT assembly_get_runtime_version (ASSEMBLY *assembly, LPSTR *version) DECLSPEC_HIDDEN
 
HRESULT assembly_get_external_files (ASSEMBLY *assembly, LPWSTR **files, DWORD *count) DECLSPEC_HIDDEN
 
HRESULT IAssemblyName_SetPath (IAssemblyName *iface, LPCWSTR path) DECLSPEC_HIDDEN
 
HRESULT IAssemblyName_GetPath (IAssemblyName *iface, LPWSTR buf, ULONG *len) DECLSPEC_HIDDEN
 
static LPWSTR strdupW (LPCWSTR src)
 
static void token_to_str (BYTE *bytes, LPWSTR str)
 

Macro Definition Documentation

◆ BYTES_PER_TOKEN

#define BYTES_PER_TOKEN   8

Definition at line 466 of file fusionpriv.h.

◆ CHARS_PER_BYTE

#define CHARS_PER_BYTE   2

Definition at line 467 of file fusionpriv.h.

◆ TOKEN_LENGTH

#define TOKEN_LENGTH   (BYTES_PER_TOKEN * CHARS_PER_BYTE + 1)

Definition at line 468 of file fusionpriv.h.

◆ WIN32_NO_STATUS

#define WIN32_NO_STATUS

Definition at line 27 of file fusionpriv.h.

Typedef Documentation

◆ ASSEMBLY

Definition at line 438 of file fusionpriv.h.

Function Documentation

◆ assembly_create()

HRESULT assembly_create ( ASSEMBLY **  out,
LPCWSTR  file 
)

Definition at line 641 of file assembly.c.

642 {
644  HRESULT hr;
645 
646  *out = NULL;
647 
648  if (!(assembly = heap_alloc_zero(sizeof(*assembly)))) return E_OUTOFMEMORY;
649 
650  assembly->path = strdupW(file);
651  if (!assembly->path)
652  {
653  hr = E_OUTOFMEMORY;
654  goto failed;
655  }
656 
659  if (assembly->hfile == INVALID_HANDLE_VALUE)
660  {
662  goto failed;
663  }
664 
666  0, 0, NULL);
667  if (!assembly->hmap)
668  {
670  goto failed;
671  }
672 
673  assembly->data = MapViewOfFile(assembly->hmap, FILE_MAP_READ, 0, 0, 0);
674  if (!assembly->data)
675  {
677  goto failed;
678  }
679 
681  if (FAILED(hr)) goto failed;
682 
684  if (FAILED(hr)) goto failed;
685 
686  *out = assembly;
687  return S_OK;
688 
689 failed:
691  return hr;
692 }
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
#define MapViewOfFile
Definition: compat.h:410
HRESULT hr
Definition: shlfolder.c:183
#define INVALID_HANDLE_VALUE
Definition: compat.h:399
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
static struct _tagASSEMBLY assembly
#define FILE_SHARE_READ
Definition: compat.h:125
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
smooth NULL
Definition: ftsmooth.c:416
#define FILE_MAP_READ
Definition: compat.h:435
#define OPEN_EXISTING
Definition: compat.h:434
LONG HRESULT
Definition: typedefs.h:77
#define CreateFileMappingW(a, b, c, d, e, f)
Definition: compat.h:409
static FILE * out
Definition: regtests2xml.c:44
static HRESULT parse_clr_metadata(ASSEMBLY *assembly)
Definition: assembly.c:560
#define FILE_ATTRIBUTE_NORMAL
Definition: compat.h:126
#define GENERIC_READ
Definition: compat.h:124
HRESULT assembly_release(ASSEMBLY *assembly)
Definition: assembly.c:694
#define S_OK
Definition: intsafe.h:59
#define PAGE_READONLY
Definition: compat.h:127
static HRESULT parse_pe_header(ASSEMBLY *assembly)
Definition: assembly.c:603
#define CreateFileW
Definition: compat.h:408
static LPWSTR strdupW(LPCWSTR src)
Definition: assembly.c:67
Definition: fci.c:126

◆ assembly_get_architecture()

PEKIND assembly_get_architecture ( ASSEMBLY assembly)

Definition at line 788 of file assembly.c.

789 {
790  if ((assembly->corhdr->MajorRuntimeVersion == 2) && (assembly->corhdr->MinorRuntimeVersion == 0))
791  return peNone; /* .NET 1.x assembly */
792 
793  if (assembly->nthdr->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC)
794  return peAMD64; /* AMD64/IA64 assembly */
795 
796  if ((assembly->corhdr->Flags & COMIMAGE_FLAGS_ILONLY) && !(assembly->corhdr->Flags & COMIMAGE_FLAGS_32BITREQUIRED))
797  return peMSIL; /* MSIL assembly */
798 
799  return peI386; /* x86 assembly */
800 }
#define IMAGE_NT_OPTIONAL_HDR64_MAGIC
Definition: ntimage.h:377

Referenced by IAssemblyCacheImpl_InstallAssembly().

◆ assembly_get_external_files()

HRESULT assembly_get_external_files ( ASSEMBLY assembly,
LPWSTR **  files,
DWORD count 
)

Definition at line 871 of file assembly.c.

872 {
873  LONG offset;
874  INT i, num_rows;
875  WCHAR **ret;
876  BYTE *ptr;
877  DWORD idx;
878 
879  *count = 0;
880 
881  offset = assembly->tables[TableFromToken(mdtFile)].offset;
882  if (offset == -1)
883  return S_OK;
884 
886  if (!ptr)
887  return S_OK;
888 
889  num_rows = assembly->tables[TableFromToken(mdtFile)].rows;
890  if (num_rows <= 0)
891  return S_OK;
892 
893  if (!(ret = heap_alloc(num_rows * sizeof(WCHAR *)))) return E_OUTOFMEMORY;
894 
895  for (i = 0; i < num_rows; i++)
896  {
897  ptr += sizeof(DWORD); /* skip Flags field */
898  if (assembly->stringsz == sizeof(DWORD))
899  idx = *(DWORD *)ptr;
900  else
901  idx = *(WORD *)ptr;
902 
904  if (!ret[i])
905  {
906  for (; i >= 0; i--) heap_free(ret[i]);
907  heap_free(ret);
908  return E_OUTOFMEMORY;
909  }
910  ptr += assembly->stringsz; /* skip Name field */
911  ptr += assembly->blobsz; /* skip Hash field */
912  }
913  *count = num_rows;
914  *files = ret;
915  return S_OK;
916 }
static VOID * assembly_data_offset(ASSEMBLY *assembly, ULONG offset)
Definition: assembly.c:139
Definition: corhdr.h:41
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLintptr offset
Definition: glext.h:5920
#define TableFromToken(tk)
Definition: assembly.c:39
static DWORD
Definition: assembly.c:34
int32_t INT
Definition: typedefs.h:56
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
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
long LONG
Definition: pedump.c:60
static PVOID ptr
Definition: dispmode.c:27
unsigned int idx
Definition: utils.c:41
__wchar_t WCHAR
Definition: xmlstorage.h:180
int JSAMPARRAY int int num_rows
Definition: jpegint.h:412
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
int ret
unsigned char BYTE
Definition: mem.h:68
#define S_OK
Definition: intsafe.h:59
static LPWSTR assembly_dup_str(const ASSEMBLY *assembly, DWORD index)
Definition: assembly.c:709
static BOOL heap_free(void *mem)
Definition: appwiz.h:75

Referenced by IAssemblyCacheImpl_InstallAssembly().

◆ assembly_get_name()

HRESULT assembly_get_name ( ASSEMBLY assembly,
LPWSTR name 
)

Definition at line 723 of file assembly.c.

724 {
725  BYTE *ptr;
726  LONG offset;
727  DWORD stridx;
728 
729  offset = assembly->tables[TableFromToken(mdtAssembly)].offset;
730  if (offset == -1)
731  return E_FAIL;
732 
734  if (!ptr)
735  return E_FAIL;
736 
737  ptr += FIELD_OFFSET(ASSEMBLYTABLE, PublicKey) + assembly->blobsz;
738  if (assembly->stringsz == sizeof(DWORD))
739  stridx = *(DWORD *)ptr;
740  else
741  stridx = *(WORD *)ptr;
742 
743  *name = assembly_dup_str(assembly, stridx);
744  if (!*name)
745  return E_OUTOFMEMORY;
746 
747  return S_OK;
748 }
static VOID * assembly_data_offset(ASSEMBLY *assembly, ULONG offset)
Definition: assembly.c:139
GLintptr offset
Definition: glext.h:5920
#define TableFromToken(tk)
Definition: assembly.c:39
#define E_FAIL
Definition: ddrawi.h:102
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
long LONG
Definition: pedump.c:60
static PVOID ptr
Definition: dispmode.c:27
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned char BYTE
Definition: mem.h:68
#define S_OK
Definition: intsafe.h:59
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:254
Definition: name.c:38
static LPWSTR assembly_dup_str(const ASSEMBLY *assembly, DWORD index)
Definition: assembly.c:709

Referenced by IAssemblyCacheImpl_InstallAssembly().

◆ assembly_get_path()

HRESULT assembly_get_path ( const ASSEMBLY assembly,
LPWSTR path 
)

Definition at line 750 of file assembly.c.

751 {
752  WCHAR *cpy = heap_alloc((lstrlenW(assembly->path) + 1) * sizeof(WCHAR));
753  *path = cpy;
754  if (cpy)
755  lstrcpyW(cpy, assembly->path);
756  else
757  return E_OUTOFMEMORY;
758 
759  return S_OK;
760 }
#define lstrlenW
Definition: compat.h:415
static void * heap_alloc(size_t len)
Definition: appwiz.h:65
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define S_OK
Definition: intsafe.h:59
#define lstrcpyW
Definition: compat.h:414

Referenced by IAssemblyCacheImpl_InstallAssembly().

◆ assembly_get_pubkey_token()

HRESULT assembly_get_pubkey_token ( ASSEMBLY assembly,
LPWSTR token 
)

Definition at line 807 of file assembly.c.

808 {
809  ULONG i, size;
810  LONG offset;
811  BYTE hashdata[20], *pubkey, *ptr;
812  BCRYPT_ALG_HANDLE alg;
813  BYTE tokbytes[BYTES_PER_TOKEN];
814  HRESULT hr = E_FAIL;
815  LPWSTR tok;
816  DWORD idx;
817 
818  *token = NULL;
819 
820  offset = assembly->tables[TableFromToken(mdtAssembly)].offset;
821  if (offset == -1)
822  return E_FAIL;
823 
825  if (!ptr)
826  return E_FAIL;
827 
828  ptr += FIELD_OFFSET(ASSEMBLYTABLE, PublicKey);
829  if (assembly->blobsz == sizeof(DWORD))
830  idx = *(DWORD *)ptr;
831  else
832  idx = *(WORD *)ptr;
833 
835 
837  return E_FAIL;
838 
839  if (BCryptHash(alg, NULL, 0, pubkey, size, hashdata, sizeof(hashdata)) != STATUS_SUCCESS)
840  {
841  hr = E_FAIL;
842  goto done;
843  }
844 
845  size = sizeof(hashdata);
846  for (i = size - 1; i >= size - 8; i--)
847  tokbytes[size - i - 1] = hashdata[i];
848 
849  if (!(tok = heap_alloc((TOKEN_LENGTH + 1) * sizeof(WCHAR))))
850  {
851  hr = E_OUTOFMEMORY;
852  goto done;
853  }
854 
855  token_to_str(tokbytes, tok);
856 
857  *token = tok;
858  hr = S_OK;
859 
860 done:
862  return hr;
863 }
#define MS_PRIMITIVE_PROVIDER
Definition: bcrypt.h:69
static void token_to_str(BYTE *bytes, LPWSTR str)
Definition: fusionpriv.h:470
static VOID * assembly_data_offset(ASSEMBLY *assembly, ULONG offset)
Definition: assembly.c:139
HRESULT hr
Definition: shlfolder.c:183
static const WCHAR pubkey[]
Definition: asmname.c:68
NTSTATUS WINAPI BCryptCloseAlgorithmProvider(BCRYPT_ALG_HANDLE handle, DWORD flags)
Definition: bcrypt_main.c:374
GLintptr offset
Definition: glext.h:5920
#define TableFromToken(tk)
Definition: assembly.c:39
#define E_FAIL
Definition: ddrawi.h:102
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
NTSTATUS WINAPI BCryptOpenAlgorithmProvider(BCRYPT_ALG_HANDLE *handle, LPCWSTR id, LPCWSTR implementation, DWORD flags)
Definition: bcrypt_main.c:332
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
long LONG
Definition: pedump.c:60
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
Definition: glfuncs.h:210
static PVOID ptr
Definition: dispmode.c:27
static BYTE * assembly_get_blob(ASSEMBLY *assembly, DWORD index, ULONG *size)
Definition: assembly.c:802
unsigned int idx
Definition: utils.c:41
smooth NULL
Definition: ftsmooth.c:416
NTSTATUS WINAPI BCryptHash(BCRYPT_ALG_HANDLE algorithm, UCHAR *secret, ULONG secretlen, UCHAR *input, ULONG inputlen, UCHAR *output, ULONG outputlen)
Definition: bcrypt_main.c:1090
GLsizeiptr size
Definition: glext.h:5919
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned char BYTE
Definition: mem.h:68
#define S_OK
Definition: intsafe.h:59
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:254
#define BYTES_PER_TOKEN
Definition: fusionpriv.h:466
#define TOKEN_LENGTH
Definition: fusionpriv.h:468
unsigned int ULONG
Definition: retypes.h:1
WCHAR * LPWSTR
Definition: xmlstorage.h:184
return STATUS_SUCCESS
Definition: btrfs.c:2938
#define BCRYPT_SHA1_ALGORITHM
Definition: bcrypt.h:74

Referenced by IAssemblyCacheImpl_InstallAssembly().

◆ assembly_get_runtime_version()

HRESULT assembly_get_runtime_version ( ASSEMBLY assembly,
LPSTR version 
)

Definition at line 865 of file assembly.c.

866 {
867  *version = assembly->metadatahdr->Version;
868  return S_OK;
869 }
static const WCHAR version[]
Definition: asmname.c:66
#define S_OK
Definition: intsafe.h:59

◆ assembly_get_version()

HRESULT assembly_get_version ( ASSEMBLY assembly,
LPWSTR version 
)

Definition at line 762 of file assembly.c.

763 {
764  static const WCHAR format[] = {'%','u','.','%','u','.','%','u','.','%','u',0};
765 
766  ASSEMBLYTABLE *asmtbl;
767  LONG offset;
768 
769  *version = NULL;
770 
771  offset = assembly->tables[TableFromToken(mdtAssembly)].offset;
772  if (offset == -1)
773  return E_FAIL;
774 
776  if (!asmtbl)
777  return E_FAIL;
778 
779  if (!(*version = heap_alloc(24 * sizeof(WCHAR))))
780  return E_OUTOFMEMORY;
781 
782  swprintf(*version, format, asmtbl->MajorVersion, asmtbl->MinorVersion,
783  asmtbl->BuildNumber, asmtbl->RevisionNumber);
784 
785  return S_OK;
786 }
WORD RevisionNumber
Definition: fusionpriv.h:110
static VOID * assembly_data_offset(ASSEMBLY *assembly, ULONG offset)
Definition: assembly.c:139
GLintptr offset
Definition: glext.h:5920
#define TableFromToken(tk)
Definition: assembly.c:39
#define E_FAIL
Definition: ddrawi.h:102
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
static void * heap_alloc(size_t len)
Definition: appwiz.h:65
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
long LONG
Definition: pedump.c:60
WORD BuildNumber
Definition: fusionpriv.h:109
smooth NULL
Definition: ftsmooth.c:416
static const WCHAR version[]
Definition: asmname.c:66
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define swprintf(buf, format,...)
Definition: sprintf.c:56
WORD MajorVersion
Definition: fusionpriv.h:107
#define S_OK
Definition: intsafe.h:59
WORD MinorVersion
Definition: fusionpriv.h:108

Referenced by IAssemblyCacheImpl_InstallAssembly().

◆ assembly_release()

HRESULT assembly_release ( ASSEMBLY assembly)

Definition at line 694 of file assembly.c.

695 {
696  if (!assembly)
697  return S_OK;
698 
699  heap_free(assembly->metadatahdr);
700  heap_free(assembly->path);
701  UnmapViewOfFile(assembly->data);
702  CloseHandle(assembly->hmap);
703  CloseHandle(assembly->hfile);
705 
706  return S_OK;
707 }
#define CloseHandle
Definition: compat.h:406
#define S_OK
Definition: intsafe.h:59
#define UnmapViewOfFile
Definition: compat.h:411
static BOOL heap_free(void *mem)
Definition: appwiz.h:75

◆ 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().

◆ strdupW()

static LPWSTR strdupW ( LPCWSTR  src)
inlinestatic

Definition at line 453 of file fusionpriv.h.

454 {
455  LPWSTR dest;
456 
457  if (!src)
458  return NULL;
459 
460  if ((dest = heap_alloc((lstrlenW(src) + 1) * sizeof(WCHAR))))
461  lstrcpyW(dest, src);
462 
463  return dest;
464 }
#define lstrlenW
Definition: compat.h:415
static void * heap_alloc(size_t len)
Definition: appwiz.h:65
smooth NULL
Definition: ftsmooth.c:416
__wchar_t WCHAR
Definition: xmlstorage.h:180
GLenum src
Definition: glext.h:6340
#define lstrcpyW
Definition: compat.h:414
static char * dest
Definition: rtl.c:135
WCHAR * LPWSTR
Definition: xmlstorage.h:184

◆ token_to_str()

static void token_to_str ( BYTE bytes,
LPWSTR  str 
)
inlinestatic

Definition at line 470 of file fusionpriv.h.

471 {
472  DWORD i;
473 
474  static const WCHAR hexval[] = {
475  '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'
476  };
477 
478  for(i = 0; i < BYTES_PER_TOKEN; i++)
479  {
480  str[i * 2] = hexval[((bytes[i] >> 4) & 0xF)];
481  str[i * 2 + 1] = hexval[(bytes[i]) & 0x0F];
482  }
483  str[i * 2] = 0;
484 }
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 unsigned char bytes[4]
Definition: adnsresfilter.c:74
const WCHAR * str
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned long DWORD
Definition: ntddk_ex.h:95
#define BYTES_PER_TOKEN
Definition: fusionpriv.h:466

Referenced by assembly_get_pubkey_token(), build_file_mask(), and compare_assembly_names().