| [2] | 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 ) | 
|---|
| [551] | 20 | USHORT DosQProcStatus(PVOID pvBuf, USHORT cbBuf); | 
|---|
| [2] | 21 |  | 
|---|
| [551] | 22 | #define PROCESS_END_INDICATOR   3       // Indicates end of process structs | 
|---|
| [2] | 23 |  | 
|---|
|  | 24 | #pragma pack(1) | 
|---|
|  | 25 |  | 
|---|
|  | 26 | typedef struct _SUMMARY | 
|---|
|  | 27 | { | 
|---|
| [551] | 28 | ULONG ulThreadCount;          // Number of threads in system | 
|---|
|  | 29 | ULONG ulProcessCount;         // Number of processes in system | 
|---|
|  | 30 | ULONG ulModuleCount;          // Number of modules in system | 
|---|
| [2] | 31 |  | 
|---|
| [551] | 32 | } | 
|---|
|  | 33 | SUMMARY, *PSUMMARY; | 
|---|
| [2] | 34 |  | 
|---|
|  | 35 | typedef struct _THREADINFO | 
|---|
|  | 36 | { | 
|---|
| [551] | 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 | 
|---|
| [2] | 47 |  | 
|---|
| [551] | 48 | } | 
|---|
|  | 49 | THREADINFO, *PTHREADINFO; | 
|---|
| [2] | 50 |  | 
|---|
|  | 51 | typedef struct _PROCESSINFO | 
|---|
|  | 52 | { | 
|---|
| [551] | 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 | 
|---|
| [2] | 71 |  | 
|---|
| [551] | 72 | } | 
|---|
|  | 73 | PROCESSINFO, *PPROCESSINFO; | 
|---|
| [2] | 74 |  | 
|---|
|  | 75 | typedef struct _SEMINFO | 
|---|
|  | 76 | { | 
|---|
| [551] | 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 | 
|---|
| [2] | 86 |  | 
|---|
| [551] | 87 | } | 
|---|
|  | 88 | SEMINFO, *PSEMINFO; | 
|---|
| [2] | 89 |  | 
|---|
|  | 90 | typedef struct _SHRMEMINFO | 
|---|
|  | 91 | { | 
|---|
| [551] | 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 | 
|---|
| [2] | 97 |  | 
|---|
| [551] | 98 | } | 
|---|
|  | 99 | SHRMEMINFO, *PSHRMEMINFO; | 
|---|
| [2] | 100 |  | 
|---|
|  | 101 | typedef struct _MODINFO | 
|---|
|  | 102 | { | 
|---|
| [551] | 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 | 
|---|
| [2] | 111 |  | 
|---|
| [551] | 112 | } | 
|---|
|  | 113 | MODINFO, *PMODINFO; | 
|---|
| [2] | 114 |  | 
|---|
|  | 115 | typedef struct _BUFFHEADER | 
|---|
|  | 116 | { | 
|---|
| [551] | 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;             // | 
|---|
| [2] | 125 |  | 
|---|
| [551] | 126 | } | 
|---|
|  | 127 | BUFFHEADER, *PBUFFHEADER; | 
|---|
| [2] | 128 |  | 
|---|
|  | 129 | #pragma pack() | 
|---|