x_j_ting
驱动牛犊
驱动牛犊
  • 注册日期2003-03-30
  • 最后登录2005-06-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1279回复:6

如果没人回答,我就跳楼了!!!

楼主#
更多 发布于:2003-04-26 08:30
我在passthru.c 里添加了如下东西:
 Status = IoCreateDevice (DriverObject,  //driver object
                             0, //DeviceExtensionSize
                             &DeviceName,//前面定一切初始化了
                             FILE_DEVICE_UNKNOWN,//DeviceType
                             0, //DeviceCharacteristics
                             FALSE, //Exclusive
                             &DeviceObject); //DeviceObject
ASSERT(Status == NDIS_STATUS_SUCCESS);
Status = IoCreateSymbolicLink( &SymbolicName/%前面定一切初始化了*/, &DeviceName );
ASSERT(Status == NDIS_STATUS_SUCCESS);
boolSymbolic=TRUE;
DeviceObject->Flags |= DO_BUFFERED_IO;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL]  = DeviceIoControl;
DriverObject->DriverUnload =DriverUnload;

NTSTATUS
DeviceIoControl(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp
    )
{
PIO_STACK_LOCATION  irpSp;
ULONG               functionCode;
irpSp = IoGetCurrentIrpStackLocation(Irp);
functionCode=irpSp->Parameters.DeviceIoControl.IoControlCode;
if(functionCode==IO_TEST)
{
DBGPRINT(\"==> IOControling..........<==\\n\");
return 1;
}
return 1;
}
VOID
DriverUnload(
    IN PDRIVER_OBJECT DriverObject
    )
{}
在passthru.h中添加了如下东西:
/*――――――――――――――――――――――――――――――――――――――
自定义设备名
*/
#define DEVICE_NAME L\"\\\\Device\\\\NByte\"
#define SYMBOLIC_NAME L\"\\\\DosDevices\\\\NByte\"
/*――――――――――――――――――――――――――――――――――――――
自定义I/O控制函数
*/

VOID
DriverUnload(
    IN PDRIVER_OBJECT DriverObject
    );

NTSTATUS
DeviceIoControl(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp
    );
我想用过应用程序和驱动程序通讯于是在应用程序里调用如下:

HANDLE hFile;
 hFile=CreateFile(TEXT(\"\\\\\\\\.\\\\NByte\"),
                         GENERIC_WRITE | GENERIC_READ,
                         0,
                         NULL,
                         OPEN_EXISTING,
                         FILE_FLAG_OVERLAPPED,
                         0
                         );
    if(hFile == INVALID_HANDLE_VALUE) {
        return FALSE;
    }
结果一执行就自动重起,我的系统都快被折腾死了,我也会被折腾死了,请救救我吧!!谢谢!!!
xiaoiunknown
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2004-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-04-26 12:27
兄弟:耐心点

你看看上面的贴子,照你这样说我都跳楼N次了.

我们互相轻松一下,别介意!!!
gx_kyw
驱动牛犊
驱动牛犊
  • 注册日期2003-01-23
  • 最后登录2011-04-13
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-04-26 18:25
你在什么地方出错??
x_j_ting
驱动牛犊
驱动牛犊
  • 注册日期2003-03-30
  • 最后登录2005-06-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-04-26 20:17
我一执行到CreateFile(.....)那儿就重起,快帮帮忙吧,
我都快愁死了。
谢谢
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-04-28 09:45
这里是要注册一个设备,不是驱动,所以你用DriverObject是不行的
PDEVICE_OBJECT
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-04-28 10:32
参考一下ddk里边的packet例子。
它就是在driverentry里边IoCreateDevice一个设备。
你的
    DriverObject->MajorFunction[IRP_MJ_CREATE] = xxx;
    DriverObject->MajorFunction[IRP_MJ_CLOSE]  = xxx;
。。。

这些设置了吗?

win32 app call \"CreateFile\" will notify IO manager to call DriverObject->MajorFunction[IRP_MJ_CREATE]

[编辑 -  4/28/03 by  acidfish]
dana_wx
驱动牛犊
驱动牛犊
  • 注册日期2002-11-08
  • 最后登录2003-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-04-28 11:42
mikeluo: 不好意思 我请教一个问题 别打我 哦
到下面这个帖子去看看好么?
新手求救。自己创建的事件为何没有相应呢?
游客

返回顶部