| /* $Id: dlls.h,v 1.2 1993/07/04 04:04:21 root Exp root $ |
| */ |
| /* |
| * Copyright Robert J. Amstadt, 1993 |
| */ |
| |
| #ifndef DLLS_H |
| #define DLLS_H |
| |
| #define MAX_NAME_LENGTH 64 |
| |
| typedef struct resource_name_table |
| { |
| struct resource_name_table *next; |
| unsigned short type_ord; |
| unsigned short id_ord; |
| char id[MAX_NAME_LENGTH]; |
| } RESNAMTAB; |
| |
| struct ne_data { |
| struct ne_header_s *ne_header; |
| struct ne_segment_table_entry_s *seg_table; |
| struct segment_descriptor_s *selector_table; |
| char *lookup_table; |
| char *nrname_table; |
| char *rname_table; |
| RESNAMTAB *resnamtab; |
| }; |
| |
| struct pe_data { |
| struct pe_header_s *pe_header; |
| struct pe_segment_table *pe_seg; |
| struct PE_Import_Directory *pe_import; |
| struct PE_Export_Directory *pe_export; |
| struct PE_Resource_Directory *pe_resource; |
| int resource_offset; /* offset to resource typedirectory in file */ |
| }; |
| |
| struct w_files |
| { |
| struct w_files * next; |
| char * name; /* Name, as it appears in the windows binaries */ |
| char * filename; /* Actual name of the unix file that satisfies this */ |
| int fd; |
| unsigned short hinstance; |
| int initialised; |
| struct mz_header_s *mz_header; |
| struct ne_data *ne; |
| struct pe_data *pe; |
| }; |
| |
| extern struct w_files *wine_files; |
| |
| typedef struct dll_arg_relocation_s |
| { |
| unsigned short dst_arg; /* Offset to argument on stack */ |
| unsigned char src_type; /* Argument type */ |
| } DLL_ARG; |
| |
| #define DLL 0 |
| #define EXE 1 |
| |
| #define DLL_ARGTYPE_SIGNEDWORD 0 |
| #define DLL_ARGTYPE_WORD 1 |
| #define DLL_ARGTYPE_LONG 2 |
| #define DLL_ARGTYPE_FARPTR 3 |
| #define DLL_MAX_ARGS 16 |
| |
| #define DLL_HANDLERTYPE_PASCAL 16 |
| #define DLL_HANDLERTYPE_C 17 |
| |
| struct dll_table_entry_s |
| { |
| /* |
| * Relocation data |
| */ |
| unsigned int selector; /* Selector to access this entry point */ |
| void *address; /* Offset in segment of entry point */ |
| |
| /* |
| * 16->32 bit interface data |
| */ |
| char *export_name; |
| void *handler; /* Address of function to process request */ |
| int handler_type; /* C or PASCAL calling convention */ |
| #ifdef WINESTAT |
| int used; /* Number of times this function referenced */ |
| #endif |
| int n_args; /* Number of arguments passed to function */ |
| DLL_ARG args[DLL_MAX_ARGS]; /* Argument conversion data */ |
| }; |
| |
| struct dll_name_table_entry_s |
| { |
| char *dll_name; |
| struct dll_table_entry_s *dll_table; |
| int dll_table_length; |
| int dll_number; |
| }; |
| |
| extern struct dll_table_entry_s KERNEL_table[]; |
| extern struct dll_table_entry_s USER_table[]; |
| extern struct dll_table_entry_s GDI_table[]; |
| extern struct dll_table_entry_s UNIXLIB_table[]; |
| extern struct dll_table_entry_s WIN87EM_table[]; |
| extern struct dll_table_entry_s MMSYSTEM_table[]; |
| extern struct dll_table_entry_s SHELL_table[]; |
| extern struct dll_table_entry_s SOUND_table[]; |
| extern struct dll_table_entry_s KEYBOARD_table[]; |
| extern struct dll_table_entry_s WINSOCK_table[]; |
| extern struct dll_table_entry_s STRESS_table[]; |
| extern struct dll_table_entry_s SYSTEM_table[]; |
| extern struct dll_table_entry_s TOOLHELP_table[]; |
| extern struct dll_table_entry_s MOUSE_table[]; |
| extern struct dll_table_entry_s COMMDLG_table[]; |
| |
| #define N_BUILTINS 15 |
| |
| #endif /* DLLS_H */ |