pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
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
zdhe
驱动太牛
驱动太牛
  • 注册日期2001-12-26
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72362分
  • 威望362260点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
21楼#
发布于:2002-06-02 20:20
pdf 都给你答案了。

-----
我知道在老DOS下对硬盘直接操作可以能过BIOS调用,也可以根据协议自已编驱动(用PIO方式),但在视窗下我不是很熟,你能保证这种方法的可行性吗,会不会有致命的问题,这和用PIO方式有何区别
-----

在nt系的os下,不用想这种方法。系统根本就不允许你这么做。


zdhe
驱动太牛
驱动太牛
  • 注册日期2001-12-26
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72362分
  • 威望362260点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
22楼#
发布于:2002-06-02 20:20
pJf 都给你答案了。

-----
我知道在老DOS下对硬盘直接操作可以能过BIOS调用,也可以根据协议自已编驱动(用PIO方式),但在视窗下我不是很熟,你能保证这种方法的可行性吗,会不会有致命的问题,这和用PIO方式有何区别
-----

在nt系的os下,不用想这种方法。系统根本就不允许你这么做。


FoolishMan
驱动牛犊
驱动牛犊
  • 注册日期2002-05-10
  • 最后登录2002-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2002-06-02 20:24
我还是想用WDM驱动的方式进行,能给些指示吗
zdhe
驱动太牛
驱动太牛
  • 注册日期2001-12-26
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72362分
  • 威望362260点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
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先读过再说。



上一页 下一页
游客

返回顶部