;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; RDOS operating system
; Copyright (C) 1988-2000, Leif Ekblad
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version. The only exception to this rule
; is for commercial usage in embedded systems. For information on
; usage in commercial embedded systems, contact embedded@rdos.net
;
; This program 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 General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
;
; The author of this program may be contacted at leif@rdos.net
;
; PE.DEF
; Common PE loader types
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

include module.def

tib_data	STRUC

pvFirstExcept		DD ?
pvStackUserTop		DD ?
pvStackUserBottom	DD ?
pvLastError			DD ?
pvStackUserSize		DD ?
pvArbitrary			DD ?
pvTEB				DD ?
pvProcessHandle		DD ?
pvThreadHandle		DD ?
pvModuleHandle		DD ?
pvTLSBitmap			DD ?
pvTLSArray			DD ?
pvBase				DD ?

tib_data	ENDS

fixup_table	STRUC

fixup_va	DD ?
fixup_size	DD ?
fixup_data	DD ?

fixup_table	ENDS

tls_table	STRUC

tls_start_data_va		DD ?
tls_end_data_va			DD ?
tls_index_va			DD ?
tls_callback_va			DD ?

tls_table	ENDS

pe_header	STRUC

peh_signature			DD ?
peh_cpu					DW ?
peh_objects				DW ?
peh_timedate			DD ?
peh_resv1				DD ?,?
peh_nthdr_size			DW ?
peh_flags				DW ?
peh_resv2				DW ?
peh_lmajor				DW ?
peh_lminor				DW ?
peh_resv3				DW ?
peh_resv4				DD ?,?
peh_entry_point			DD ?
peh_resv5				DD ?,?
peh_image_base			DD ?
peh_object_align		DD ?
peh_file_align			DD ?
peh_osmajor				DW ?
peh_osminor				DW ?
peh_usermajor			DW ?
peh_userminor			DW ?
peh_subsysmajor			DW ?
peh_subsysminor			DW ?
peh_resv6				DD ?
peh_image_size			DD ?
peh_header_size			DD ?
peh_file_checksum		DD ?
peh_subsys				DW ?
peh_dllflags			DW ?
peh_stack_reserve_size	DD ?
peh_stack_commit_size	DD ?
peh_heap_reserve_size	DD ?
peh_heap_commit_size	DD ?
peh_resv7				DD ?
peh_int_va_sizes		DD ?
peh_export_va			DD ?
peh_export_size			DD ?
peh_import_va			DD ?
peh_import_size			DD ?
peh_resource_va		DD ?
peh_resource_size		DD ?
peh_exception_va		DD ?
peh_exception_size		DD ?
peh_security_va		DD ?
peh_security_size		DD ?
peh_fixup_va			DD ?
peh_fixup_size			DD ?
peh_debug_va			DD ?
peh_debug_size			DD ?
peh_descr_va			DD ?
peh_descr_size			DD ?
peh_machine_va			DD ?
peh_machine_size		DD ?
peh_tls_va				DD ?
peh_tls_size			DD ?

pe_header	ENDS

object_struc	STRUC

o_name				DB 8 DUP(?)
o_virt_size			DD ?
o_va				DD ?
o_phys_size			DD ?
o_phys_offset		DD ?
o_resv1				DD ?,?,?
o_flags				DD ?

object_struc	ENDS

lib_struc STRUC

lib_mod	    		module_struc <>

lib_base			DD ?
lib_size			DD ?
lib_header			DD ?
lib_objects			DD ?
lib_file_handle		DW ?
lib_usage_count		DW ?
lib_process			DW ?
lib_debug_lib		DW ?
lib_debug_obj   	DW ?
lib_events			DW ?
lib_suppress        DW ?
lib_curr_event      DW ?
lib_local_handle    DW ?
lib_run_now			DW ?
lib_init_param		DW ?
lib_fs              DW ?
lib_name			DB ?

lib_struc ENDS

export_descr	STRUC

exp_flags				DD ?
exp_time_stamp			DD ?
exp_ver					DD ?
exp_dll_name_va			DD ?
exp_ordinal_base		DD ?
exp_entry_point_count	DD ?
exp_name_count			DD ?
exp_entry_point_va		DD ?
exp_name_va				DD ?
exp_ordinal_va			DD ?

export_descr	ENDS

import_descr	STRUC

imp_rva					DD ?
imp_time_stamp			DD ?
imp_forwarder_index		DD ?
imp_dll_name_va			DD ?
imp_first_thunk_va		DD ?

import_descr	ENDS

resource_descr	STRUC

res_flags		DD ?
res_time		DD ?
res_major		DW ?
res_minor		DW ?
res_names		DW ?
res_ids			DW ?
res_data		DD ?

resource_descr	ENDS

pe_mem_struc STRUC

mem_prev	DW ?
mem_next	DW ?
mem_base	DD ?
mem_size	DD ?
mem_alloc   DD ?

pe_mem_struc ENDS

event_struc	STRUC

event_prev		DW ?
event_next		DW ?
event_thread_id	DW ?
event_size		DW ?
event_code		DB ?

event_struc ENDS

PE_CLONE_PARENT = 1
PE_CLONE_CHILD  = 2

pe_clone_entry    STRUC

pce_linear      DD ?
pce_phys        DD ?

pe_clone_entry  ENDS

pe_clone_seg    STRUC

pcs_next        DW ?
pcs_file_handle DW ?
pcs_entries     DW ?

; entry array is here!

pe_clone_seg    ENDS
