Pointers

      SMTE field smte_objtab points to the associated OTE for 32-bit modules.
    Locations
      Dynamically allocated from the kernel swappable heap except for the SMTE associalted with DOSCALLS.DLL.

      dcm_ote_start locates the OTE in OS2KRNL associated with DOSCALLS.DLL.

    VM Owner
      Dynamically allocated OTEs have owner id ldrmte (0xffa6) and share the same heap block as their SMTE.

    Format

    ┌───────────┬──────┬──────┬────┬──────────────────────────────┐│Field Name │Offset│Length│Type│Description                   │
    ├───────────┼──────┼──────┼────┼──────────────────────────────┤
    │ote_size   │+0    │4     │D   │Object virtual size           │
    ├───────────┼──────┼──────┼────┼──────────────────────────────┤
    │ote_base   │+4    │4     │D   │Object base virtual address   │
    ├───────────┼──────┼──────┼────┼──────────────────────────────┤
    │ote_flags  │+8    │4     │D   │Attribute flags               │
    ├───────────┼──────┼──────┼────┼──────────────────────────────┤
    │ote_pagemap│+c    │4     │D   │Object page map index         │
    ├───────────┼──────┼──────┼────┼──────────────────────────────┤
    │ote_mapsize│+10   │4     │D   │Num of entries in obj page map│
    ├───────────┼──────┼──────┼────┼──────────────────────────────┤
    │ote_resu   │+14   │4     │S   │                              │
    └───────────┴──────┴──────┴────┴──────────────────────────────┘
    

    ote_flags flag definitions:

    ┌───────────┬───────────┬──────────────────────────────────┐
    │Name       │Bit Mask   │Description                       │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJREAD    │0x00000001L│Readable Object                   │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJWRITE   │0x00000002L│Writeable Object                  │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJEXEC    │0x00000004L│Executable Object                 │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJRSRC    │0x00000008L│Resource Object                   │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJDISCARD │0x00000010L│Object is Discardable             │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJSHARED  │0x00000020L│Object is Shared                  │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJPRELOAD │0x00000040L│Object has preload pages          │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJINVALID │0x00000080L│Object has invalid pages          │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJZEROFIL │0x00000100L│Object has zero-filled pages      │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJRESIDENT│0x00000200L│Object is resident                │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJALIAS16 │0x00001000L│16                                │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJBIGDEF  │0x00002000L│Big/Default bit setting           │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJCONFORM │0x00004000L│Object is conforming for code     │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJIOPL    │0x00008000L│Object I/O privilege level        │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJMADEPRIV│0x40000000L│Object is made private for debug  │
    │           │           │(now obsolete)                    │
    ├───────────┼───────────┼──────────────────────────────────┤
    │OBJALLOC   │0x80000000L│Object is allocated used by loader│
    └───────────┴───────────┴──────────────────────────────────┘
    


    [Back] [Next]