Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include <io.h>
#include <conio.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys\types.h>
#include <sys\stat.h>
#include <malloc.h>
#include <errno.h>
#include <dos.h>
int main(void);
union REGS inregs, outregs;
struct SREGS segregs;
int main(void) {
int io_handle;
unsigned count;
struct {
unsigned days;
unsigned char min;
unsigned char hours;
unsigned char sec_per_100;
unsigned char sec;
} clock_buf;
// ЋвЄалў Ґ¬ гбва®©бвў® б Ё¬ҐҐ¬ CLOCK$
if( (io_handle = open("CLOCK$", O_RDWR)) == - 1 ) {
// …б«Ё ®вЄалвм Ґ г¤ «®бм, ўлў®¤Ё¬
// Є®¤ ®иЁЎЄЁ
printf("ЋиЁЎЄ ЇаЁ ®вЄалвЁЁ гбва®©бвў %d",errno);
return errno;
}
// Џ®«гз Ґ¬ Ёд®а¬ жЁо ®Ў гбва®©б⢥
inregs.h.ah = 0x44;
inregs.h.al = 0;
inregs.x.bx = io_handle;
intdos( &inregs, &outregs );
if(outregs.x.cflag == 1) {
// ЏаЁ ®иЁЎЄҐ ўлў®¤Ё¬ Є®¤ ®иЁЎЄЁ
printf("IOCTL error %x\n",&outregs.x.ax);
exit(-1);
}
// “бв ў«Ёў Ґ¬ ў 1 ЎЁв 5 (ЇҐаҐЄ«оз Ґ¬ ¤а ©ўҐа
// ў ¤ў®Ёзл© аҐ¦Ё¬ ®Ў¬Ґ ¤ л¬Ё
inregs.x.dx = (outregs.x.dx | 0x0020) & 0x00ff;
// “бв ў«Ёў Ґ¬ б«®ў® Ёд®а¬ жЁЁ ®Ў гбва®©б⢥
inregs.h.ah = 0x44;
inregs.h.al = 1;
inregs.x.bx = io_handle;
intdos( &inregs, &outregs );
if(outregs.x.cflag == 1) {
// ЏаЁ ®иЁЎЄҐ ўлў®¤Ё¬ Є®¤ ®иЁЎЄЁ
printf("IOCTL error %x\n",&outregs.x.ax);
exit(-1);
}
// ‚лў®¤Ё¬ б«®ў® Ёд®а¬ жЁЁ ®Ў гбва®©б⢥ нЄа
printf("\nDevice Information: %04X\n", outregs.x.dx);
// —Ёв Ґ¬ 6 Ў ©в Ё§ гбва®©бвў ў ЎгдҐа buf
// ЋЎ¬Ґ Їа®Ё§ў®¤Ёвбп ў ¤ў®Ёз®¬ ०Ё¬Ґ
if((count = read(io_handle, &clock_buf, 6)) == -1) {
// …б«Ё ЇаЁ з⥨Ё Їа®Ё§®и« ®иЁЎЄ ,
// ўлў®¤Ё¬ ҐҐ Є®¤
printf("ЋиЁЎЄ з⥨п %d",errno);
return errno;
}
printf("\nЏ®«г祮 ®в ¤а ©ўҐа з б®ў CLOCK$:"
"\n"
"\nЏа®и«® ¤Ґ© Ї®б«Ґ 01.01.80: %d"
"\nЊЁгвл: %d"
"\n— бл: %d"
"\n‘ҐЄг¤л: %d"
"\n‘®влҐ ¤®«Ё ᥪг¤л: %d"
"\n",
clock_buf.days,
clock_buf.min,
clock_buf.hours,
clock_buf.sec,
clock_buf.sec_per_100);
// ‡ Єалў Ґ¬ гбва®©бвў®
close(io_handle);
exit(0);
}