通过IOCTL_ATA_PASS_THROUGH访问ATA设备接口
控制代码功能:像ATA硬盘发送ATA指令。
IDE/ATA:接口,一个串行,一个并行,一般叫做IDE接口的硬盘和ATA接口的硬盘。
ATA指令:可以操作ATA硬盘的指令。
typedef struct _ATA_PASS_THROUGH_EX {
USHORT Length;
USHORT AtaFlags;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR ReservedAsUchar;
ULONG DataTransferLength;
ULONG TimeOutValue;
ULONG ReservedAsUlong;
ULONG_PTR DataBufferOffset;
UCHAR PreviousTaskFile[];
UCHAR CurrentTaskFile[];
} *PATA_PASS_THROUGH_EX, ATA_PASS_THROUGH_EX;
Length:指定ATA_PASS_THROUGH_EX结构的字节长度.
AtaFlags:指示数据传输的方向并指定要执行的操作类型。
| ATA_FLAGS_DRDY_REQUIRED | 在将命令发送到设备之前,请等待设备的DRDY状态。 |
| ATA_FLAGS_DATA_IN | 从设备读取数据。 |
| ATA_FLAGS_DATA_OUT | 将数据写入设备 |
| ATA_FLAGS_48BIT_COMMAND |
要发送的ATA命令使用48位逻辑块地址(LBA)功能集。设置此标志时, ATA_PASS_THROUGH_EX结构中的PreviousTaskFile成员的内容应该是有效的。 |
| ATA_FLAGS_USE_DMA | 将传输模式设置为DMA。 |
| ATA_FLAGS_NO_MULTIPLE | 只读单扇区。 |
PathId:表示请求的IDE端口或总线。该值由端口驱动程序设置
TargetId:表示总线上目标设备的整数。该值由端口驱动程序设置
Lun:表示设备的逻辑单元号。该值由端口驱动程序设置。
ReservedAsUchar:保留
DataTransferLength:指示数据缓冲区的大小(以字节为单位)。
TimeOutValue:端口驱动程序确定请求超时时间
ReservedAsUlong; //保留
DataBufferOffset; //指定从此结构开始到数据缓冲区的偏移量(以字节为单位)。
PreviousTaskFile[8]; //指定当前传递命令之前的任务文件输入寄存器的内容。未设置ATA_FLAGS_48BIT_COMMAND标志时不使用此成员。
CurrentTaskFile[8]; //SATA的register
| 偏移量 | 属性 |
| byte0 | Features register |
| byte1 | Sector count register |
| byte2 | Sector number register |
| byte3 | Cylinder low register |
| byte4 | Cylinder high register |
| byte5 | Device/head register |
| byte6 | Command register |
| byte7 | Reserved |
当ATA_PASS_THROUGH_EX成功返回后:CurrentTaskFile内容为output registers
| 偏移量 | 属性 |
| byte0 | Error register |
| byte0 | Sector count register |
| byte0 | Sector number register |
| byte0 | Cylinder low register |
| byte0 | Cylinder high register |
| byte0 | Device/head register |
| byte0 | Status register |
| byte0 | Reserved |
通过IOCTL_ATA_PASS_THROUGH访问ATA设备接口的更多相关文章
- Ionic2学习笔记(9):访问本地设备
作者:Grey 原文地址: http://www.cnblogs.com/greyzeng/p/5559927.html Ionic2提供了访问本地设备的方法,但是需要安装 ...
- Winform混合式开发框架访问Web API接口的处理
在我的混合式开发框架里面,集成了WebAPI的访问,这种访问方式不仅可以实现简便的数据交换,而且可以在多种平台上进行接入,如Winform程序.Web网站.移动端APP等多种接入方式,Web API的 ...
- win10添加打印机--无法访问指定设备,路径或文件。。
win10添加打印机无法访问指定设备,路径或文件..后来发现很多按钮点击多说无法访问指定设备,路径或文件.. 解决添加打印机问题: 在搜索栏中搜索:print (从这里添加) 彻底解决: 添加环境变量 ...
- ubuntu 下root用户无法访问声音设备的解决方案
原因:root用户没有对pulsaudio的访问权限,而且pulsaudio默认是不能在root下自动启动解决办法: 一.修改自动启动:编辑 gedit /etc/default/pulseaudio ...
- Java访问USB设备
最近在用Java访问RDing设备,使用的是Java HID API.使用过程中发现一个问题,由于是嵌入式小白,不知道如何向USB设备发送report.于是想到可以看看自带的软件如何访问USB的.找到 ...
- 基于Oracle OCI的数据访问C语言接口ORADBI .
基于Oracle OCI的数据访问C语言接口ORADBI cheungmine@gmail.com Mar. 22, 2008 ORADBI是我在Oracle OCI(Oracle 调用接口)基础 ...
- ionic访问odoo 11接口
在架设完毕odoo 11的网站之后,第一次面临手机app该如何访问后台网站的问题,是不是模式类似asp.net mvc 那样的模式,或者还存在其他的访问方法,带着这个疑问与困惑,开始的我的研究学习之路 ...
- vs2015使用Apache Cordova用JavaScript来访问本地设备的功能,比如摄像头、加速计
看到下面这张图就代表着我VS2015 跨平台Moblie开发工具安装成功了. 上周安装成功后本想一睹跨平台开发的乐趣,可是一直找不到合适的入口.这周又来捯饬一下结果发现了一个入口.于是来写一个Hell ...
- VREP中的力触觉设备接口(CHAI3D)
力反馈技术是一种新型的人机交互技术,它允许用户借助力反馈设备触碰.操纵计算机生成的虚拟环境中的物体,并感知物体的运动和相应的力反馈信息,实现人机力觉交互.虽然传统的鼠标.键盘.触摸屏等交互手段可以满足 ...
随机推荐
- springboot默认创建的bean是单实还是多例
转:https://blog.csdn.net/q1512451239/article/details/53122687 springboot默认创建的bean是单实还是多例 曾经面试的时候有面试官问 ...
- Power BI十大视觉效果,知多少?
Power BI十大视觉效果: 图表滑块 响应式布局 一键更改方差计算 一键排序 我们的最爱:小倍数! 瀑布图中的轴断裂 层次表(完全响应) HICHERT博士的IBCS®原生支持 分段图表 - 可视 ...
- Groovy实现代码热载的机制和原理
前言: 真的很久没在博客园上更新博客了, 现在趁这段空闲的时间, 对之前接触的一些工程知识做下总结. 先来讲下借用Groovy如何来实现代码的热载, 以及其中涉及到的原理和需要注意的点. 总的来说, ...
- 【leetcode】35-Search Insert Position
problem Search Insert Position 一种容易想到的是暴力破解法,一种是常用的二分法. 暴力破解法1(不推荐) class Solution { public: int sea ...
- CodeMirror tab转空格
解决CodeMirror编辑器Tab转空格问题 editor.setOption("extraKeys", { Tab: newTab }); function newTab(cm ...
- flask连接mysql数据库
from flask import Flask from flask_sqlalchemy import SQLAlchemy import pymysql pymysql.install_as_My ...
- parson json解析
最近交互数据中用到JSON数据,很多年以前用过CJSON解析和生成JSON数据,貌似CJSON已经发展成为了libjson,本打算用libjson库,不过其提供的解析JSON方式采用了回调,是测试过程 ...
- python函数完整语法和分类
函数初级 简介 # 函数是一系列代码的集合,用来完成某项特定的功能 优点 '''1. 避免代码的冗余2. 让程序代码结构更加清晰3. 让代码具有复用性,便于维护''' 函数四部分 '''1. 函数名: ...
- xdoj-1279(有趣的线段树--吉司机?!)
题目链接 一 核心: f(x)=91 (x<=100) f(x)=x-10 (x>100) 那么同一区间就可能不同的操作,那么该怎么解决呢? 我门直到同一区间的数据属于同一类别的时候再进行 ...
- POJ2689 Prime Distance(数论:素数筛选模板)
题目链接:传送门 题目: Prime Distance Time Limit: 1000MS Memory Limit: 65536K Total Submissions: Accepted: Des ...