huweiming268
驱动牛犊
驱动牛犊
  • 注册日期2003-12-13
  • 最后登录2004-07-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1074回复:5

为什么无法打开设备??

楼主#
更多 发布于:2004-03-03 10:39
我的系统是xp,用winxpDDK编译。
不知道为什么总是提示错误码2.

程序如下:
/*-----------gedriver.h-------------*/
NTSTATUS
DriverEntry(IN PDRIVER_OBJECT driverObject,
            IN PUNICODE_STRING registryPath
           };
NTSTATUS
GdCreate(IN PDEVICE_OBJECT deviceObject,
         IN PIRP irp
        );
NTSTATUS
GdCreate(IN PDEVICE_OBJECT deviceObject,
         IN PIRP irp
        );
///////////////////////////////////////////////////////////////
/*------------gedriver.c--------------*/
#include "gedriver.h"
NTSTATUS
DriverEntry(IN PDRIVER_OBJECT driverObject,
            IN PUNICODE_STRING registryPath
           }
{
NTSTATUS status=STATUS_SUCCESS;
DbgPrint(" In Driver Entry Routine n");
driverObject->MajorFunction[IRP_MJ_CREATE]       =GdCreate;
        driverObject->MajorFunction[IRP_MJ_CLOSE]=GdClose;
DbgPrint(" Out Driver Entry Routine n");
return status;
}
NTSTATUS
GdCreate(IN PDEVICE_OBJECT deviceObject,
         IN PIRP irp
        )
{
NTSTATUS status=STATUS_SUCCESS;
DbgPrint(" Create Routine n");
return status;
}

NTSTATUS
GdCreate(IN PDEVICE_OBJECT deviceObject,
         IN PIRP irp
        )
{
NTSTATUS status=STATUS_SUCCESS;
DbgPrint(" Close Routine n");
return status;
}

经过编译产生gedriver.sys文件,并复制到windows/system32/drivers下
然后在注册表里的HK_LOCAL_MACHINE/system/controlset/service下添加
gedriver子键,在子键下添加参数:Start=3 Type=1.

不知道为什么用CreateFile打开设备时,没有提示In Driver Entry Routine,
并提示错误码2。

最新喜欢:

sunmaculasunmac...
nosegay
驱动牛犊
驱动牛犊
  • 注册日期2003-12-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-03 11:33
这是全部代码吗?
huweiming268
驱动牛犊
驱动牛犊
  • 注册日期2003-12-13
  • 最后登录2004-07-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-03 11:42
不好意思,这是我在网吧现写的,忘记包含ntddk.h了。
不过这确实是全部的原代码
nosegay
驱动牛犊
驱动牛犊
  • 注册日期2003-12-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-03 13:48
哦,那我也不知道了,可能跟这句代码有关系吧
#pragma code_seg("INIT")
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
地下室#
发布于:2004-03-03 16:40
我的系统是xp,用winxpDDK编译。
不知道为什么总是提示错误码2.

程序如下:
/*-----------gedriver.h-------------*/
NTSTATUS
DriverEntry(IN PDRIVER_OBJECT driverObject,
            IN PUNICODE_STRING registryPath
           };
NTSTATUS
GdCreate(IN PDEVICE_OBJECT deviceObject,
         IN PIRP irp
        );
NTSTATUS
GdCreate(IN PDEVICE_OBJECT deviceObject,
         IN PIRP irp
        );
///////////////////////////////////////////////////////////////
/*------------gedriver.c--------------*/
#include "gedriver.h"
NTSTATUS
DriverEntry(IN PDRIVER_OBJECT driverObject,
            IN PUNICODE_STRING registryPath
           }
{
NTSTATUS status=STATUS_SUCCESS;
DbgPrint(" In Driver Entry Routine n");
driverObject->MajorFunction[IRP_MJ_CREATE]       =GdCreate;
        driverObject->MajorFunction[IRP_MJ_CLOSE]=GdClose;
DbgPrint(" Out Driver Entry Routine n");
return status;
}
NTSTATUS
GdCreate(IN PDEVICE_OBJECT deviceObject,
         IN PIRP irp
        )
{
NTSTATUS status=STATUS_SUCCESS;
DbgPrint(" Create Routine n");
return status;
}

NTSTATUS
GdCreate(IN PDEVICE_OBJECT deviceObject,
         IN PIRP irp
        )
{
NTSTATUS status=STATUS_SUCCESS;
DbgPrint(" Close Routine n");
return status;
}

经过编译产生gedriver.sys文件,并复制到windows/system32/drivers下
然后在注册表里的HK_LOCAL_MACHINE/system/controlset/service下添加
gedriver子键,在子键下添加参数:Start=3 Type=1.

不知道为什么用CreateFile打开设备时,没有提示In Driver Entry Routine,
并提示错误码2。



用CreateFile打开驱动之前,必须先加载驱动。否则,会返回错误2(错误的路径)。
加载驱动,使用:

OpenSCManager
CreateService
StartService

具体做法,查查MSDN。
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2004-03-03 20:38
经过编译产生gedriver.sys文件,并复制到windows/system32/drivers下
然后在注册表里的HK_LOCAL_MACHINE/system/controlset/service下添加
gedriver子键,在子键下添加参数:Start=3 Type=1.

net start gedriver.sys

在子键下添加参数:Start=2 Type=1
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部