GET_DMA_ADAPTER回调函数 (wdm.h)
GetDmaAdapter 例程返回目标设备的DMA_ADAPTER结构。
语法
GET_DMA_ADAPTER GetDmaAdapter;
_DMA_ADAPTER * GetDmaAdapter(
[in] PVOID Context,
[in] _DEVICE_DESCRIPTION *DeviceDescriptor,
[out] PULONG NumberOfMapRegisters
)
{...}
参数
[in] Context
指向特定于接口的上下文信息的指针。 调用方传递作为接口BUS_INTERFACE_STANDARD结构的Context 成员传递的值。
[in] DeviceDescriptor
指向描述物理设备属性 的DEVICE_DESCRIPTION 结构的指针。
[out] NumberOfMapRegisters
指向输出中驱动程序可为任何 DMA 传输操作分配的最大映射寄存器数的指针。 调用方必须分配 LONG 变量才能接收此数据。
返回值
成功时,GetDmaAdapter 例程返回指向DMA_ADAPTER结构的指针。 如果无法分配适配器结构,则例程返回 NULL。
注解
如果驱动程序在 IRQL = PASSIVE_LEVEL 执行,则应通过调用 IoGetDmaAdapter 函数获取设备的 DMA 适配器对象。 IoGetDmaAdapter 检测总线驱动程序是否支持 BUS_INTERFACE_STANDARD 接口;如果确实如此, IoGetDmaAdapter 会调用此接口的 GetDmaAdapter 成员指向的例程来获取适配器对象。 否则, IoGetDmaAdapter 调用等效的旧例程。
但是,如果驱动程序必须在 IRQL ≥ DISPATCH_LEVEL运行时获取适配器对象,则无法使用 IoGetDmaAdapter 函数获取适配器对象。 在这种情况下,驱动程序必须通过发出 IRP_MN_QUERY_INTERFACE 请求,在 IRQL = PASSIVE_LEVEL 时查询 BUS_INTERFACE_STANDARD 接口。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 桌面 |
标头 | wdm.h (包括 Ntddk.h、Wdm.h) |
IRQL | PASSIVE_LEVEL |