AtaPortGetUncachedExtension 例程分配 CPU 和设备共享的未缓存公共缓冲区。
语法
PVOID AtaPortGetUnCachedExtension(
[in] PVOID ChannelExtension,
[in] ULONG UncachedExtensionSize,
[in] ULONG IrbExtensionSize
);
参数
[in] ChannelExtension
指向通道扩展的指针。
[in] UncachedExtensionSize
指定未缓存公共缓冲区的长度(以字节为单位)。 如果微型端口驱动程序不需要未缓存的扩展,请将此参数设置为 0。
[in] IrbExtensionSize
指定微型端口驱动程序针对每个请求存储(如果有)所需的大小(以字节为单位)。
如果微型端口驱动程序不维护需要存储的每个 IRB 信息,请将此参数设置为 0。
返回值
AtaPortGetUncachedExtension 返回指向未缓存扩展的虚拟地址指针。 如果它无法分配请求的内存,或者以前分配的内存,则返回 NULL 。
言论
微型端口驱动程序可以将 IRB 扩展用作驱动程序确定的特定于请求的信息的存储,例如处理特定请求所需的数据。
端口驱动程序不会初始化 IRB 扩展,而是设置指向它发送到微型端口驱动程序的每个 IRB 中的扩展的指针。
HBA 硬件可以安全地访问 IRB 扩展。
微型端口驱动程序不得从除 IdeHwControl 例程以外的任何例程调用 AtaPortGetUncachedExtension,并且仅当它正在处理 StartChannel的控制作时。 从其他微型端口驱动程序例程调用 AtaPortGetUncachedExtension 会导致错误作甚至系统故障。 端口驱动程序使用 StopChannel 控制作调用 ideHwControl 后,会自动释放未缓存的扩展。
要求
| 要求 | 价值 |
|---|---|
| 目标平台 | 桌面 |
| 标头 | irb.h (包括 Ata.h、Irb.h) |
| 库 | Ataport.lib;Pciidex.lib |