usbstor生成2个设备,一个是作为磁盘设备栈的pdo,接收到由disk.sys生成的fdo设备下发的srb(irpStack->Parameters.Scsi.Srb)。一个是作为usb设备栈的fdo,将其转化为USB请求(urb)。
这里解释下:
usbstor生成的fdo并没有收到urb的irp,而是usbstor直接在内部将srb转换成urb后发给了usb设备栈中fdo的下层,一般来说(没有过滤驱动的话)下层设备是usbhub生成的pdo,usbhub又把请求扔到usbuhci设备栈(我们经常提到的usb root hub)。usbuhci的pdo完成这个urb请求,随后内部生成一个irp通过fdo扔到PCI设备栈里面去了。