2008-09-10 08:47:30 +00:00
|
|
|
/*
|
|
|
|
* fusion private definitions
|
|
|
|
*
|
|
|
|
* Copyright 2008 James Hawkins
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __WINE_FUSION_PRIVATE__
|
|
|
|
#define __WINE_FUSION_PRIVATE__
|
|
|
|
|
|
|
|
#include <stdarg.h>
|
|
|
|
|
|
|
|
#include "windef.h"
|
|
|
|
#include "winbase.h"
|
|
|
|
#include "winuser.h"
|
2009-05-20 14:43:24 +00:00
|
|
|
#include "winver.h"
|
2008-09-10 08:47:30 +00:00
|
|
|
|
|
|
|
#include <pshpack1.h>
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
ULONG Signature;
|
|
|
|
USHORT MajorVersion;
|
|
|
|
USHORT MinorVersion;
|
|
|
|
ULONG Reserved;
|
|
|
|
ULONG VersionLength;
|
|
|
|
LPSTR Version;
|
|
|
|
BYTE Flags;
|
|
|
|
WORD Streams;
|
|
|
|
} METADATAHDR;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD Offset;
|
|
|
|
DWORD Size;
|
|
|
|
} METADATASTREAMHDR;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD Reserved1;
|
|
|
|
BYTE MajorVersion;
|
|
|
|
BYTE MinorVersion;
|
|
|
|
BYTE HeapOffsetSizes;
|
|
|
|
BYTE Reserved2;
|
|
|
|
LARGE_INTEGER MaskValid;
|
|
|
|
LARGE_INTEGER MaskSorted;
|
|
|
|
} METADATATABLESHDR;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Generation;
|
|
|
|
WORD Name;
|
|
|
|
WORD Mvid;
|
|
|
|
WORD EncId;
|
|
|
|
WORD EncBaseId;
|
|
|
|
} MODULETABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD Flags;
|
|
|
|
WORD Name;
|
|
|
|
WORD Namespace;
|
|
|
|
WORD Extends;
|
|
|
|
WORD FieldList;
|
|
|
|
WORD MethodList;
|
|
|
|
} TYPEDEFTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD ResolutionScope;
|
|
|
|
WORD Name;
|
|
|
|
WORD Namespace;
|
|
|
|
} TYPEREFTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Flags;
|
|
|
|
WORD Name;
|
|
|
|
WORD Signature;
|
|
|
|
} FIELDTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD HashAlgId;
|
|
|
|
WORD MajorVersion;
|
|
|
|
WORD MinorVersion;
|
|
|
|
WORD BuildNumber;
|
|
|
|
WORD RevisionNumber;
|
|
|
|
DWORD Flags;
|
|
|
|
WORD PublicKey;
|
|
|
|
WORD Name;
|
|
|
|
WORD Culture;
|
|
|
|
} ASSEMBLYTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD Offset;
|
|
|
|
DWORD Flags;
|
|
|
|
WORD Name;
|
|
|
|
WORD Implementation;
|
|
|
|
} MANIFESTRESTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD RVA;
|
|
|
|
WORD ImplFlags;
|
|
|
|
WORD Flags;
|
|
|
|
WORD Name;
|
|
|
|
WORD Signature;
|
|
|
|
WORD ParamList;
|
|
|
|
} METHODDEFTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Flags;
|
|
|
|
WORD Sequence;
|
|
|
|
WORD Name;
|
|
|
|
} PARAMTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Class;
|
|
|
|
WORD Interface;
|
|
|
|
} INTERFACEIMPLTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Class;
|
|
|
|
WORD Name;
|
|
|
|
WORD Signature;
|
|
|
|
} MEMBERREFTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
BYTE Type;
|
|
|
|
BYTE Reserved;
|
|
|
|
WORD Parent;
|
|
|
|
WORD Value;
|
|
|
|
} CONSTANTTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Parent;
|
|
|
|
WORD Type;
|
|
|
|
WORD Value;
|
|
|
|
} CUSTOMATTRIBUTETABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Parent;
|
|
|
|
WORD NativeType;
|
|
|
|
} FIELDMARSHALTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Action;
|
|
|
|
WORD Parent;
|
|
|
|
WORD PermissionSet;
|
|
|
|
} DECLSECURITYTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD PackingSize;
|
|
|
|
DWORD ClassSize;
|
|
|
|
WORD Parent;
|
|
|
|
} CLASSLAYOUTTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD Offset;
|
|
|
|
WORD Field;
|
|
|
|
} FIELDLAYOUTTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Signature;
|
|
|
|
} STANDALONESIGTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Parent;
|
|
|
|
WORD EventList;
|
|
|
|
} EVENTMAPTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD EventFlags;
|
|
|
|
WORD Name;
|
|
|
|
WORD EventType;
|
|
|
|
} EVENTTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Parent;
|
|
|
|
WORD PropertyList;
|
|
|
|
} PROPERTYMAPTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Flags;
|
|
|
|
WORD Name;
|
|
|
|
WORD Type;
|
|
|
|
} PROPERTYTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Semantics;
|
|
|
|
WORD Method;
|
|
|
|
WORD Association;
|
|
|
|
} METHODSEMANTICSTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Class;
|
|
|
|
WORD MethodBody;
|
|
|
|
WORD MethodDeclaration;
|
|
|
|
} METHODIMPLTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Name;
|
|
|
|
} MODULEREFTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Signature;
|
|
|
|
} TYPESPECTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD MappingFlags;
|
|
|
|
WORD MemberForwarded;
|
|
|
|
WORD ImportName;
|
|
|
|
WORD ImportScope;
|
|
|
|
} IMPLMAPTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD RVA;
|
|
|
|
WORD Field;
|
|
|
|
} FIELDRVATABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD Processor;
|
|
|
|
} ASSEMBLYPROCESSORTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD OSPlatformID;
|
|
|
|
DWORD OSMajorVersion;
|
|
|
|
DWORD OSMinorVersion;
|
|
|
|
} ASSEMBLYOSTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD MajorVersion;
|
|
|
|
WORD MinorVersion;
|
|
|
|
WORD BuildNumber;
|
|
|
|
WORD RevisionNumber;
|
|
|
|
DWORD Flags;
|
|
|
|
WORD PublickKeyOrToken;
|
|
|
|
WORD Name;
|
|
|
|
WORD Culture;
|
|
|
|
WORD HashValue;
|
|
|
|
} ASSEMBLYREFTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD Processor;
|
|
|
|
WORD AssemblyRef;
|
|
|
|
} ASSEMBLYREFPROCESSORTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD OSPlatformId;
|
|
|
|
DWORD OSMajorVersion;
|
|
|
|
DWORD OSMinorVersion;
|
|
|
|
WORD AssemblyRef;
|
|
|
|
} ASSEMBLYREFOSTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD Flags;
|
|
|
|
WORD Name;
|
|
|
|
WORD HashValue;
|
|
|
|
} FILETABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD Flags;
|
|
|
|
DWORD TypeDefId;
|
|
|
|
WORD TypeName;
|
|
|
|
WORD TypeNameSpace;
|
|
|
|
WORD Implementation;
|
|
|
|
} EXPORTEDTYPETABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD NestedClass;
|
|
|
|
WORD EnclosingClass;
|
|
|
|
} NESTEDCLASSTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Number;
|
|
|
|
WORD Flags;
|
|
|
|
} GENERICPARAMTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD MethodDef;
|
|
|
|
WORD Instantiation;
|
|
|
|
} METHODSPECTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Owner;
|
|
|
|
WORD Constraint;
|
|
|
|
} GENERICPARAMCONSTRAINTTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD ImportLookupTable;
|
|
|
|
DWORD DateTimeStamp;
|
|
|
|
DWORD ForwarderChain;
|
|
|
|
DWORD Name;
|
|
|
|
DWORD ImportAddressTable;
|
|
|
|
BYTE pad[20];
|
|
|
|
} IMPORTTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD HintNameTableRVA;
|
|
|
|
BYTE pad[8];
|
|
|
|
} IMPORTLOOKUPTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD Hint;
|
|
|
|
BYTE Name[12];
|
|
|
|
BYTE Module[12];
|
|
|
|
DWORD Reserved;
|
|
|
|
WORD EntryPoint;
|
|
|
|
DWORD RVA;
|
|
|
|
} HINTNAMETABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD PageRVA;
|
|
|
|
DWORD Size;
|
|
|
|
DWORD Relocation;
|
|
|
|
} RELOCATION;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD wLength;
|
|
|
|
WORD wValueLength;
|
|
|
|
WORD wType;
|
|
|
|
WCHAR szKey[17];
|
|
|
|
VS_FIXEDFILEINFO Value;
|
|
|
|
} VS_VERSIONINFO;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD wLength;
|
|
|
|
WORD wValueLength;
|
|
|
|
WORD wType;
|
|
|
|
WCHAR szKey[13];
|
|
|
|
} VARFILEINFO;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD wLength;
|
|
|
|
WORD wValueLength;
|
|
|
|
WORD wType;
|
|
|
|
WCHAR szKey[13];
|
|
|
|
DWORD Value;
|
|
|
|
} VAR;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD wLength;
|
|
|
|
WORD wValueLength;
|
|
|
|
WORD wType;
|
|
|
|
WCHAR szKey[15];
|
|
|
|
} STRINGFILEINFO;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD wLength;
|
|
|
|
WORD wValueLength;
|
|
|
|
WORD wType;
|
|
|
|
WCHAR szKey[9];
|
|
|
|
} STRINGTABLE;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
WORD wLength;
|
|
|
|
WORD wValueLength;
|
|
|
|
WORD wType;
|
|
|
|
} STRINGHDR;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DWORD Size;
|
|
|
|
DWORD Signature;
|
|
|
|
DWORD HeaderVersion;
|
|
|
|
DWORD SkipData;
|
|
|
|
BYTE Data[168];
|
|
|
|
} RESOURCE;
|
|
|
|
|
|
|
|
#include <poppack.h>
|
|
|
|
|
|
|
|
struct tagASSEMBLY;
|
|
|
|
typedef struct tagASSEMBLY ASSEMBLY;
|
|
|
|
|
|
|
|
HRESULT assembly_create(ASSEMBLY **out, LPCWSTR file);
|
|
|
|
HRESULT assembly_release(ASSEMBLY *assembly);
|
2009-05-20 14:43:24 +00:00
|
|
|
HRESULT assembly_get_name(ASSEMBLY *assembly, LPWSTR *name);
|
2010-12-27 09:50:02 +00:00
|
|
|
HRESULT assembly_get_path(const ASSEMBLY *assembly, LPWSTR *path);
|
2009-05-20 14:43:24 +00:00
|
|
|
HRESULT assembly_get_version(ASSEMBLY *assembly, LPWSTR *version);
|
Finish the Wine sync. These components are not just rc file changes
atl, comctl32, comdlg32, dwmapi, fusion, gdiplus, jscript, mpr, mshtml, msi, msimtf, msxml3, ole32, oleaut32, riched20, shdocvw, shlwapi, urlmon, usp10, version and windowscodecs
Seems to build and boot. /me hides
svn path=/trunk/; revision=48273
2010-07-26 02:26:04 +00:00
|
|
|
BYTE assembly_get_architecture(ASSEMBLY *assembly);
|
2009-05-20 14:43:24 +00:00
|
|
|
HRESULT assembly_get_pubkey_token(ASSEMBLY *assembly, LPWSTR *token);
|
|
|
|
|
2010-12-27 09:50:02 +00:00
|
|
|
extern HRESULT IAssemblyName_SetPath(IAssemblyName *iface, LPCWSTR path);
|
|
|
|
extern HRESULT IAssemblyName_GetPath(IAssemblyName *iface, LPWSTR buf, ULONG *len);
|
|
|
|
|
2009-05-20 14:43:24 +00:00
|
|
|
static inline LPWSTR strdupW(LPCWSTR src)
|
|
|
|
{
|
|
|
|
LPWSTR dest;
|
|
|
|
|
|
|
|
if (!src)
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
dest = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(src) + 1) * sizeof(WCHAR));
|
|
|
|
if (dest)
|
|
|
|
lstrcpyW(dest, src);
|
|
|
|
|
|
|
|
return dest;
|
|
|
|
}
|
|
|
|
|
|
|
|
#define BYTES_PER_TOKEN 8
|
|
|
|
#define CHARS_PER_BYTE 2
|
|
|
|
#define TOKEN_LENGTH (BYTES_PER_TOKEN * CHARS_PER_BYTE + 1)
|
|
|
|
|
|
|
|
static inline void token_to_str(BYTE *bytes, LPWSTR str)
|
|
|
|
{
|
|
|
|
DWORD i;
|
|
|
|
|
|
|
|
static const WCHAR hexval[16] = {
|
|
|
|
'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'
|
|
|
|
};
|
|
|
|
|
|
|
|
for(i = 0; i < BYTES_PER_TOKEN; i++)
|
|
|
|
{
|
|
|
|
str[i * 2] = hexval[((bytes[i] >> 4) & 0xF)];
|
|
|
|
str[i * 2 + 1] = hexval[(bytes[i]) & 0x0F];
|
|
|
|
}
|
|
|
|
str[i * 2] = 0;
|
|
|
|
}
|
2008-09-10 08:47:30 +00:00
|
|
|
|
|
|
|
#endif /* __WINE_FUSION_PRIVATE__ */
|