|
|
1.1 root 1: /*
2: * Example of DOSGETINFOSEG usage
3: *
4: * Gets the local and global data segments and displays some of their contents
5: *
6: * Copyright (C) Microsoft Corp. 1986
7: */
8:
9: #include "doscalls.h"
10:
11: struct gdtinfoarea{
12: unsigned long time;
13: unsigned long milliseconds;
14: unsigned char hours;
15: unsigned char minutes;
16: unsigned char seconds;
17: unsigned char hundreths;
18: unsigned timezone;
19: unsigned timer_interval;
20: unsigned char day;
21: unsigned char month;
22: unsigned year;
23: unsigned char day_of_week;
24: unsigned char major_version;
25: unsigned char minor_version;
26: unsigned char revision_number;
27: unsigned char current_screen_group;
28: unsigned char max_num_of_screengrps;
29: unsigned char huge_selector_shift_count;
30: unsigned char protect_mode_indicator;
31: unsigned foreground_process_id;
32: unsigned char dynamic_variation_flag;
33: unsigned char maxwait;
34: unsigned minimum_timeslice;
35: unsigned maximum_timeslice;
36: unsigned boot_drive;
37: unsigned char reserved[32];
38: };
39:
40:
41: struct ldtinfoarea{
42: unsigned current_process_pid;
43: unsigned parent_pid;
44: unsigned priority_of_current_thread;
45: unsigned thread_id_of_current_thread;
46: unsigned screen_group;
47: unsigned subscreen_group;
48: unsigned current_process_is_in_fg;
49: };
50:
51: main()
52: {
53: struct gdtinfoarea *gdt;
54: struct ldtinfoarea *ldt;
55: unsigned gdt_handle, ldt_handle;
56:
57: /* get the infoseg handles */
58: DOSGETINFOSEG(&gdt_handle, &ldt_handle);
59:
60: /* convert the handles into far pointers */
61: gdt = (struct gdtinfoarea *)((long)gdt_handle << 16);
62: ldt = (struct ldtinfoarea *)((long)ldt_handle << 16);
63:
64: /* display the contents of the segments */
65: printf("This is thread %u of process %u\n",
66: ldt->thread_id_of_current_thread,
67: ldt->current_process_pid);
68: printf("The current time is %u:%2u:%2u.%2u\n",
69: gdt->hours, gdt->minutes, gdt->seconds, gdt->hundreths);
70: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.