20楼#
发布于:2002-06-02 19:51
#include<stdio.h>
#include<windows.h> void main() { HANDLE hPhysicalDrive; hPhysicalDrive = CreateFile(\"\\\\\\\\.\\\\PhysicalDrive0\", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0); if(hPhysicalDrive == INVALID_HANDLE_VALUE) { char szError[80]; wsprintf(szError, \"Error %ld\", GetLastError()); MessageBox(0,\"Drive 0 Open Error\", szError, MB_OK); } else { char data[512]; DWORD dwBytesRead; ReadFile(hPhysicalDrive, data, 512, &dwBytesRead, NULL); CloseHandle(hPhysicalDrive); } } 不行改用deviceiocontrol |
|
21楼#
发布于:2002-06-02 20:20
pdf 都给你答案了。
----- 我知道在老DOS下对硬盘直接操作可以能过BIOS调用,也可以根据协议自已编驱动(用PIO方式),但在视窗下我不是很熟,你能保证这种方法的可行性吗,会不会有致命的问题,这和用PIO方式有何区别 ----- 在nt系的os下,不用想这种方法。系统根本就不允许你这么做。 |
|
22楼#
发布于:2002-06-02 20:20
pJf 都给你答案了。
----- 我知道在老DOS下对硬盘直接操作可以能过BIOS调用,也可以根据协议自已编驱动(用PIO方式),但在视窗下我不是很熟,你能保证这种方法的可行性吗,会不会有致命的问题,这和用PIO方式有何区别 ----- 在nt系的os下,不用想这种方法。系统根本就不允许你这么做。 |
|
23楼#
发布于:2002-06-02 20:24
我还是想用WDM驱动的方式进行,能给些指示吗
|
|
24楼#
发布于:2002-06-02 20:43
比较无趣的方法。
把PJF的方法中,所有的CREATEFILE -> ZWCREATEFILE READFILE -> ZWREADFILE WRITEFILE -> ZWREITEFILE, DEVICEIOCONTROL -> ZWDEVICEIOCONTORL CLOSEHANDLE -> ZWCLOSE 最后把RING3 CONSOLE移动到RING0去。具体调用,只能自己做接口吧。 这样也能把RING3移动到RING0. -〉这样有意义吗? 其它的方法也有,你先把NTDDK\\SRC\\STORAGE\\CLASSPNP和NTDDK\\SRC\\STORAGE\\DISK先读过再说。 |
|
上一页
下一页