问题描述:
我是用minifilter 框架实现的文件过滤驱动 ,在挂在卷时 IRP_MJ_VOLUME_MOUNT 回调例程中(同filter 在IRP_MJ_VOLUME_MOUNT 绑定卷设备同理) 想获取U盘的物理序列号 PID VID ..
我通过自定义的 IRP 发送到设备 查询U盘()的信息 获取到STORAGE_DEVICE_DESCRIPTOR 结构变量 再从中获取所需求的
U盘信息。
但是: 每次 SerialNumberOffset 都为0 就是说没有。但是我在R3层也对这个U盘获取信息 可以获取到PID VID 物理序列号
问题大概这样 各位大侠有没看懂的 可以留言
谢了 各位...
大致代码如下:
PDEVICE_OBJECT ObjectDevice;
PSTORAGE_DEVICE_DESCRIPTOR Descriptor;
PSTORAGE_PROPERTY_QUERY pQuery;
UCHAR pBuffer[2048];
KEVENT WaitEvent;
IO_STATUS_BLOCK IoStatus;
PIRP NewIrp;
if(KeGetCurrentIrql()>PASSIVE_LEVEL)
{
DbgPrint("The irql of InstanceSetup not passive_level!\n");
return STATUS_FLT_DO_NOT_ATTACH;
}
DbgPrint("InstanceSetup is OK!\n");
status =FltGetDiskDeviceObject (FltObjects->Volume,&ObjectDevice);
KdPrint(("%d\n",ObjectDevice->DeviceType));
pQuery = (PSTORAGE_PROPERTY_QUERY)ExAllocatePool(NonPagedPool, sizeof(STORAGE_DEVICE_DESCRIPTOR))
pQuery->PropertyId = StorageDeviceProperty;
pQuery->QueryType = PropertyStandardQuery;
KeInitializeEvent(&WaitEvent, NotificationEvent, FALSE);
NewIrp = IoBuildDeviceIoControlRequest(
IOCTL_STORAGE_QUERY_PROPERTY,
ObjectDevice,
(PVOID)pQuery,
sizeof(STORAGE_DEVICE_DESCRIPTOR),
(PVOID)pBuffer,
2048,
FALSE,
&WaitEvent,
&IoStatus);
if (NULL == NewIrp)
{
DbgPrint("IoBuildDeviceIoControlRequest is error!\n");
KdPrint(("status : %x\n",status));
return STATUS_SUCCESS;
}
status = IoCallDriver(ObjectDevice, NewIrp);
if (status == STATUS_PENDING)
{
status = KeWaitForSingleObject(&WaitEvent, Executive, KernelMode, FALSE, NULL);
status = IoStatus.Status;
}
if (!NT_SUCCESS(status))
{
DbgPrint("IoCallDriver is error!\n");
KdPrint(("status : %x\n",status));
return STATUS_SUCCESS;
}
Descriptor = (PSTORAGE_DEVICE_DESCRIPTOR)&pBuffer;
7 个解决方案
#1
各位大侠
请踊跃发言 不管怎样都有分..
或者 大家有更好的建议
R3层获取 U盘信息我也做成DLL
但是我想在R0层获取 U盘信息
望大家 踊跃留言
分不够我再加 ...
谢谢
请踊跃发言 不管怎样都有分..
或者 大家有更好的建议
R3层获取 U盘信息我也做成DLL
但是我想在R0层获取 U盘信息
望大家 踊跃留言
分不够我再加 ...
谢谢
#2
这个发到看雪吧,这里搞这个不专业!
#3
还有debugman,要注册的话,给我发消息!
:)
:)
#4
这个 你得等列宁同志,他是这方面专家,我友情顶贴的。话说你自己构建IRP也够牛的了,那个数据结构可不是一般的长。。。
#5
++
#6
....
看雪发帖 理会的人更少...
我给列宁同志留言了 不过没回呢
他是不是好久不上线了..
看雪发帖 理会的人更少...
我给列宁同志留言了 不过没回呢
他是不是好久不上线了..
#7
debugman上44
#1
各位大侠
请踊跃发言 不管怎样都有分..
或者 大家有更好的建议
R3层获取 U盘信息我也做成DLL
但是我想在R0层获取 U盘信息
望大家 踊跃留言
分不够我再加 ...
谢谢
请踊跃发言 不管怎样都有分..
或者 大家有更好的建议
R3层获取 U盘信息我也做成DLL
但是我想在R0层获取 U盘信息
望大家 踊跃留言
分不够我再加 ...
谢谢
#2
这个发到看雪吧,这里搞这个不专业!
#3
还有debugman,要注册的话,给我发消息!
:)
:)
#4
这个 你得等列宁同志,他是这方面专家,我友情顶贴的。话说你自己构建IRP也够牛的了,那个数据结构可不是一般的长。。。
#5
++
#6
....
看雪发帖 理会的人更少...
我给列宁同志留言了 不过没回呢
他是不是好久不上线了..
看雪发帖 理会的人更少...
我给列宁同志留言了 不过没回呢
他是不是好久不上线了..
#7
debugman上44