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 结构的 上下文 成员传递的值。
[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 请求来查询 BUS_INTERFACE_STANDARD 接口,同时仍位于 IRQL = PASSIVE_LEVEL。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 桌面 |
标头 | wdm.h(包括 Ntddk.h、Wdm.h) |
IRQL | PASSIVE_LEVEL |