社区
驱动开发/核心开发
帖子详情
U盘过滤驱动如何获取设备描述符?[
A33228371
2011-02-22 04:28:41
我想做一个U盘过滤驱动,驱动挂载在{4D36E967-E325-11CE-BFC1-08002BE10318}下,想在过滤驱动的例程里构造USB请求包获取设备描述符号,结果一直调不通,出现问题如下:
1、起初想在SCSI的读写里获取,通过LOG显示得知,系统会发若干读写请求,不知为什么?
2、在PNP的 start device过程里读取,也不可以。
3、与虚拟机环境是否有关系
谢谢!
...全文
255
3
打赏
收藏
U盘过滤驱动如何获取设备描述符?[
我想做一个U盘过滤驱动,驱动挂载在{4D36E967-E325-11CE-BFC1-08002BE10318}下,想在过滤驱动的例程里构造USB请求包获取设备描述符号,结果一直调不通,出现问题如下: 1、起初想在SCSI的读写里获取,通过LOG显示得知,系统会发若干读写请求,不知为什么? 2、在PNP的 start device过程里读取,也不可以。 3、与虚拟机环境是否有关系 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
A33228371
2011-02-22
打赏
举报
回复
此外加上这个KeInitializeEvent(&event, NotificationEvent, FALSE);
驱动不能正常加载!
A33228371
2011-02-22
打赏
举报
回复
我参考U盘驱动的代码,想构造一个URB,但是没有获取到设备描述符。
代码如下,大家给看看是什么错误
typedef struct tagDEVICE_EXTENSION {
PDEVICE_OBJECT DeviceObject; // device object this extension belongs to
PDEVICE_OBJECT LowerDeviceObject; // next lower driver in same stack
PDEVICE_OBJECT Pdo; // the PDO
IO_REMOVE_LOCK RemoveLock;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
NTSTATUS
ReadandSelectDescriptors( IN PDEVICE_OBJECT DeviceObject )
{
KdPrint(("ReadandSelectDescriptors begin\n"));
PURB urb;
ULONG siz;
NTSTATUS ntStatus;
PUSB_DEVICE_DESCRIPTOR deviceDescriptor;
urb = NULL;
deviceDescriptor = NULL;
//Read the device descriptor
urb = (PURB)ExAllocatePool(NonPagedPool, sizeof(struct _URB_CONTROL_DESCRIPTOR_REQUEST));
if(urb)
{
siz = sizeof(USB_DEVICE_DESCRIPTOR);
deviceDescriptor = (PUSB_DEVICE_DESCRIPTOR)ExAllocatePool(NonPagedPool, siz);
if(deviceDescriptor) //注意看一下
{
UsbBuildGetDescriptorRequest(
urb,
(USHORT) sizeof(struct _URB_CONTROL_DESCRIPTOR_REQUEST),
USB_DEVICE_DESCRIPTOR_TYPE,
0,
0,
deviceDescriptor,
NULL,
siz,
NULL);
ntStatus = CallUSBD(DeviceObject, urb);
if(NT_SUCCESS(ntStatus))
{
ASSERT(deviceDescriptor->bNumConfigurations);
//ntStatus = ConfigureDevice(DeviceObject);
KdPrint(("get deviceDescriptor success!"));
}
ExFreePool(urb);
ExFreePool(deviceDescriptor);
}
else
{
ExFreePool(urb);
ntStatus = STATUS_INSUFFICIENT_RESOURCES;
}
}
else
{
ntStatus = STATUS_INSUFFICIENT_RESOURCES;
}
return ntStatus;
}
NTSTATUS
CallUSBD(
IN PDEVICE_OBJECT DeviceObject,
IN PURB Urb
)
{
PIRP irp;
KEVENT event;
NTSTATUS ntStatus;
IO_STATUS_BLOCK ioStatus;
PIO_STACK_LOCATION nextStack;
PDEVICE_EXTENSION pdx;
irp = NULL;
pdx = (PDEVICE_EXTENSION)DeviceObject->DeviceExtension;
//KeInitializeEvent(&event, NotificationEvent, FALSE);
irp = IoBuildDeviceIoControlRequest(IOCTL_INTERNAL_USB_SUBMIT_URB,
pdx->LowerDeviceObject,
NULL,
0,
NULL,
0,
TRUE,
&event,
&ioStatus);
if(!irp)
{
KdPrint(("IoBuildDeviceIoControlRequest failed\n"));
return STATUS_INSUFFICIENT_RESOURCES;
}
nextStack = IoGetNextIrpStackLocation(irp);
ASSERT(nextStack != NULL);
nextStack->Parameters.Others.Argument1 = Urb;
// IoSetCompletionRoutine(irp, (PIO_COMPLETION_ROUTINE) GetDescriptorCompletionRoutine,
// (PVOID) pdx, TRUE, TRUE, TRUE);
ntStatus = IoCallDriver(pdx->LowerDeviceObject, irp);
if(ntStatus == STATUS_PENDING)
{
//KeWaitForSingleObject(&event, Executive, KernelMode, FALSE, NULL);
ntStatus = ioStatus.Status;
}
return ntStatus;
}
usblyzer抓取
U盘
读写过程的项目应用示例
用USBlyzer实时捕获
U盘
插拔、读写数据包,精准定位通信异常与协议错误;结合
设备
枚举、控制传输和批量传输日志,快速验证固件行为或
驱动
兼容性问题。USBlyzer作为核心分析工具,支撑嵌入式存储调试与USB协议逆向。
U盘
过滤
器设计与实现(限制电脑
U盘
使用的安全工具)
htmltable {th, td {th {pre {简介:”
U盘
过滤
器”是一款用于限制未经授权的USB存储
设备
接入电脑的安全软件,旨在防止因
U盘
滥用导致的数据泄露、病毒传播等风险。该软件通过
设备
识别、权限控制和日志记录等功能,实现对
U盘
的精细化管理,适用于企业信息安全防护和个人电脑安全防护。软件包含图形界面、图片资源和执行程序,操作简便,适合非专业用户使用。
【转帖】USB
过滤
驱动
,实现
U盘
只读控制
看到很多人都把自己的东西拿出来共享,我也来写一点。 功能: 这是一个简单的USB
过滤
驱动
,采用标准的WDM
过滤
,以DDK中的filter为原形。实现了
U盘
的只读控制。 说明: 1 在整个编写过程中,受到tiamo等众多高手的帮助,感激不尽。还要向他们多多学习。 2 这是我写的具有具体功能的第一个
驱动
,高兴。 3 本人是一位就读于排名在300名以外的大学的大四学生,水平有限,有错误的地方请各位指出
USB
过滤
驱动
,实现
U盘
只读控制
if (!document.phpAds_used) document.phpAds_used = ,; phpAds_random = new String (Math.random()); phpAds_random = phpAds_random.substring(2,11); documen
文件
过滤
驱动
和
设备
驱动
的区别
Windows
驱动
中有较为实用,接近物理层次的
驱动
设计,称为
设备
驱动
. 基于Windows操作系统上还有其他类型的
驱动
,比如文件系统
过滤
驱动
不属于WDM层次,虽然在编程思路上很相似. 文章只是做了简要的异同点总结,更多详细的总结可以下载PDF浏览。 一、文件
过滤
驱动
概念 在Windows
驱动
开发中,有一种
驱动
开发为“文件
过滤
驱动
”,为文件系统提供一种附加的
过滤
驱动
,也是WINDOW
驱动开发/核心开发
21,620
社区成员
21,709
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章