| 1 | /********************************************************************** | 
|---|
| 2 | * MODULE NAME :  procstat.h             AUTHOR:  Rick Fishman        * | 
|---|
| 3 | * DATE WRITTEN:   2-10-92                                            * | 
|---|
| 4 | *                                                                    * | 
|---|
| 5 | * DESCRIPTION:                                                       * | 
|---|
| 6 | *                                                                    * | 
|---|
| 7 | *  This header file contains the function prototype for the asofyet  * | 
|---|
| 8 | *  undocumented DosQProcStatus API.  It also contains the structure  * | 
|---|
| 9 | *  definitions that are used in the buffer that is returned by the   * | 
|---|
| 10 | *  API call.                                                         * | 
|---|
| 11 | *                                                                    * | 
|---|
| 12 | *  In order to invoke DosQProcStatus, your .DEF file must contain    * | 
|---|
| 13 | *  this entry:                                                       * | 
|---|
| 14 | *                                                                    * | 
|---|
| 15 | *           IMPORTS DOSQPROCSTATUS=DOSCALLS.154                      * | 
|---|
| 16 | *                                                                    * | 
|---|
| 17 | **********************************************************************/ | 
|---|
| 18 |  | 
|---|
| 19 | #pragma linkage( DosQProcStatus, far16 pascal ) | 
|---|
| 20 | USHORT DosQProcStatus( PVOID pvBuf, USHORT cbBuf ); | 
|---|
| 21 |  | 
|---|
| 22 | #define PROCESS_END_INDICATOR   3       // Indicates end of process structs | 
|---|
| 23 |  | 
|---|
| 24 | #pragma pack(1) | 
|---|
| 25 |  | 
|---|
| 26 | typedef struct _SUMMARY | 
|---|
| 27 | { | 
|---|
| 28 | ULONG   ulThreadCount;              // Number of threads in system | 
|---|
| 29 | ULONG   ulProcessCount;             // Number of processes in system | 
|---|
| 30 | ULONG   ulModuleCount;              // Number of modules in system | 
|---|
| 31 |  | 
|---|
| 32 | } SUMMARY, *PSUMMARY; | 
|---|
| 33 |  | 
|---|
| 34 |  | 
|---|
| 35 | typedef struct _THREADINFO | 
|---|
| 36 | { | 
|---|
| 37 | ULONG   ulRecType;                  // Record type (thread = 100) | 
|---|
| 38 | USHORT  tidWithinProcess;           // TID within process (TID is 4 bytes!!) | 
|---|
| 39 | USHORT  usSlot;                     // Unique thread slot number | 
|---|
| 40 | ULONG   ulBlockId;                  // Sleep id thread is sleeping on | 
|---|
| 41 | ULONG   ulPriority;                 // Priority | 
|---|
| 42 | ULONG   ulSysTime;                  // Thread System Time | 
|---|
| 43 | ULONG   ulUserTime;                 // Thread User Time | 
|---|
| 44 | UCHAR   uchState;                   // 1=ready,2=blocked,5=running | 
|---|
| 45 | UCHAR   uchPad;                     // Filler | 
|---|
| 46 | USHORT  usPad;                      // Filler | 
|---|
| 47 |  | 
|---|
| 48 | } THREADINFO, *PTHREADINFO; | 
|---|
| 49 |  | 
|---|
| 50 |  | 
|---|
| 51 | typedef struct _PROCESSINFO | 
|---|
| 52 | { | 
|---|
| 53 | ULONG       ulEndIndicator;         // 1 means not end, 3 means last entry | 
|---|
| 54 | PTHREADINFO ptiFirst;               // Address of the 1st Thread Control Blk | 
|---|
| 55 | USHORT      pid;                    // Process ID (2 bytes - PID is 4 bytes) | 
|---|
| 56 | USHORT      pidParent;              // Parent's process ID | 
|---|
| 57 | ULONG       ulType;                 // Process Type | 
|---|
| 58 | ULONG       ulStatus;               // Process Status | 
|---|
| 59 | ULONG       idSession;              // Session ID | 
|---|
| 60 | USHORT      hModRef;                // Module handle of EXE | 
|---|
| 61 | USHORT      usThreadCount;          // Number of threads in this process | 
|---|
| 62 | ULONG       ulReserved;             // Unknown | 
|---|
| 63 | PVOID       pvReserved;             // Unknown | 
|---|
| 64 | USHORT      usSem16Count;           // Number of 16-bit system semaphores | 
|---|
| 65 | USHORT      usDllCount;             // Number of Dlls used by process | 
|---|
| 66 | USHORT      usShrMemHandles;        // Number of shared memory handles | 
|---|
| 67 | USHORT      usReserved;             // Unknown | 
|---|
| 68 | PUSHORT     pusSem16TableAddr;      // Address of a 16-bit semaphore table | 
|---|
| 69 | PUSHORT     pusDllTableAddr;        // Address of a Dll table | 
|---|
| 70 | PUSHORT     pusShrMemTableAddr;     // Address of a shared memory table | 
|---|
| 71 |  | 
|---|
| 72 | } PROCESSINFO, *PPROCESSINFO; | 
|---|
| 73 |  | 
|---|
| 74 |  | 
|---|
| 75 | typedef struct _SEMINFO | 
|---|
| 76 | { | 
|---|
| 77 | struct _SEMINFO *pNext;             // Ptr to next block (NULL on last one) | 
|---|
| 78 | UINT     idOwningThread;            // ID of owning thread? | 
|---|
| 79 | UCHAR    fbFlags;                   // Semaphore flags | 
|---|
| 80 | UCHAR    uchReferenceCount;         // Number of references | 
|---|
| 81 | UCHAR    uchRequestCount;           // Number of requests | 
|---|
| 82 | UCHAR    uchReserved;               // Unknown | 
|---|
| 83 | ULONG    ulReserved;                // Unknown | 
|---|
| 84 | UINT     uiReserved;                // Unknown | 
|---|
| 85 | CHAR     szSemName[ 1 ];            // ASCIIZ semaphore name | 
|---|
| 86 |  | 
|---|
| 87 |  | 
|---|
| 88 | } SEMINFO, *PSEMINFO; | 
|---|
| 89 |  | 
|---|
| 90 | typedef struct _SHRMEMINFO | 
|---|
| 91 | { | 
|---|
| 92 | struct _SHRMEMINFO *pNext;          // Ptr to next block (NULL on last one) | 
|---|
| 93 | USHORT      usMemHandle;            // Shared memory handle (?) | 
|---|
| 94 | SEL         selMem;                 // Selector | 
|---|
| 95 | USHORT      usReferenceCount;       // Number of references | 
|---|
| 96 | CHAR        szMemName[ 1 ];         // ASCIIZ shared memory name | 
|---|
| 97 |  | 
|---|
| 98 | } SHRMEMINFO, *PSHRMEMINFO; | 
|---|
| 99 |  | 
|---|
| 100 |  | 
|---|
| 101 | typedef struct _MODINFO | 
|---|
| 102 | { | 
|---|
| 103 | struct _MODINFO *pNext;             // Ptr to next block (NULL on last one) | 
|---|
| 104 | USHORT   hMod;                      // Module handle | 
|---|
| 105 | USHORT   usModType;                 // Module type (0=16bit,1=32bit) | 
|---|
| 106 | ULONG    ulModRefCount;             // Count of module references | 
|---|
| 107 | ULONG    ulSegmentCount;            // Number of segments in module | 
|---|
| 108 | ULONG    ulDontKnow1;               // | 
|---|
| 109 | PSZ      szModName;                 // Addr of fully qualified module name | 
|---|
| 110 | USHORT   usModRef[ 1 ];             // Handles of module references | 
|---|
| 111 |  | 
|---|
| 112 | } MODINFO, *PMODINFO; | 
|---|
| 113 |  | 
|---|
| 114 |  | 
|---|
| 115 | typedef struct _BUFFHEADER | 
|---|
| 116 | { | 
|---|
| 117 | PSUMMARY        psumm;              // SUMMARY section ptr | 
|---|
| 118 | PPROCESSINFO    ppi;                // PROCESS section ptr | 
|---|
| 119 | PSEMINFO        psi;                // SEM section ptr (add 16 to offset) | 
|---|
| 120 | PVOID           pDontKnow1;         // | 
|---|
| 121 | PSHRMEMINFO     psmi;               // SHARED MEMORY section ptr | 
|---|
| 122 | PMODINFO        pmi;                // MODULE section ptr | 
|---|
| 123 | PVOID           pDontKnow2;         // | 
|---|
| 124 | PVOID           pDontKnow3;         // | 
|---|
| 125 |  | 
|---|
| 126 | } BUFFHEADER, *PBUFFHEADER; | 
|---|
| 127 |  | 
|---|
| 128 | #pragma pack() | 
|---|