- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
让我们勾勒一下图片。
Windows提供了SCSI端口(总线)驱动程序。驱动程序为总线创建FDO
(FILE_DEVICE_BUS_EXTENDER
),并为每个连接到总线的设备创建PDO
(FILE_DEVICE_MASS_STORAGE
)。我们将大容量存储设备“连接”到PnP请求处理程序内的总线设备。
Windows还提供了类驱动程序(针对每个设备类),该类驱动程序位于端口驱动程序之上。它为每个子设备在FDO
的顶部加上PDO
形成设备堆栈。
类驱动程序将内部ioctl发送到端口驱动程序;主要功能代码为IRP_MJ_SCSI
,次要功能代码为IRP_MN_SCSI_CLASS
,SCSI_REQUEST_BLOCK
结构填充有特定于请求的信息。
端口驱动程序处理与设备的通信(将数据从SRB移至设备/将数据从设备移至SRB)并完成请求。
现在想象我们要模拟scsi设备。我们需要开发“虚拟SCSI端口(总线)”驱动程序。该驱动程序将为总线创建FDO
(FILE_DEVICE_BUS_EXTENDER
),并为我们将创建的每个设备创建PDO
(FILE_DEVICE_MASS_STORAGE
)。我们将处理内部ioctl,执行irp队列管理,将数据移入或移出SRB等。
我想了解必须满足什么“条件”才能使Windows“认为” SCSI设备是真实的(以便它会出现在资源管理器等内部)。创 build 备后,类驱动程序会自动发送内部ioctl还是需要模拟这些请求?
我的问题可能很愚蠢,但我需要掌握最新情况以了解更多信息。谢谢您的帮助。
最佳答案
这样看来很简单。IRP_MN_QUERY_DEVICE_RELATIONS
请求(发送到bus FDO
)处理程序将子PDO
连接到bus FDO
。IRP_MN_QUERY_ID
请求(发送给子PDO
)处理程序报告设备标识符,包括设备类型。参见https://docs.microsoft.com/en-us/windows-hardware/drivers/install/identifiers-for-scsi-devices
现在,Windows可以选择适当的类驱动程序以将其放在顶部。所以堆栈看起来像这样:
{User App}
[File System Driver]
[Class Driver]
[Bus Driver]
{Physical/Virtual Device}
IOCTL_SCSI_PASS_THROUGH
和
IOCTL_SCSI_PASS_THROUGH_DIRECT
控制代码文档;很明显,我们可以绕过类驱动程序。
关于windows - 如何模拟SCSI设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45016769/
我正在寻找特定于供应商的 SCSI 命令的引用。我主要关心以下几点: 0xD4 0xD5 0xD8 据我所知,这些命令是一些“特殊”的读取命令,用在某些 Plextor 驱动器上。但是,我无法在任何地
windows 是否有特定的接口(interface),我可以通过它发送特定的 scsi 命令,如查询到 scsi 设备?我在网上搜索,找到了对 SCSI Pass Through 接口(interf
我尝试发出 scsi read(10)和 write(10)到 SSD。我用 this example code作为引用/基本代码。 这是我的 scsi 读取: #define READ_REPLY_
我想知道将错误代码映射到字符串的最佳方法是什么,例如在 SCSI 协议(protocol)中,错误总是以数字形式返回。像这样: 00h GOOD 02h CHECK CONDITION 04h CON
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
有两个服务器:导出 5TB 磁盘的 Openfiler(v. 2.99) 和通过 iscsi 协议(protocol)使用该磁盘的 Proxmox(v. 3.4)。 使用此磁盘时,我在/var/log
我一直在使用 scsi 命令,我可以发送一些基本命令,例如不同的查询等。 我一直在使用这个示例来生成我的查询。我正在努力使这个示例能够使用不同的 scsi 命令。 http://www.tldp.or
我用了libaums访问我的自定义 USB 的私有(private)分区。现在我想知道如何读取 USB 的隐藏区域。为了访问隐藏区域,我知道 USB 隐藏地址的扇区范围,以及用于读取和写入隐藏区域的供
我有一个程序,其中未安装或以任何其他方式使用的驱动器需要降速。 我注意到在我关闭文件描述符后驱动器会自动加速。 我还没有找到任何信息,这是为什么,有什么办法可以禁用它吗? 这里有一个小程序可以自己测试
给定一个 SCSI 设备作为输入,我正在尝试实现一个内核模块,它可以: 获取发送到该特定设备的 SCSI 命令列表并计算该命令的发出次数。 我该如何实现? 我是内核模块编程的初学者,事实上我到目前为止
如何在 linux & c 上获取 SCSI 设备的供应商名称? 最佳答案 如果您知道设备/总线 ID,您可以阅读/sys 文件,同时检查 lsscsi . -> cat /sys/bus/scs
我正在尝试编写一个程序来阻止使用 SCSI 2 保留的 LUN。 在 SCSI 2 预留中,LUN 可以由具有不同路径的同一主机预留,还是 I-T-L 联结只有一条路径。 例如:假设主机尝试从同一目标
我在 Mac 上,正在尝试导入虚拟机镜像(.ova 文件)。我尝试在 VM 上导入文件并收到以下错误。 找不到名为“SCSI Controller ”的存储 Controller 任何已经存在的针对此
SCSI 是标准电子接口(interface),允许个人计算机与磁盘驱动器、磁带驱动器等外围硬件进行通信。 外围组件互连(PCI),顾名思义,是一种描述如何以结构化和受控方式将系统的外围组件连接在一起
SCSI 是标准的电子接口(interface),允许个人计算机与外围硬件(如磁盘驱动器、磁带驱动器等)进行通信。 外围组件互连 (PCI),顾名思义,是一种标准,描述了如何以结构化和受控的方式将系统
我正在使用 C/C++ 在 Windows 中进行开发,我想知道是否有可能获得适当的 \\.\SCSI设备名称 \\.\PhysicalDrive ?.. 例如,很高兴知道如何获得 \\.\Physi
我有一个应用程序可以同时执行 SCSI READ10 和 WRITE10 操作。当他们到达我的代码的较低级别时,他们调用 write(),然后调用/dev/sgXX 上的 read()。不过,我在接收
我是 SCSI CDB 编程的新手。我有一些使用 6byte CDB 为写命令编写的代码 ccb = (Exec_IO_CCB *)(buffer + header_size); ccb->ccb
我已经阅读了phison的源代码(关于badusb,python文件)。但我无法理解程序向 SCSI 设备发送什么命令。在阅读了有关 SCSI 命令的内容后,我仍然找不到以“06h”开头的操作码(存在
我正在使用 Linux LIO 包为后台存储创建环回设备。我正在使用“targetcli”实用程序来发出站点中提到的以下命令 - http://linux-iscsi.org/wiki/Loopbac
我是一名优秀的程序员,十分优秀!