社区
驱动开发/核心开发
帖子详情
U盘过滤驱动如何获取设备描述符?[
A33228371
2011-02-22 04:28:41
我想做一个U盘过滤驱动,驱动挂载在{4D36E967-E325-11CE-BFC1-08002BE10318}下,想在过滤驱动的例程里构造USB请求包获取设备描述符号,结果一直调不通,出现问题如下:
1、起初想在SCSI的读写里获取,通过LOG显示得知,系统会发若干读写请求,不知为什么?
2、在PNP的 start device过程里读取,也不可以。
3、与虚拟机环境是否有关系
谢谢!
...全文
242
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盘
固件调试中的实战应用,重点剖析USB
设备
枚举阶段四大关键URB(复位、
描述符
获取
、地址设置、MSF请求)、BOT协议下CBW/CSW状态契约一致性验证,以及如何结合UART日志实现跨层时间对齐调试。强调USBlyzer作为Windows内核级WDM
过滤
驱动
,提供真实URB结构、SCSI语义还原及可追溯行为链的能力,显著提升USB存储类
设备
问题定位效率。
U盘
过滤
器设计与实现(限制电脑
U盘
使用的安全工具)
本文详细介绍
U盘
过滤
器的设计与实现,涵盖
设备
识别、白名单权限控制、数据泄露防护、病毒防控及日志审计等功能。通过注册表、组策略和
驱动
层拦截等技术手段,实现对
U盘
的精准管控。同时结合ELK日志分析平台,构建完善的审计体系。
【转帖】USB
过滤
驱动
,实现
U盘
只读控制
本文介绍了一个简单的USB
过滤
驱动
的开发过程,该
驱动
通过修改DDK中的toaster/filter程序实现
U盘
的只读控制。文章详细阐述了如何拦截SCSI命令以阻止写操作,并通过设置modeData->DeviceSpecificParameter|=MODE_DSP_WRITE_PROTECT实现更稳定的只读功能。
USB
过滤
驱动
,实现
U盘
只读控制
本文介绍了一个基于WDM的USB
过滤
驱动
程序,通过修改DDK中的示例代码实现
U盘
的只读控制功能。该
驱动
能拦截特定SCSI命令,并通过修改
设备
参数实现
U盘
写保护。
文件
过滤
驱动
和
设备
驱动
的区别
本文探讨了Windows系统中的文件
过滤
驱动
和
设备
驱动
的区别与联系。文件
过滤
驱动
是文件系统的一部分,用于
过滤
I/O操作,常见于防毒软件等应用。与
设备
驱动
相比,它们在请求格式、功能上有相似之处,如都处理IRP,但文件
过滤
驱动
不涉及电源管理,不是WDM
驱动
,不直接控制硬件,且创建不同类型的
设备
对象。
驱动开发/核心开发
21,620
社区成员
21,709
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章