home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / ps.zip / ps.h < prev   
Text File  |  1993-03-17  |  7KB  |  155 lines

  1. /****************************************************************
  2.  * Dateiname   : ps.h
  3.  *               Geschrieben 2/93 von Ralf Seidel nach einer
  4.  *               Vorlage von Rick Fishman
  5.  * Beschreibung: Diese Headerdatei stellt ein undokumentierte
  6.  *               Funktion von OS/2 zur Verfügung und definiert
  7.  *               die dazugehörigen Typen.
  8.  * Bemerkungen : Um diese Funktion zu nutzen muß in der .def
  9.  *               Datei zum jeweiligen Programm die Anweisung
  10.  *                  IMPORTS DosQProcStatus.154
  11.  *               auftauchen.
  12.  *               Bei der Verwendung von EMX-gcc muß eine Datei
  13.  *               mit den Einträgen
  14.  *                  +psimp.s
  15.  *                  DosQProcStatus doscalls 154 F
  16.  *               benutzt werden und mit dem Befehl
  17.  *                  emximp -o ps.a ps.imp
  18.  *               in eine "linkbare" Form ungewandelt werden.
  19.  *               ps.a ist dann wie eine zusätzliche Library zu
  20.  *               verwenden
  21.  ****************************************************************/
  22.  
  23. #pragma linkage( DosQProcStatus, far16 pascal )
  24.  
  25. /* Prototyp von DosQProcStatus */
  26. #ifdef __EMX__
  27. USHORT _THUNK_FUNCTION(DosQProcStatus)(PVOID pvBuf, USHORT cbBuf);
  28. #else
  29. USHORT DosQProcStatus( PVOID pvBuf, USHORT cbBuf );
  30. #endif
  31.  
  32. #define PROCINFO_ENDFLAG 3       /* Endflag der Proceßinfoliste */
  33. #define PROCINFO_CONTFLAG 1
  34. #define PROCINFO_BUF_SIZE 0x8000 /* Buffergröße für Statusdaten */
  35.  
  36.  
  37. #pragma pack(1)
  38.  
  39. typedef struct _SUMMARY
  40. {
  41.    ULONG   ulThreadCt;          /* Größte Thread ID des Systems */
  42.    ULONG   ulProcCt;            /* ?                            */
  43.    ULONG   ulOpenFileCt;        /* Anzahl geöffneter Dateien    */
  44. } SUMMARY, *PSUMMARY;
  45.  
  46.  
  47. typedef struct _THREADINFO
  48. {
  49.    USHORT  usUnknown1;          /* immer 0100 ?                 */
  50.    USHORT  usUnknown2;          /* immer 0 ?                    */
  51.    USHORT  usProcTid;           /* TID im Prozess (2 bytes!)    */
  52.    USHORT  usSysTid;            /* TID des Systems (2 bytes!)   */
  53.    ULONG   ulBlockId;           /* Block ID (?)                 */
  54.    USHORT  usPriority;          /* Priorität                    */
  55.    USHORT  usUnknown3;          /* immer 0 ?                    */
  56.    ULONG   ulExecCt1;           /* Zähler der Ausführungszeit ? */
  57.    ULONG   ulExecCt2;           /* Zähler der Ausführungszeit ? */
  58.    USHORT  usThreadStat;        /* 1=ready, 2=blocked,          */
  59.                                 /* 5=running, 9=frozen          */
  60.    USHORT  usUnknown4;          /* immer 0 ?                    */
  61. } THREADINFO, *PTHREADINFO;
  62.  
  63.  
  64. typedef struct _PROCESSINFO
  65. {
  66.    ULONG       ulEndFlag;       /* 3 = letzter Eintrag          */
  67.                                 /* 1 = weitere folgen           */
  68.    PTHREADINFO ptiFirst;        /* Addresse des ersten          */
  69.                                 /* Thread Ctrl Block            */
  70.    USHORT      pid;             /* Prozeß ID (2 bytes!)         */
  71.    USHORT      pidParent;       /* Parent`s process ID          */
  72.    USHORT      usSessionType;   /* Session Typ                  */
  73.    USHORT      usUnknown1;      /* immer 0 ?                    */
  74.    USHORT      usUnknown2;      /* nicht immer 0                */
  75.    USHORT      usUnknown3;      /* immer 0 ?                    */
  76.    USHORT      sid;             /* Session ID                   */
  77.    USHORT      usUnknown4;      /* immer 0 ?                    */
  78.    USHORT      hModRef;         /* handle des .EXE Moduls       */
  79.    USHORT      usThreadCt;      /* Anzahl Threads im Prozeß     */
  80.    USHORT      usUnknown5;
  81.    USHORT      usUnknown6;      /* immer 0 ?                    */
  82.    USHORT      usUnknown7;      /* immer 0 ?                    */
  83.    USHORT      usUnknown8;      /* immer 0 ?                    */
  84.    USHORT      usThreadIdCt;    /* USHORTs in Thread ID Tabelle */
  85.    USHORT      usModCt;         /* USHORTs in ModHandle Tabelle */
  86.    USHORT      usUshortCt;      /* USHORTs in USHORT Tabelle    */
  87.    USHORT      usUnknown9;
  88.    PUSHORT     pusThreadIdTable;/* Addresse TID Tabelle         */
  89.    PUSHORT     pusHModTable;    /* Addresse ModHandle Tabelle   */
  90.    PUSHORT     pusUSHORTTable;  /* Addresse USHORT Tabelle      */
  91. } PROCESSINFO, *PPROCESSINFO;
  92.  
  93.  
  94. typedef struct _SEMINFO
  95. {
  96.    struct _SEMINFO *pNext;      /* Zeiger zum nächsten Block    */
  97.                                 /* (NULL beim Allerletzten)     */
  98.    USHORT   usOwner;            /* Besitzender Thread           */
  99.    UCHAR    uchFlag;            /* Flag ?                       */
  100.    UCHAR    uchRefCt;           /* Anzahl der Verweise          */
  101.    UCHAR    uchRequestCt;       /* Anzahl der Anforderungen     */
  102.                                 /* (requests)                   */
  103.    UCHAR    uchUnknown1;        /* immer 0 ?                    */
  104.    USHORT   usUnknown2;         /* immer 0 ?                    */
  105.    USHORT   usIndex;            /* Index (0 beim Letzten)       */
  106.    USHORT   usUnknown3;         /* Immer 'EM'                   */
  107.                                 /* (Überrest von "SEM" ?)       */
  108.    CHAR     szSemName[1];       /* ASCIIZ Semaphorenname        */
  109. } SEMINFO, *PSEMINFO;
  110.  
  111. typedef struct _SHRMEMINFO
  112. {
  113.     struct _SHRMEMINFO *pNext;  /* Nächster Block               */
  114.                                 /* (NULL beim Letzten)          */
  115.     USHORT      usMemHandle;    /* Shared memory handle         */
  116.     SEL         selMem;         /* Selector                     */
  117.     USHORT      usRefCt;        /* Anzahl der Referenzen        */
  118.     CHAR        szMemName[1];   /* ASCIIZ shared memory Name    */
  119. } SHRMEMINFO, *PSHRMEMINFO;
  120.  
  121.  
  122. typedef struct _MODINFO
  123. {
  124.    struct _MODINFO *pNext;      /* Nächsten Block               */
  125.                                 /* (NULL beim letzten)          */
  126.    USHORT   hMod;               /* Modul handle                 */
  127.    USHORT   usMemModel;         /* Modultyp (0=16bit,1=32bit)   */
  128.    ULONG    ulRefCt;            /* Anzahl importierter Module   */
  129.    ULONG    ulSegCt;            /* Anzahl Segmente im Module    */
  130.    ULONG    ulUnknown1;         /* immer 0 ?                    */
  131.    PSZ      szModName;          /* Adresse des Modulnamens      */
  132.    USHORT   usModRef[1];        /* Handles importierer Module   */
  133. } MODINFO, *PMODINFO;
  134.  
  135.  
  136. typedef struct _BUFFHEADER
  137. {
  138.    PSUMMARY        psumm;       /* Allgemeine Daten             */
  139.    PPROCESSINFO    ppi;         /* Zeiger auf den ersten        */
  140.                                 /* PROCESSINFO Block.           */
  141.    /* Die Adressen der nächsten Blöcke errechnen sich durch     */
  142.    /* Addition von ppi mit der Größe der THREADINFO Struktur    */
  143.    /* mal der Anzahl der Threads des Prozesses.                 */
  144.    /* (pNext = (PPROCESSINFO)(ppi->ptiFirst+ppi->usThreadCt))   */
  145.    PSEMINFO        psi;         /* SEM Info Zeiger (+16 Bytes)  */
  146.                                 /* Ebenso Zeiger auf das Ende   */
  147.                                 /* der Prozeßinfoliste          */
  148.    PVOID           pUnknown1;   /* immer NULL ?                 */
  149.    PSHRMEMINFO     psmi;        /* SHARED MEMORY Info Zeiger    */
  150.    PMODINFO        pmi;         /* MODULE Info Zeiger           */
  151.    PVOID           pUnknown2;   /* immer NULL ?                 */
  152.    PVOID           pUnknown3;   /* immer NULL ?                 */
  153. } BUFFHEADER, *PBUFFHEADER;
  154. #pragma pack()
  155.