阅读:4755回复:15
请求斑竹帮助--急:关于Wim98 UMSS(USB Mass Storage Sample)
我下栽了微软的Wim98 UMSS(USB Mass Storage Sample),编译成功,
可以读写优盘。 读其源代码,发现没有读和写的DispatchIrp。只有ProcessSysControlIrp、ProcessPnPIrp、ProcessPowerIrp、 请问读和写的DispatchIrp在哪? 我是一名初学者,希望斑竹多加关照。谢谢! |
|
最新喜欢:![]() |
沙发#
发布于:2002-04-15 14:53
你应该看看里面的说明文档。
它有2个driver,那个pdr专门和io subsystem打交道,sys才是操作usb的。你所谓的读写,是想看哪部分呢? |
|
|
板凳#
发布于:2002-04-15 16:57
我看了微软的帮助。
How to support a USB mass-storage device on a Windows 98-based computer that is compliant with the Control-Bulk-Interrupt Transport defined by the USB Mass Storage Device Class. How to create a virtual child object in a WDM driver, and use it to load a separate driver. How to communicate between a VxD and a WDM driver. 两部分中的pdr应该是一个vxd,我不太了解vxd. 但是我想直接用sys部分,也就是wdm,应该可以读写usb. 比如我看了\\\\\\\"windows wdm 设备驱动程序开发指南\\\\\\\"中的wdm1程序, 这个程序就可以读写,函数为wdm1read和wdm1write。 盼望指教! |
|
地板#
发布于:2002-04-15 17:40
我也很想知道这些内容,希望斑竹和各位高手多多关照。。
|
|
地下室#
发布于:2002-04-15 18:36
extern \"C\"
NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) { NTSTATUS status = STATUS_SUCCESS; #if DBG DebugPrintInit(\"Vqc checked\"); #else DebugPrintInit(\"Vqc free\"); #endif DebugPrint(\"RegistryPath is %T\",RegistryPath); // Export other driver entry points... DriverObject->DriverExtension->AddDevice = VqcAddDevice; DriverObject->DriverStartIo = VqcStartIo; DriverObject->DriverUnload = VqcUnload; DriverObject->MajorFunction[IRP_MJ_CREATE] = VqcCreate; DriverObject->MajorFunction[IRP_MJ_CLOSE] = VqcClose; DriverObject->MajorFunction[IRP_MJ_PNP] = VqcPnp; DriverObject->MajorFunction[IRP_MJ_POWER] = VqcPower; DriverObject->MajorFunction[IRP_MJ_READ] = VqcRead; DriverObject->MajorFunction[IRP_MJ_WRITE] = VqcWrite; DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = VqcDeviceControl; DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = VqcSystemControl; DriverObject->MajorFunction[IRP_MJ_CLEANUP] = VqcDispatchCleanup; DebugPrintMsg(\"DriverEntry completed\"); return status; } VqcCreate 、VqcClose、 VqcDeviceControl,都是自己定义的函数名呀! |
|
|
5楼#
发布于:2002-04-15 18:45
DriverObject->MajorFunction[IRP_MJ_CREATE] = UMSS_DispatchIrp;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = UMSS_DispatchIrp; DriverObject->DriverUnload = UMSS_Unload; // User mode DeviceIoControl() calls will be routed here DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = UMSS_DispatchIrp; // User mode ReadFile()/WriteFile() calls will be routed here DriverObject->MajorFunction[IRP_MJ_WRITE] = UMSS_DispatchIrp; DriverObject->MajorFunction[IRP_MJ_READ] = UMSS_DispatchIrp; // routines for handling system PNP and power management requests DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = UMSS_DispatchIrp; DriverObject->MajorFunction[IRP_MJ_PNP] = UMSS_DispatchIrp; DriverObject->MajorFunction[IRP_MJ_POWER] = UMSS_DispatchIrp; f (DO_FDO == DeviceExtension->DeviceObjectType) { switch (IrpStack->MajorFunction) { case IRP_MJ_SYSTEM_CONTROL: ntStatus = UMSS_ProcessSysControlIrp(DeviceObject, Irp); break; case IRP_MJ_PNP: ntStatus = UMSS_ProcessPnPIrp(DeviceObject, Irp); break; case IRP_MJ_POWER: ntStatus = UMSS_ProcessPowerIrp(DeviceObject, Irp); break; } } else if (DO_PDO == DeviceExtension->DeviceObjectType) { switch (IrpStack->MajorFunction) { case IRP_MJ_PNP: ntStatus = UMSS_PdoProcessPnPIrp(DeviceObject, Irp); break; case IRP_MJ_POWER: ntStatus = UMSS_PdoProcessPowerIrp(DeviceObject, Irp); break; } Irp->IoStatus.Status = ntStatus; IoCompleteRequest(Irp, IO_NO_INCREMENT); } 你看了源程序了吗,你的代码在那里? |
|
6楼#
发布于:2002-04-15 19:03
USB Mass Storage driver for win98架构如下: file system | file system virtual device driver | USB class Driver | USB Mass storage Device 你需要实现file system virtual device driver和USB Driver。USB Driver没有什么特别的,它分成CBI和Bulk only两种。 |
|
|
7楼#
发布于:2002-04-15 19:23
file system
| file system virtual device driver | USB class Driver | USB class Driver file system virtual device driver 应该是win98的vxd. USB class Driver、USB class Driver 应该是wdm.找到vxd-->wdm 的入口点。 我想不用实现file system virtual device driver,而是找到对应 的在wdm中的read和write.至于file system virtual device driver 如何读写是vxd的事。也就是我们不需要更改pdr程序。 我的想法对吗,请指教! |
|
8楼#
发布于:2002-04-15 19:47
看来你还没有看懂这个Source code,你可以仔细的看一下你下载的Source code。它其实就是我说的这种结构,你可以直接在这个source code上面修改。
|
|
|
9楼#
发布于:2002-04-15 19:59
我看了,但是由于不太懂vxd.
我看到的是 读、写应该是UMSS_BULKTransfer. 由win32发出io请求,vxd获得,发出pfn....--->umss_startrequest --->umss_bulkonlystartIo--->umss_bulktransfer. 对吗?请指教! |
|
10楼#
发布于:2002-04-16 09:02
file system virtual device driver
这是个什么东东!我觉得应该是 win32(file system) | vxd | USB Mass storage Device | USB class Driver |
|
11楼#
发布于:2002-04-16 09:51
I think...
(VxD) IFS | (VxD) IOS | (VxD) IOS Port Driver (The PDR Sample.) | (WDM) USB Mass storage Driver (The SYS Sample.) | (WDM) USB Class Driver |
|
|
12楼#
发布于:2002-04-16 10:06
很同意上面的大虾的想法。
但是我对vxd 不了解,能否详细解释一下IFS(可安装的文件系统)和 IOS(window98 i/o subsystem manager),非常感谢! (VxD) IFS | (VxD) IOS 我认为vxd将over,不知道这种想法是否right. |
|
13楼#
发布于:2004-09-12 10:23
各位大哥,在那可以下到这个UMSS?给个地址阿啊,多谢了
|
|
|
14楼#
发布于:2004-09-12 10:28
找到了,原来就在驱动开发网里就有啊,呵呵
|
|
|
15楼#
发布于:2007-09-13 15:44
找找xp的UMSS
|
|