| 1 | /* $Id: DEVINFO.H,v 1.1.1.1 2003/07/02 13:56:58 eleph Exp $ */ | 
|---|
| 2 | /* | 
|---|
| 3 | * OS/2 definitions for logal and global info segments | 
|---|
| 4 | * | 
|---|
| 5 | * (C) 2000-2002 InnoTek Systemberatung GmbH | 
|---|
| 6 | * | 
|---|
| 7 | * This program is free software; you can redistribute it and/or | 
|---|
| 8 | * modify it under the terms of the GNU General Public License as | 
|---|
| 9 | * published by the Free Software Foundation; either version 2 of | 
|---|
| 10 | * the License, or (at your option) any later version. | 
|---|
| 11 | * | 
|---|
| 12 | * This program is distributed in the hope that it will be useful, | 
|---|
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|---|
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|---|
| 15 | * GNU General Public License for more details. | 
|---|
| 16 | * | 
|---|
| 17 | * You should have received a copy of the GNU General Public | 
|---|
| 18 | * License along with this program; if not, write to the Free | 
|---|
| 19 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, | 
|---|
| 20 | * USA. | 
|---|
| 21 | * | 
|---|
| 22 | */ | 
|---|
| 23 |  | 
|---|
| 24 |  | 
|---|
| 25 | // Prevent multiple inclusion | 
|---|
| 26 | #if !defined(DevInfo_h) | 
|---|
| 27 | #define DevInfo_h 1 | 
|---|
| 28 |  | 
|---|
| 29 | #if !defined(__cplusplus) | 
|---|
| 30 | #error C++ must be used for strict type checking | 
|---|
| 31 | #endif | 
|---|
| 32 |  | 
|---|
| 33 |  | 
|---|
| 34 | // Include the fundamental type definitions | 
|---|
| 35 | #include "DevType.h" | 
|---|
| 36 |  | 
|---|
| 37 |  | 
|---|
| 38 | // Global (per-system) information segment | 
|---|
| 39 | struct        GINFO | 
|---|
| 40 | { | 
|---|
| 41 | WORD32      Time;           // Time in seconds since 1970.01.01 | 
|---|
| 42 | WORD32      MilliSeconds;   // Time in milliseconds | 
|---|
| 43 | BYTE        Hour;           // Current hour | 
|---|
| 44 | BYTE        Minute;         // Current minute | 
|---|
| 45 | BYTE        Second;         // Current second | 
|---|
| 46 | BYTE        Hundredth;      // Current hundredth of a second | 
|---|
| 47 | WORD16      Timezone;       // Minutes from UTC (Greenwich mean-time) | 
|---|
| 48 | WORD16      Interval;       // Timer interval (tenths of milliseconds) | 
|---|
| 49 | BYTE        Day;            // Current day of month | 
|---|
| 50 | BYTE        Month;          // Current month | 
|---|
| 51 | WORD16      Year;           // Current year | 
|---|
| 52 | BYTE        Weekday;        // Current day of week (0 = Sunday, 6 = Saturday) | 
|---|
| 53 | BYTE        MajorVersion;   // Major version number of OS/2 | 
|---|
| 54 | BYTE        MinorVersion;   // Minor version number of OS/2 | 
|---|
| 55 | BYTE        Revision;       // Revision letter of OS/2 | 
|---|
| 56 | BYTE        CurrentSession; // Current foreground full-screen session ID | 
|---|
| 57 | BYTE        MaxSessions;    // Maximum number of full-screen sessions | 
|---|
| 58 | BYTE        HugeShift;      // Shift count for huge segments | 
|---|
| 59 | BYTE        ProtectFlag;    // 1 = protected mode only, 0 = mixed mode | 
|---|
| 60 | WORD16      ForegroundPID;  // Process ID of the current foreground process | 
|---|
| 61 | BYTE        DynamicFlag;    // 1 = dynamic variation enabled, 0 = disabled | 
|---|
| 62 | BYTE        MaxWaitTime;    // Maximum wait to get control (seconds) | 
|---|
| 63 | WORD16      MinTimeSlice;   // Minimum time slice length (milliseconds) | 
|---|
| 64 | WORD16      MaxTimeSlice;   // Maximum time slice length (milliseconds) | 
|---|
| 65 | WORD16      BootDrive;      // ID of system startup drive (1 = A:, 26 = Z:) | 
|---|
| 66 | BYTE        Trace[32];      // System tracing flags (RAS) | 
|---|
| 67 | BYTE        MaxVIOSessions; // Maximum number of VIO (windowed) sessions | 
|---|
| 68 | BYTE        MaxPMSessions;  // Maximum number of PM sessions | 
|---|
| 69 | WORD16      ErrorLog;       // Error logging status | 
|---|
| 70 | WORD16      RASSelector;    // RAS memory mapped IO selector | 
|---|
| 71 | WORD32      RASAddress;     // RAS memory mapped IO address | 
|---|
| 72 | BYTE        MaxVDMSessions; // Maximum number of virtual DOS machines | 
|---|
| 73 | }; | 
|---|
| 74 |  | 
|---|
| 75 | // Local (per-process) information segment | 
|---|
| 76 | struct        LINFO | 
|---|
| 77 | { | 
|---|
| 78 | WORD16      ProcessID;      // Current process ID | 
|---|
| 79 | WORD16      ParentID;       // Current process' parent's PID | 
|---|
| 80 | WORD16      Priority;       // Current thread's priority | 
|---|
| 81 | WORD16      ThreadID;       // Current thread ID | 
|---|
| 82 | WORD16      SessionID;      // Current session ID | 
|---|
| 83 | BYTE        Status;         // Process status | 
|---|
| 84 | BYTE        Unused1;        // Unused | 
|---|
| 85 | WORD16      ForegroundFlag; // Current process has keyboard focus | 
|---|
| 86 | BYTE        Type;           // Type of process (0 = FS, 1 = real, 2 = VIO, | 
|---|
| 87 | BYTE        Unused2;        //                  3 = PM, 4 = detached) | 
|---|
| 88 | WORD16      EnvSelector;    // Selector for environment | 
|---|
| 89 | WORD16      CommandLineOff; // Offset of command line in EnvironmentSel | 
|---|
| 90 | WORD16      DSLength;       // Length of data segment | 
|---|
| 91 | WORD16      StackSize;      // Size of stack (bytes) | 
|---|
| 92 | WORD16      HeapSize;       // Size of heap (bytes) | 
|---|
| 93 | WORD16      Module;         // Module handle | 
|---|
| 94 | WORD16      DSSelector;     // Selector for data segment | 
|---|
| 95 | }; | 
|---|
| 96 |  | 
|---|
| 97 |  | 
|---|
| 98 | #endif // DevInfo_h | 
|---|