📄 lastdrv4.c
字号:
/* LASTDRV4.C -- uses undocumented DOS */
#include <stdlib.h>
#include <stdio.h>
#include <dos.h>
#ifndef MK_FP
#define MK_FP(seg,ofs) \
((void far *)(((unsigned long)(seg) << 16) | (ofs)))
#endif
main()
{
union REGS r;
struct SREGS s;
char far *doslist;
unsigned lastdrv_ofs;
unsigned lastdrv;
/* get offset for LASTDRIVE within DOS List of Lists */
if (_osmajor < 2)
return 0;
else if (_osmajor == 2)
lastdrv_ofs = 0x10;
else if (_osmajor == 3 && _osminor == 0)
lastdrv_ofs = 0x1b;
else
lastdrv_ofs = 0x21;
/* Get DOS Lists of Lists */
r.h.ah = 0x52;
segread(&s);
s.es = r.x.bx = 0;
int86x(0x21, &r, &r, &s);
/* make sure Function 52h is supported */
if (! s.es && ! r.x.bx)
return 0;
doslist = MK_FP(s.es, r.x.bx);
/* Get LASTDRIVE number */
lastdrv = doslist[lastdrv_ofs];
/* OS/2 DOS compatibility box sets LASTDRIVE to FFh */
if (lastdrv == 0xFF)
return 0;
/* Print LASTDRIVE letter */
fputs("LASTDRIVE=", stdout);
putchar('A' - 1 + lastdrv);
putchar('\n');
/* return LASTDRIVE number to DOS */
return lastdrv;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -