DeviceIoControl()返回数据含义

时间:2016-04-30 23:54:24

标签: winapi reverse-engineering createfile ollydbg

我已经推翻了课堂和课程中给出的示例性应用程序。我试图找出DeviceIoControl()&中Output Buffer函数返回的内容时遇到问题。因为DeviceIoControl()经常在调用CreateFile()之后使用,所以我必须讨论最后一个问题。 这些是该计划的步骤:

  1. 该计划会以C:访问权限打开READ|WRITE个驱动器。 READ|WRITE共享模式(CreateFile()功能)。
  2. 然后填写一个输入缓冲区(似乎是一个结构),我将在最后发布某些数据。
  3. 指定Input Buffer& Output Buffer尺寸。
  4. 最后使用控制代码DeviceIoControl()
  5. 调用4D004h

    通过查看Output Buffer中返回的数据,似乎所有关于硬盘驱动器信息如:制造商,型号名称等等

    这是返回的数据块: Data Returned

    保留供以后使用的最重要的字符串是:Z2P1S4PJ,我不知道这意味着什么!!

    其他补充剂:

    CreateFile

    ControlIODevice

    Input Buffer content

1 个答案:

答案 0 :(得分:0)

经过一些搜索, if 我们正在讨论winapi DeviceIoControl()函数的4D004,似乎lpInBuffer代码已定义如IOCTL_SCSI_PASS_THROUGH,所以它允许向SCSI设备发送一些命令。命令的详细信息应位于参数对nInBufferSize / {{1}}指向的缓冲区中。

在不知道设备的情况下很难确切地告诉命令,我不知道SCSI接口管理的细节。