ATA 端口驱动程序支持例程
本页对系统提供的 ATA 端口驱动程序提供的支持例程进行分类。
有关 ATA 驱动程序微型端口例程的列表,请参阅 ATA 微型端口驱动程序。
初始化例程
ATA 端口驱动程序提供以下初始化例程。
例程所返回的值 | 说明 |
---|---|
AtaPortInitializeEx | 初始化端口和微型端口驱动程序。 |
PCI 配置空间访问的例程
ATA 端口驱动程序提供以下例程来帮助你读取和修改设备的 PCI 配置空间的内容。
例程所返回的值 | 说明 |
---|---|
AtaPortGetBusData | 从设备的 PCI 配置空间中的指定位置检索数据。 |
AtaPortSetBusData | 将数据存储在指定设备的 PCI 配置空间中的指定偏移量。 |
用于处理 I/O 请求的例程
ATA 端口驱动程序提供以下 I/O 请求处理支持例程。
例程所返回的值 | 说明 |
---|---|
AtaPortGetScatterGatherList | 检索与此请求关联的散点/收集列表。 |
AtaPortGetPhysicalAddress | 将虚拟地址范围转换为物理地址范围。 |
AtaPortGetDeviceBase | 返回映射的逻辑基址,用于 (HBA) 与主机总线适配器通信。 |
AtaPortGetUncachedExtension | 分配 CPU 和设备共享的未缓存公共缓冲区。 |
AtaPortBuildRequestSenseIrb | 生成并返回操作代码的 IRB SCSIOP_REQUEST_SENSE。 |
AtaPortReleaseRequestSenseIrb | 释放使用 AtaPortBuildRequestSenseIrb 分配的请求感知 IRB。 |
AtaPortCompleteAllActiveRequests | 完成所指示设备的所有活动 IRB。 |
AtaPortCompleteRequest | 完成指示的 IRB。 |
回调例程
微型端口驱动程序使用多个例程从端口驱动程序请求回调。
例程所返回的值 | 说明 |
---|---|
AtaPortRequestWorkerRoutine | 请求辅助角色例程。 |
AtaPortRequestSynchronizedRoutine | 请求与中断服务例程同步 (ISR) 。 |
AtaPortControllerSyncRoutine | 提供对跨控制器上所有通道共享的数据结构的同步访问。 |
AtaPortRequestTimer | 请求计时器回调。 |
报告配置更改的例程
以下例程使微型端口驱动程序能够通知 ATA 端口驱动程序连接到通道的设备配置发生更改。
例程所返回的值 | 说明 |
---|---|
AtaPortBusChangeDetected | 通知端口驱动程序指示的通道上的设备配置更改。 |
AtaPortRequestPowerStateChange | 请求指示设备的电源状态转换。 |
用于控制请求队列的例程
端口驱动程序为每个逻辑单元号维护一个逻辑单元号 (LUN) 请求队列,并为每个通道维护一个请求队列。 微型端口驱动程序可以使用以下例程来暂停和恢复不同的请求队列。
例程所返回的值 | 说明 |
---|---|
AtaPortDeviceBusy | 通知端口驱动程序指示的设备正忙。 |
AtaPortDeviceReady | 通知端口驱动程序指示的设备已准备好接受新请求。 |
实用工具例程
以下例程是微型端口驱动程序的常规实用工具支持函数。
例程所返回的值 | 说明 |
---|---|
AtaPortCopyMemory | 将数据从一个位置复制到另一个位置。 |
**AtaPortMoveMemory 例程 | 将数据从一个位置复制到另一个位置。 |
AtaPortConvertUlongToPhysicalAddress | 将给定的 ULONG 地址转换为 IDE_PHYSICAL_ADDRESS 类型的值。 |
AtaPortConvertPhysicalAddressToUlong | 截断 ULONG IDE_PHYSICAL_ADDRESS 类型的地址。 |
AtaPortStallExecution | 微型端口驱动程序中停止。 |
AtaPortInitializeQueueTag | 初始化指定设备的队列标记列表。 |
AtaPortAllocateQueueTag | 返回指定设备的队列标记。 |
AtaPortReleaseQueueTag | 释放指定的队列标记。 |
调试和错误报告例程
以下例程可用于调试和错误报告。
例程所返回的值 | 说明 |
---|---|
AtaPortDebugPrint | 将消息字符串传递到内核调试器,以便调试器打印。 |
设备端口和注册访问的例程
ATA 端口驱动程序提供以下端口和注册访问支持例程。
例程所返回的值 | 说明 |
---|---|
AtaPortReadPortBufferUchar | 将给定数量的无符号字节值从 HBA 传输到缓冲区。 |
AtaPortReadPortBufferUlong | 将给定数量的 ULONG 值从 HBA 传输到缓冲区。 |
AtaPortReadPortBufferUshort | 将给定数量的 USHORT 值从 HBA 传输到缓冲区。 |
AtaPortReadPortUchar | 从 HBA 读取无符号字节值。 |
AtaPortReadPortUlong | 从 HBA 读取 ULONG 值。 |
AtaPortReadPortUshort | 从 HBA 读取 USHORT 值。 |
AtaPortReadRegisterBufferUchar | 将指定数量的无符号字节从 HBA 传输到缓冲区。 |
AtaPortReadRegisterBufferUlong | 将指定数目的 ULONG 从 HBA 传输到缓冲区。 |
AtaPortReadRegisterBufferUshort | 将指定数量的 USHORT 从 HBA 传输到缓冲区。 |
AtaPortReadRegisterUchar | 从 HBA 读取无符号字节值。 |
AtaPortReadRegisterUlong | 从 HBA 读取 ULONG 值。 |
AtaPortReadRegisterUshort | 从 HBA 读取 USHORT 值。 |
AtaPortWritePortBufferUchar | 将值写入指定的寄存器地址。 |
AtaPortWritePortBufferUlong | 将值写入指定的寄存器地址。 |
AtaPortWritePortBufferUshort | 将值写入指定的寄存器地址。 |
AtaPortWritePortUchar | 将无符号字节值传输到 HBA。 |
AtaPortWritePortUlong | 将 ULONG 值传输到 HBA。 |
AtaPortWritePortUshort | 将 USHORT 值传输到 HBA。 |
AtaPortWriteRegisterBufferUchar | 将指定数量的无符号字节从缓冲区传输到 HBA。 |
AtaPortWriteRegisterBufferUlong | 将指定数量的 ULONG 值从缓冲区传输到 HBA。 |
AtaPortWriteRegisterBufferUshort | 将指定数量的 USHORT 值从缓冲区传输到 HBA。 |
AtaPortWriteRegisterUchar | 将未签名的字节传输到 HBA 地址。 |
AtaPortWriteRegisterUlong | 将 ULONG 值传输到 HBA 地址。 |
AtaPortWriteRegisterUshort | 将 USHORT 值传输到 HBA 地址。 |
注册表访问的例程
实现通道接口的微型端口驱动程序可以调用以下例程来访问 Windows 注册表。 仅实现控制器接口例程的微型端口驱动程序无法访问这些例程。
例程所返回的值 | 说明 |
---|---|
AtaPortRegistryAllocateBuffer | 为注册表操作分配缓冲区。 |
AtaPortRegistryFreeBuffer | 释放使用 AtaPortRegistryAllocateBuffer 分配的注册表缓冲区。 |
AtaPortRegistryControllerKeyRead | 读取与注册表项 HKLM\CurrentControlSet\Services<\service name\ControllerN 下指示的值名称>关联的数据,其中 N 是控制器的编号。 |
AtaPortRegistryContrlollerKeyWrite | 将数据写入注册表项 HKLM\CurrentControlSet\Services<\service name\ControllerN 下的指示值名称>,其中 N 是控制器的编号。 |
AtaPortRegistryControllerKeyWriteDeferred | 将数据异步写入注册表项 HKLM\CurrentControlSet\Services<\service name\ControllerN 下的指示值名称>,其中 N 是控制器的编号。 |
AtaPortRegistryChannelSubKeyRead | 读取与注册表项 HKLM\CurrentControlSet\Services<\service name\ControllerN\ChannelM 下指示的值名称>关联的数据,其中 N 是控制器的编号,M 是通道的编号。 |
AtaPortRegistryChannelSubKeyWrite | 将数据写入注册表项 HKLM\CurrentControlSet\Services<\service name\ControllerN\ChannelM 下的指示值名称>,其中 N 是控制器的编号,M 是通道的编号。 |
AtaPortRegistryChannelSubKeyWriteDeferred | 将数据异步写入注册表项 HKLM\CurrentControlSet\Services<\service name\ControllerN\ChannelM 下的指示值名称>,其中 N 是控制器的编号,M 是通道的编号。 |