guint32 dwFileDateLS;
} WapiFixedFileInfo;
-#if G_BYTE_ORDER != G_LITTLE_ENDIAN
+#if G_BYTE_ORDER == G_BIG_ENDIAN
#define VS_FFI_SIGNATURE 0xbd04effe
#define VS_FFI_STRUCVERSION 0x00000100
#else
{
guint32 Signature;
WapiImageFileHeader FileHeader;
- WapiImageOptionalHeader OptionalHeader;
+ WapiImageOptionalHeader32 OptionalHeader;
} WapiImageNTHeaders32;
typedef struct
guint32 Characteristics;
} WapiImageSectionHeader;
-#define IMAGE_FIRST_SECTION(header) ((WapiImageSectionHeader *)(GPOINTER_TO_UINT (header) + G_STRUCT_OFFSET (WapiImageNTHeaders, OptionalHeader) + ((WapiImageNTHeaders *)(header))->FileHeader.SizeOfOptionalHeader))
+#define IMAGE_FIRST_SECTION(header) ((WapiImageSectionHeader *)((gsize)(header) + G_STRUCT_OFFSET (WapiImageNTHeaders, OptionalHeader) + GUINT16_FROM_LE (((WapiImageNTHeaders *)(header))->FileHeader.SizeOfOptionalHeader)))
+
+#define _WAPI_IMAGE_FIRST_SECTION32(header) ((WapiImageSectionHeader *)((gsize)(header) + G_STRUCT_OFFSET (WapiImageNTHeaders32, OptionalHeader) + GUINT16_FROM_LE (((WapiImageNTHeaders32 *)(header))->FileHeader.SizeOfOptionalHeader)))
#define RT_CURSOR 0x01
#define RT_BITMAP 0x02
{
struct
{
-#if G_BYTE_ORDER != G_LITTLE_ENDIAN
+#if G_BYTE_ORDER == G_BIG_ENDIAN
guint32 NameIsString:1;
guint32 NameOffset:31;
#else
#endif
};
guint32 Name;
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+ struct
+ {
+ guint16 __wapi_big_endian_padding;
+ guint16 Id;
+ };
+#else
guint16 Id;
+#endif
};
union
{
guint32 OffsetToData;
struct
{
-#if G_BYTE_ORDER != G_LITTLE_ENDIAN
+#if G_BYTE_ORDER == G_BIG_ENDIAN
guint32 DataIsDirectory:1;
guint32 OffsetToDirectory:31;
#else
#define VFT2_FONT_VECTOR 0x0002
#define VFT2_FONT_TRUETYPE 0x0003
+#define MAKELANGID(primary,secondary) ((guint16)((secondary << 10) | (primary)))
+
extern guint32 GetFileVersionInfoSize (gunichar2 *filename, guint32 *handle);
extern gboolean GetFileVersionInfo (gunichar2 *filename, guint32 handle,
guint32 len, gpointer data);