Pointers

      SMTE field smte_objtab points to the associated STE for 16-bit modules.
    Locations
      Dynamically allocated from the kernel swappable heap.
    VM Owner
      Dynamically allocated STEs have owner id ldrmte (0xffa6) and share the same heap block as their SMTE.

    Format

    ┌────────────┬──────┬──────┬────┬───────────────────────────┐│Field Name  │Offset│Length│Type│Description                │
    ├────────────┼──────┼──────┼────┼───────────────────────────┤
    │ste_offset  │+0    │2     │W   │file offset to segment data│
    ├────────────┼──────┼──────┼────┼───────────────────────────┤
    │ste_size    │+2    │2     │W   │file data size             │
    ├────────────┼──────┼──────┼────┼───────────────────────────┤
    │ste_flags   │+4    │2     │W   │type and attribute flags   │
    ├────────────┼──────┼──────┼────┼───────────────────────────┤
    │ste_minsiz  │+6    │2     │W   │minimum allocation size    │
    ├────────────┼──────┼──────┼────┼───────────────────────────┤
    │ste_seghdl  │+8    │2     │W   │segment handle             │
    ├────────────┼──────┼──────┼────┼───────────────────────────┤
    │ste_selector│+a    │2     │W   │segment selector           │
    ├────────────┼──────┼──────┼────┼───────────────────────────┤
    │ste_fixups  │+c    │4     │D   │fixup record storage       │
    └────────────┴──────┴──────┴────┴───────────────────────────┘
    

    ste_flags flag definitions:

    ┌─────────────┬────────┬────────────────────────────────────────┐
    │Name         │Bit Mask│Description                             │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_TYPE_MASK│0x0001  │segment type field                      │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_CODE     │0x0000  │code segment type                       │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_DATA     │0x0001  │data segment type                       │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_PACKED   │0x0002  │segment is packed                       │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_SEMAPHORE│0x0004  │segment semaphore                       │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_ITERATED │0x0008  │segment data is iterated                │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_WAITING  │0x0010  │segment is waiting on semephore         │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_SHARED   │0x0020  │segment can be shared                   │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_PRELOAD  │0x0040  │segment is preload                      │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_ERONLY   │0x0080  │excute only if code segment read only if│
    │             │        │data segment                            │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_RELOCINFO│0x0100  │set if segment has reloc records        │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_CONFORM  │0x0200  │segment is conforming                   │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_RING_2   │0x0800  │ring 2 selector                         │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_RING_3   │0x0C00  │ring 3 selector                         │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_HUGE     │0x1000  │huge segment                            │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_PAGEABLE │0x2000  │just a page can be faulted in           │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_PRESENT  │0x2000  │packed segment already loaded           │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_SELALLOC │0x4000  │used to indicate sel allocated          │
    ├─────────────┼────────┼────────────────────────────────────────┤
    │STE_GDTSEG   │0x8000  │used to indicate GTD sel alloc          │
    └─────────────┴────────┴────────────────────────────────────────┘
    


    [Back] [Next]