как получить свойства потока
От: ilya123 Россия  
Дата: 29.01.08 18:29
Оценка:
Я могу получить такую структуру:
typedef struct _SYSTEM_THREADS 
{
    ULONGLONG KernelTime;
    ULONGLONG UserTime;
    FILETIME  CreateTime;
    ULONG            WaitTime;
    PVOID            StartAddress;
    CLIENT_ID ClientId;
    LONG        Priority;
    LONG        BasePriority;
    ULONG            ContextSwitchCount;
    LONG            State;
    KWAIT_REASON    WaitReason;
} SYSTEM_THREADS;

и такую:
typedef struct _BASIC_THREAD_INFORMATION 
{
        BOOL ExitStatus;
        PVOID Teb;
        CLIENT_ID ClientID;
        DWORD AffinityMask;
        DWORD BasePriority;
        DWORD Priority;
} BASIC_THREAD_INFORMATION;

а как получить такую?
typedef struct tagTHREADINFO {
    W32THREAD;

//***************************************** begin: USER specific fields

    PTL          ptl;               // Listhead for thread lock list

    PPROCESSINFO    ppi;               // process info struct for this thread

    PQ          pq;                // keyboard and mouse input queue

    PKL         &nb sp; spklActive;         // active keyboard layout for this thread

    PCLIENTTHREADINFO pcti;         // Info that must be visible from client

    PDESKTOP        rpdesk;
    PDESKTOPINFO    pDeskInfo;         // Desktop info visible to client
    PCLIENTINFO     pClientInfo;        // Client info stored in TEB

    DWORD        TIF_fla gs;         // TIF_ flags go here.

    PUNICODE_STRING pstrAppName;        // Application module name.

    PSMS         psmsSent;          // Most recent SMS this thread has sent
    PSMS        psmsCurrent;        // Received SMS this thread is currently processing
    PSMS         psmsReceiveList;    // SMSs to be processed

    LONG          timeLast;          // Time, position, and ID of last message
    ULONG_PTR        idLast;

    int         cQuit;
    int         exitCode;

    HDESK         hdesk;               // Desktop handle
    int         &nb sp; cPaintsReady;
    UINT        cTimersReady;

    PMENUSTATE      pMenuState;

    union {
        PTDB          ptdb;          // Win16Task Schedule data for WOW thread
        PWINDOWSTATION  pwinsta;        // Window station for SYSTEM thread
    };

    PSVR_INSTANCE_INFO psiiList;        // thread DDEML instance list
    DWORD          dwExpWinVer;
    DWORD          dwCompatFlags;      // The Win 3.1 Compat flags
    DWORD          dwCompatFlags2;     // new DWORD to extend compat flags for NT5+ features

    PQ         &nbs p;  pqAttach;          // calculation variabled used in
                                           // zzzAttachThreadInput()

    PTHREADINFO     ptiSibling;         // pointer to sibling thread info

    PMOVESIZEDATA   pmsd;

    DWORD         f sHooks;                  // WHF_ Flags for which hooks are installed
    PHOOK         s phkCurrent;              // Hook this thread is currently processing

    PSBTRACK        pSBTrack;

    HANDLE          hEventQueueClient;
    PKEVENT         pEventQueueServer;
    LIST_ENTRY      PtiLink;              // Link to other threads on desktop
    int         &nb sp;  iCursorLevel;       // keep track of each thread's level
    POINT          ptLast;

    PWND              spwndDefaultIme;    // Default IME Window for this thread
    PIMC              spDefaultImc;       // Default input context for this thread
    HKL               hklPrev;              // Previous active keyboard layout
    int         &nb sp; cEnterCount;
    MLIST        mlPost;               // posted message list.
    USHORT          fsChangeBitsRemoved;// Bits removed during PeekMessage
    WCHAR        wchInje cted;        // character from last VK_PACKET
    DWORD         fsReserveKeys;      // Keys that must be sent to the active
                                           // active console window.
    PKEVENT        *apEvent;              // Wait array for xxxPollAndWaitForSingleObject
    ACCESS_MASK     amdesk;               // Granted desktop access
    UINT          cWindows;          // Number of windows owned by this thread
    UINT          cVisWindows;        // Number of visible windows on this thread

    PHOOK          aphkStart[CWINHOOKS];   // Hooks registered for this thread
    CLIENTTHREADINFO  cti;                // Use this when no desktop is available
} THREADINFO;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.