1/* 2 * Copyright (c) 2003 3 * Bill Paul <wpaul@windriver.com>. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 15 unchanged lines hidden (view full) --- 24 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 30 * THE POSSIBILITY OF SUCH DAMAGE. 31 * |
32 * $FreeBSD: head/sys/compat/ndis/pe_var.h 124165 2004-01-06 07:09:26Z wpaul $ |
33 */ 34 35#ifndef _PE_VAR_H_ 36#define _PE_VAR_H_ 37 38/* 39 * Image Format 40 */ --- 184 unchanged lines hidden (view full) --- 225#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 /* Machine Value (MIPS GP) */ 226#define IMAGE_DIRECTORY_ENTRY_TLS 9 /* TLS Directory */ 227#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 /* Load Configuration Directory */ 228#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 /* Bound Import Directory in headers */ 229#define IMAGE_DIRECTORY_ENTRY_IAT 12 /* Import Address Table */ 230#define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13 231#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14 232 |
233/* Resource types */ 234 235#define RT_CURSOR 1 236#define RT_BITMAP 2 237#define RT_ICON 3 238#define RT_MENU 4 239#define RT_DIALOG 5 240#define RT_STRING 6 241#define RT_FONTDIR 7 242#define RT_FONT 8 243#define RT_ACCELERATOR 9 244#define RT_RCDATA 10 245#define RT_MESSAGETABLE 11 246#define RT_GROUP_CURSOR 12 247#define RT_GROUP_ICON 14 248#define RT_VERSION 16 249#define RT_DLGINCLUDE 17 250#define RT_PLUGPLAY 19 251#define RT_VXD 20 252#define RT_ANICURSOR 21 253#define RT_ANIICON 22 254#define RT_HTML 23 255 |
256/* 257 * Section header format. 258 */ 259 260#define IMAGE_SHORT_NAME_LEN 8 261 262struct image_section_header { 263 uint8_t ish_name[IMAGE_SHORT_NAME_LEN]; --- 57 unchanged lines hidden (view full) --- 321#define IMAGE_REL_BASED_MIPS_JMPADDR 5 322#define IMAGE_REL_BASED_SECTION 6 323#define IMAGE_REL_BASED_REL 7 324#define IMAGE_REL_BASED_MIPS_JMPADDR16 9 325#define IMAGE_REL_BASED_IA64_IMM64 9 /* yes, 9 too */ 326#define IMAGE_REL_BASED_DIR64 10 327#define IMAGE_REL_BASED_HIGH3ADJ 11 328 |
329struct image_resource_directory_entry { 330 uint32_t irde_name; 331 uint32_t irde_dataoff; 332}; |
333 |
334typedef struct image_resource_directory_entry image_resource_directory_entry; 335 336#define RESOURCE_NAME_STR 0x80000000 337#define RESOURCE_DIR_FLAG 0x80000000 338 339struct image_resource_directory { 340 uint32_t ird_characteristics; 341 uint32_t ird_timestamp; 342 uint16_t ird_majorver; 343 uint16_t ird_minorver; 344 uint16_t ird_named_entries; 345 uint16_t ird_id_entries; 346#ifdef notdef 347 image_resource_directory_entry ird_entries[1]; 348#endif 349}; 350 351typedef struct image_resource_directory image_resource_directory; 352 353struct image_resource_directory_string { 354 uint16_t irds_len; 355 char irds_name[1]; 356}; 357 358typedef struct image_resource_directory_string image_resource_directory_string; 359 360struct image_resource_directory_string_u { 361 uint16_t irds_len; 362 char irds_name[1]; 363}; 364 365typedef struct image_resource_directory_string_u 366 image_resource_directory_string_u; 367 368struct image_resource_data_entry { 369 uint32_t irde_offset; 370 uint32_t irde_size; 371 uint32_t irde_codepage; 372 uint32_t irde_rsvd; 373}; 374 375typedef struct image_resource_data_entry image_resource_data_entry; 376 377struct message_resource_data { 378 uint32_t mrd_numblocks; 379#ifdef notdef 380 message_resource_block mrd_blocks[1]; 381#endif 382}; 383 384typedef struct message_resource_data message_resource_data; 385 386struct message_resource_block { 387 uint32_t mrb_lowid; 388 uint32_t mrb_highid; 389 uint32_t mrb_entryoff; 390}; 391 392typedef struct message_resource_block message_resource_block; 393 394struct message_resource_entry { 395 uint16_t mre_len; 396 uint16_t mre_flags; 397 char mre_text[]; 398}; 399 400typedef struct message_resource_entry message_resource_entry; 401 402#define MESSAGE_RESOURCE_UNICODE 0x0001 403 |
404struct image_patch_table { 405 char *ipt_name; 406 void (*ipt_func)(void); 407}; 408 409typedef struct image_patch_table image_patch_table; 410 411__BEGIN_DECLS --- 5 unchanged lines hidden (view full) --- 417extern int pe_numsections(vm_offset_t); 418extern vm_offset_t pe_imagebase(vm_offset_t); 419extern vm_offset_t pe_directory_offset(vm_offset_t, uint32_t); 420extern vm_offset_t pe_translate_addr (vm_offset_t, uint32_t); 421extern int pe_get_section(vm_offset_t, image_section_header *, const char *); 422extern int pe_relocate(vm_offset_t); 423extern int pe_get_import_descriptor(vm_offset_t, image_import_descriptor *, char *); 424extern int pe_patch_imports(vm_offset_t, char *, image_patch_table *); |
425#ifdef _KERNEL 426extern int pe_get_messagetable(vm_offset_t, message_resource_data **); 427extern int pe_get_message(vm_offset_t, uint32_t, char **, int *); 428#endif |
429__END_DECLS 430 431#endif /* _PE_VAR_H_ */ |