annotate loader/wine/pe_image.h @ 27499:1dfad1b382fa

libass: fix type mismatch between size parameter and the way it's used
author aurel
date Fri, 05 Sep 2008 22:59:01 +0000
parents a8ea87c71d18
children 9e739bdb049c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26045
a8ea87c71d18 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 25794
diff changeset
1 #ifndef MPLAYER_PE_IMAGE_H
a8ea87c71d18 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 25794
diff changeset
2 #define MPLAYER_PE_IMAGE_H
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
3
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 1
diff changeset
4 #include "winnt.h"
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
5 #include "winbase.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
6
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
7 #define PE_HEADER(module) \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
8 ((IMAGE_NT_HEADERS*)((LPBYTE)(module) + \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
9 (((IMAGE_DOS_HEADER*)(module))->e_lfanew)))
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
10
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
11 #define PE_SECTIONS(module) \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
12 ((IMAGE_SECTION_HEADER*)((LPBYTE)&PE_HEADER(module)->OptionalHeader + \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
13 PE_HEADER(module)->FileHeader.SizeOfOptionalHeader))
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
14
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
15 #define RVA_PTR(module,field) ((LPBYTE)(module) + PE_HEADER(module)->field)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
16
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
17 /* modreference used for attached processes
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
18 * all section are calculated here, relocations etc.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
19 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
20 typedef struct {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
21 PIMAGE_IMPORT_DESCRIPTOR pe_import;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
22 PIMAGE_EXPORT_DIRECTORY pe_export;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
23 PIMAGE_RESOURCE_DIRECTORY pe_resource;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
24 int tlsindex;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
25 } PE_MODREF;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
26
25794
2c8cdb9123b8 Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents: 24422
diff changeset
27 struct wine_modref;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
28 extern int PE_unloadImage(HMODULE hModule);
25794
2c8cdb9123b8 Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents: 24422
diff changeset
29 extern FARPROC PE_FindExportedFunction(struct wine_modref *wm, LPCSTR funcName, WIN_BOOL snoop);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
30 extern WIN_BOOL PE_EnumResourceTypesA(HMODULE,ENUMRESTYPEPROCA,LONG);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
31 extern WIN_BOOL PE_EnumResourceTypesW(HMODULE,ENUMRESTYPEPROCW,LONG);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
32 extern WIN_BOOL PE_EnumResourceNamesA(HMODULE,LPCSTR,ENUMRESNAMEPROCA,LONG);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
33 extern WIN_BOOL PE_EnumResourceNamesW(HMODULE,LPCWSTR,ENUMRESNAMEPROCW,LONG);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
34 extern WIN_BOOL PE_EnumResourceLanguagesA(HMODULE,LPCSTR,LPCSTR,ENUMRESLANGPROCA,LONG);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
35 extern WIN_BOOL PE_EnumResourceLanguagesW(HMODULE,LPCWSTR,LPCWSTR,ENUMRESLANGPROCW,LONG);
25794
2c8cdb9123b8 Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents: 24422
diff changeset
36 extern HRSRC PE_FindResourceExW(struct wine_modref*, LPCWSTR, LPCWSTR, WORD);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
37 extern DWORD PE_SizeofResource(HMODULE,HRSRC);
25794
2c8cdb9123b8 Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents: 24422
diff changeset
38 extern struct wine_modref *PE_LoadLibraryExA(LPCSTR, DWORD);
2c8cdb9123b8 Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents: 24422
diff changeset
39 extern void PE_UnloadLibrary(struct wine_modref *);
2c8cdb9123b8 Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents: 24422
diff changeset
40 extern HGLOBAL PE_LoadResource(struct wine_modref *wm, HRSRC);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
41 extern HMODULE PE_LoadImage( int hFile, LPCSTR filename, WORD *version );
25794
2c8cdb9123b8 Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents: 24422
diff changeset
42 extern struct wine_modref *PE_CreateModule( HMODULE hModule, LPCSTR filename,
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
43 DWORD flags, WIN_BOOL builtin );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
44 extern WIN_BOOL PE_CreateProcess( HANDLE hFile, LPCSTR filename, LPCSTR cmd_line, LPCSTR env,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
45 LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
46 WIN_BOOL inherit, DWORD flags, LPSTARTUPINFOA startup,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
47 LPPROCESS_INFORMATION info );
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
48
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
49 extern void PE_InitTls(void);
25794
2c8cdb9123b8 Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents: 24422
diff changeset
50 extern WIN_BOOL PE_InitDLL(struct wine_modref *wm, DWORD type, LPVOID lpReserved);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
51
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
52 extern PIMAGE_RESOURCE_DIRECTORY GetResDirEntryA(PIMAGE_RESOURCE_DIRECTORY,LPCSTR,DWORD,WIN_BOOL);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
53 extern PIMAGE_RESOURCE_DIRECTORY GetResDirEntryW(PIMAGE_RESOURCE_DIRECTORY,LPCWSTR,DWORD,WIN_BOOL);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
54
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
55 typedef DWORD CALLBACK (*DLLENTRYPROC)(HMODULE,DWORD,LPVOID);
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
56
24406
a422b6c96368 Revert r24424.
voroshil
parents: 24404
diff changeset
57 typedef struct {
a422b6c96368 Revert r24424.
voroshil
parents: 24404
diff changeset
58 WORD popl WINE_PACKED; /* 0x8f 0x05 */
a422b6c96368 Revert r24424.
voroshil
parents: 24404
diff changeset
59 DWORD addr_popped WINE_PACKED;/* ... */
a422b6c96368 Revert r24424.
voroshil
parents: 24404
diff changeset
60 BYTE pushl1 WINE_PACKED; /* 0x68 */
a422b6c96368 Revert r24424.
voroshil
parents: 24404
diff changeset
61 DWORD newret WINE_PACKED; /* ... */
a422b6c96368 Revert r24424.
voroshil
parents: 24404
diff changeset
62 BYTE pushl2 WINE_PACKED; /* 0x68 */
a422b6c96368 Revert r24424.
voroshil
parents: 24404
diff changeset
63 DWORD origfun WINE_PACKED; /* original function */
a422b6c96368 Revert r24424.
voroshil
parents: 24404
diff changeset
64 BYTE ret1 WINE_PACKED; /* 0xc3 */
a422b6c96368 Revert r24424.
voroshil
parents: 24404
diff changeset
65 WORD addesp WINE_PACKED; /* 0x83 0xc4 */
a422b6c96368 Revert r24424.
voroshil
parents: 24404
diff changeset
66 BYTE nrofargs WINE_PACKED; /* nr of arguments to add esp, */
a422b6c96368 Revert r24424.
voroshil
parents: 24404
diff changeset
67 BYTE pushl3 WINE_PACKED; /* 0x68 */
a422b6c96368 Revert r24424.
voroshil
parents: 24404
diff changeset
68 DWORD oldret WINE_PACKED; /* Filled out from popl above */
a422b6c96368 Revert r24424.
voroshil
parents: 24404
diff changeset
69 BYTE ret2 WINE_PACKED; /* 0xc3 */
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
70 } ELF_STDCALL_STUB;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
71
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
72 typedef struct {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
73 void* dlhandle;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
74 ELF_STDCALL_STUB *stubs;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
75 } ELF_MODREF;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
76
25794
2c8cdb9123b8 Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents: 24422
diff changeset
77 extern struct wine_modref *ELF_LoadLibraryExA( LPCSTR libname, DWORD flags);
2c8cdb9123b8 Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents: 24422
diff changeset
78 extern void ELF_UnloadLibrary(struct wine_modref *);
2c8cdb9123b8 Fix a ton of illegal identifiers. Identifiers starting with __ or _ and a
diego
parents: 24422
diff changeset
79 extern FARPROC ELF_FindExportedFunction(struct wine_modref *wm, LPCSTR funcName);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
80
26045
a8ea87c71d18 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 25794
diff changeset
81 #endif /* MPLAYER_PE_IMAGE_H */