Win2k可以调用int13中断读写磁盘吗?
Win2k可以调用int13中断读写磁盘吗?如果可以怎么做呢? 问题点数:20、回复次数:4Top
1 楼protale()回复于 2003-07-03 18:05:27 得分 4
对于软盘的访问没有限制;对于硬盘则不行,关于这方面的资料实在太多;可以查看以前的帖子。大致在2000下的方法是打开文件C:或D:或PHYSICALDRIVE0(即DISK 80)来进行读写;当然也可以通过驱动Top
2 楼hotrain(hotrain)回复于 2003-07-03 21:17:26 得分 4
如果写个DOS程序在WIN2K下运行的话,可以用INT13H。但是写成WINDOWS程序就不行了。查一下DDK方面的资料吧。
Top
3 楼firstrose(kots)回复于 2003-07-04 19:32:38 得分 2
ring3无法用int13Top
4 楼atm2001(松鼠)回复于 2003-07-04 20:45:14 得分 10
进ring0,用V86模式用int13.
或者在ring0里用古老的未公开的函数:
Ke386CallBios(UCHAR Int, PKV86M_REGISTERS Regs);
Ki386RetToV86Mode(PKV86M_REGISTERS InRegs,
PKV86M_REGISTERS OutRegs);
相关结构及常量
::
#ifndef __NTOSKRNL_INCLUDE_INTERNAL_V86M_H
#define __NTOSKRNL_INCLUDE_INTERNAL_V86M_H
#ifndef __ASM__
/* Emulate cli/sti instructions */
#define KV86M_EMULATE_CLI_STI (0x1)
/* Allow the v86 mode code to access i/o ports */
#define KV86M_ALLOW_IO_PORT_ACCESS (0x2)
typedef struct _KV86M_REGISTERS
{
/*
* General purpose registers
*/
ULONG Ebp;
ULONG Edi;
ULONG Esi;
ULONG Edx;
ULONG Ecx;
ULONG Ebx;
ULONG Eax;
ULONG Ds;
ULONG Es;
ULONG Fs;
ULONG Gs;
/*
* Control registers
*/
ULONG Eip;
ULONG Cs;
ULONG Eflags;
ULONG Esp;
ULONG Ss;
/*
* Control structures
*/
ULONG RecoveryAddress;
UCHAR RecoveryInstruction[4];
ULONG Vif;
ULONG Flags;
PNTSTATUS PStatus;
} KV86M_REGISTERS, *PKV86M_REGISTERS;
NTSTATUS STDCALL
Ke386CallBios(UCHAR Int, PKV86M_REGISTERS Regs);
#else /* ASSEMBLER */
/*
* Definitions for the offsets of members in the KV86M_REGISTERS
*/
#define KV86M_REGISTERS_EBP (0x0)
#define KV86M_REGISTERS_EDI (0x4)
#define KV86M_REGISTERS_ESI (0x8)
#define KV86M_REGISTERS_EDX (0xC)
#define KV86M_REGISTERS_ECX (0x10)
#define KV86M_REGISTERS_EBX (0x14)
#define KV86M_REGISTERS_EAX (0x18)
#define KV86M_REGISTERS_DS (0x1C)
#define KV86M_REGISTERS_ES (0x20)
#define KV86M_REGISTERS_FS (0x24)
#define KV86M_REGISTERS_GS (0x28)
#define KV86M_REGISTERS_EIP (0x2C)
#define KV86M_REGISTERS_CS (0x30)
#define KV86M_REGISTERS_EFLAGS (0x34)
#define KV86M_REGISTERS_ESP (0x38)
#define KV86M_REGISTERS_SS (0x3C)
#endif /* ASSEMBLER */
#endif /* __NTOSKRNL_INCLUDE_INTERNAL_V86M_H */
其它的东西很多人讲过了,自己做吧。Top




