Syntax
typedef struct tagThreadInfo {
    RTHANDLE    OwnerProcess;
    RTHANDLE    NextThread;
    LPPROC      ExceptionHandler;
    WORD        ExceptionHandler_seg;
    BYTE        ExceptionMode;
    BYTE        _fill0;
    BYTE        StaticPriority;
    BYTE        DynamicPriority;
    BYTE        ThreadFlags;
    BYTE        InterruptThread;
    BYTE        PendingInterrupts;
    BYTE        MaxInterrupts;
    WORD        IntLevel;
    BYTE        ThreadState;
    BYTE        SuspendDepth;
    WORD        DelayRequest;
    RTHANDLE    LastExchange;
    DWORD       KnDelayRequest;
    KNHANDLE    LastKnExchange;
} THREADINFO_SNAPSHOT, far *LPTHREADINFO_SNAPSHOT;
Fields
OwnerProcess 
- Handle for the process containing the target thread. 
 NextThread 
- Handle for the next thread on the system thread list, which allows easy scanning of all threads in the system. 
 ExceptionHandler 
- Pointer to the thread's current exception handler. The ExceptionHandler field contains the selector for the full (48-bit) pointer. 
 fill0 
- Reserved. 
 ExceptionMode 
- The system exception mode for the thread. See description of ExceptionMode in EXCEPTION structure. 
 StaticPriority 
- The thread's assigned priority when it was created. 
 DynamicPriority 
- The thread's current priority, which can be dynamically raised by accessing a region. 
 ThreadFlags 
- The thread flags specified when the thread was created. 
 InterruptThread 
- One of these: 
| Non-zero | 
The thread is an interrupt thread and the next three fields are valid. | 
0 (zero) | 
The thread is not an interrupt thread; ignore the next three fields. | 
 
 PendingInterrupts 
- Number of interrupts currently pending at the interrupt level associated with this interrupt thread. 
 MaxInterrupts 
- Maximum number of interrupts that can be pending at the interrupt level associated with this interrupt thread. 
 IntLevel 
- Interrupt level associated with this interrupt thread. 
 ThreadState 
- One of the following indicates the thread's current state: 
| Value | 
Meaning | 
0x00 | 
Ready and running | 
0x01 | 
Ready and not running | 
0x02 | 
Asleep | 
0x03 | 
Waiting at an exchange object | 
0x04 | 
Waiting at a region | 
0x05 | 
Waiting at an object directory | 
0x06 | 
Waiting at a port (deprecated) | 
0x07 | 
Being deleted | 
0x08 | 
Waiting at a kernel object | 
0x10 | 
Suspended | 
0x11 | 
Self-suspended | 
0x12 | 
Asleep/Suspended | 
0x13 | 
Waiting at an exchange and Suspended | 
0x14 | 
Waiting at a region and Suspended | 
0x15 | 
Waiting at an object directory and Suspended | 
0x16 | 
Waiting at a port and Suspended (deprecated) | 
0x17 | 
Being deleted and Suspended | 
0x18 | 
Waiting at a low-level object | 
0x20 | 
Suspended after a fault occurred | 
0xff | 
Thread state unknown | 
 
 SuspendDepth 
- Suspension depth of the thread, which is non-zero only if the thread has been overtly suspended (as opposed to being suspended by the OS). 
 DelayRequest 
- Amount of time the thread has been waiting at an exchange. This field is zero if the thread has been waiting at any other type of object. 
 LastExchange 
- The handle for an exchange object (for example, mailbox or semaphore) at which the thread is waiting. This field is zero if the thread is not waiting at an exchange. 
 KnDelayRequest 
- Amount of time the thread has been waiting at a low-level exchange. This field is zero if the thread has been waiting at any other type of object. 
 LastKnExchange 
- The handle for a low-level exchange object (for example, mailbox or semaphore) at which the thread is waiting. This field is 0 (zero) if the thread is not waiting at a low-level exchange. 
 
See Also
GetRtThreadInfo