1 #ifndef MPLAYER_PE_IMAGE_H
2 #define MPLAYER_PE_IMAGE_H
7 #define PE_HEADER(module) \
8 ((IMAGE_NT_HEADERS*)((LPBYTE)(module) + \
9 (((IMAGE_DOS_HEADER*)(module))->e_lfanew)))
11 #define PE_SECTIONS(module) \
12 ((IMAGE_SECTION_HEADER*)((LPBYTE)&PE_HEADER(module)->OptionalHeader + \
13 PE_HEADER(module)->FileHeader.SizeOfOptionalHeader))
15 #define RVA_PTR(module,field) ((LPBYTE)(module) + PE_HEADER(module)->field)
17 /* modreference used for attached processes
18 * all section are calculated here, relocations etc.
21 PIMAGE_IMPORT_DESCRIPTOR pe_import
;
22 PIMAGE_EXPORT_DIRECTORY pe_export
;
23 PIMAGE_RESOURCE_DIRECTORY pe_resource
;
28 int PE_unloadImage(HMODULE hModule
);
29 FARPROC
PE_FindExportedFunction(struct wine_modref
*wm
, LPCSTR funcName
, WIN_BOOL snoop
);
30 WIN_BOOL
PE_EnumResourceTypesA(HMODULE
, ENUMRESTYPEPROCA
, LONG
);
31 WIN_BOOL
PE_EnumResourceTypesW(HMODULE
, ENUMRESTYPEPROCW
, LONG
);
32 WIN_BOOL
PE_EnumResourceNamesA(HMODULE
, LPCSTR
, ENUMRESNAMEPROCA
, LONG
);
33 WIN_BOOL
PE_EnumResourceNamesW(HMODULE
, LPCWSTR
, ENUMRESNAMEPROCW
, LONG
);
34 WIN_BOOL
PE_EnumResourceLanguagesA(HMODULE
, LPCSTR
, LPCSTR
, ENUMRESLANGPROCA
, LONG
);
35 WIN_BOOL
PE_EnumResourceLanguagesW(HMODULE
, LPCWSTR
, LPCWSTR
, ENUMRESLANGPROCW
, LONG
);
36 HRSRC
PE_FindResourceExW(struct wine_modref
*, LPCWSTR
, LPCWSTR
, WORD
);
37 DWORD
PE_SizeofResource(HMODULE
, HRSRC
);
38 struct wine_modref
*PE_LoadLibraryExA(LPCSTR
, DWORD
);
39 void PE_UnloadLibrary(struct wine_modref
*);
40 HGLOBAL
PE_LoadResource(struct wine_modref
*wm
, HRSRC
);
41 HMODULE
PE_LoadImage(int hFile
, LPCSTR filename
, WORD
*version
);
42 struct wine_modref
*PE_CreateModule(HMODULE hModule
, LPCSTR filename
,
43 DWORD flags
, WIN_BOOL builtin
);
44 WIN_BOOL
PE_CreateProcess(HANDLE hFile
, LPCSTR filename
, LPCSTR cmd_line
, LPCSTR env
,
45 LPSECURITY_ATTRIBUTES psa
, LPSECURITY_ATTRIBUTES tsa
,
46 WIN_BOOL inherit
, DWORD flags
, LPSTARTUPINFOA startup
,
47 LPPROCESS_INFORMATION info
);
49 void PE_InitTls(void);
50 WIN_BOOL
PE_InitDLL(struct wine_modref
*wm
, DWORD type
, LPVOID lpReserved
);
52 PIMAGE_RESOURCE_DIRECTORY
GetResDirEntryA(PIMAGE_RESOURCE_DIRECTORY
, LPCSTR
, DWORD
, WIN_BOOL
);
53 PIMAGE_RESOURCE_DIRECTORY
GetResDirEntryW(PIMAGE_RESOURCE_DIRECTORY
, LPCWSTR
, DWORD
, WIN_BOOL
);
55 typedef DWORD
CALLBACK (*DLLENTRYPROC
)(HMODULE
,DWORD
,LPVOID
);
57 typedef struct WINE_PACKED
{
58 WORD popl
; /* 0x8f 0x05 */
59 DWORD addr_popped
; /* ... */
60 BYTE pushl1
; /* 0x68 */
61 DWORD newret
; /* ... */
62 BYTE pushl2
; /* 0x68 */
63 DWORD origfun
; /* original function */
65 WORD addesp
; /* 0x83 0xc4 */
66 BYTE nrofargs
; /* nr of arguments to add esp, */
67 BYTE pushl3
; /* 0x68 */
68 DWORD oldret
; /* Filled out from popl above */
74 ELF_STDCALL_STUB
*stubs
;
77 struct wine_modref
*ELF_LoadLibraryExA( LPCSTR libname
, DWORD flags
);
78 void ELF_UnloadLibrary(struct wine_modref
*);
79 FARPROC
ELF_FindExportedFunction(struct wine_modref
*wm
, LPCSTR funcName
);
81 #endif /* MPLAYER_PE_IMAGE_H */