代码:
/*
Buffer : 存放读取数据的缓冲区.
Length : 需要读取的长度.(单位?)
*/
NTSTATUS TyReadSectorZero(PDEVICE_OBJECT DeviceObject, PVOID Buffer,ULONG Length)
{
KEVENT event;
NTSTATUS ntstatus = STATUS_SUCCESS;
//初始化事件
KeInitializeEvent(&event, NotificationEvent, FALSE);
//取得中断级别,判断是否可用IoBuildSynchronousFsdRequest
if(KeGetCurrentIrql() <= APC_LEVEL)
{
PIRP pReadIrp;
LARGE_INTEGER lioffset = {0};
IO_STATUS_BLOCK ioblock = {0};
//调用IoBuildSynchronousFsdRequest构造IRP包,返回值即为指向IRP的指针.
pReadIrp = IoBuildSynchronousFsdRequest(IRP_MJ_READ, DeviceObject, Buffer, Length, &lioffset, &event, &ioblock);
//构造IRP包失败
if(0 == pReadIrp)
{
KdPrint(("IoBuildSynchronousFsdRequest fail! \n"));
goto _end;
}
//发送IRP
ntstatus = IoCallDriver(DeviceObject, pReadIrp);
//等待事件
if(STATUS_PENDING == ntstatus)
{
KeWaitForSingleObject(&event, Executive, KernelMode, FALSE, 0);
}
if(ioblock.Information == 0)
{
KdPrint(("ioblock.Information == 0 \n"));
goto _end;
}
KdPrint(("ioblock.Information == 0x%x \n", ioblock.Information));
//函数返回
}
_end:
return ntstatus;
}
不知问题出在哪里?请高手指点
20 个解决方案
#1
ding
#2
友情up
#3
谢谢!
#4
看不出问题,可能是读的时机不对,,,
你是在哪判断是u盘的?
你是在哪判断是u盘的?
#5
我不需要判断U盘,直接挂usb过滤驱动,在注册表里。
我也不知道哪里不对,可是就是读不出来啊,怎么回事呢?
我也不知道哪里不对,可是就是读不出来啊,怎么回事呢?
#6
12r1r1r1r121r
#7
dnfhbrthrerhre
#8
seghergwervwebger
#9
关注中……
#10
帮顶。。
#11
谢谢
#12
帮顶
#13
帮顶
#14
IoCallDriver返回值是什么?
但我怀疑在Start_PNP时,是不能对接受READ请求的
但我怀疑在Start_PNP时,是不能对接受READ请求的
#15
只能在Read中处理。
LZ是哪里人?
LZ是哪里人?
#16
see see
#17
好久了阿,怎么没大侠解答?不知道楼主解决了没?
#18
通过别的方式解决了,但是没有主动构造irp读好。
而且现在有问题,插入u盘的时候,电脑有时会重启的。不知什么原因。
而且现在有问题,插入u盘的时候,电脑有时会重启的。不知什么原因。
#19
关注
#20
USB设备的数据读写和控制是基于URB的吧!!!???另外你的过滤驱动是挂在哪里的阿?
#21
#1
ding
#2
友情up
#3
谢谢!
#4
看不出问题,可能是读的时机不对,,,
你是在哪判断是u盘的?
你是在哪判断是u盘的?
#5
我不需要判断U盘,直接挂usb过滤驱动,在注册表里。
我也不知道哪里不对,可是就是读不出来啊,怎么回事呢?
我也不知道哪里不对,可是就是读不出来啊,怎么回事呢?
#6
12r1r1r1r121r
#7
dnfhbrthrerhre
#8
seghergwervwebger
#9
关注中……
#10
帮顶。。
#11
谢谢
#12
帮顶
#13
帮顶
#14
IoCallDriver返回值是什么?
但我怀疑在Start_PNP时,是不能对接受READ请求的
但我怀疑在Start_PNP时,是不能对接受READ请求的
#15
只能在Read中处理。
LZ是哪里人?
LZ是哪里人?
#16
see see
#17
好久了阿,怎么没大侠解答?不知道楼主解决了没?
#18
通过别的方式解决了,但是没有主动构造irp读好。
而且现在有问题,插入u盘的时候,电脑有时会重启的。不知什么原因。
而且现在有问题,插入u盘的时候,电脑有时会重启的。不知什么原因。
#19
关注
#20
USB设备的数据读写和控制是基于URB的吧!!!???另外你的过滤驱动是挂在哪里的阿?