DMA_CHANNEL_ALLOCATE_HANDLER回调函数 (netdma.h)
Windows 8 及更高版本中。
语法
DMA_CHANNEL_ALLOCATE_HANDLER DmaChannelAllocateHandler;
NTSTATUS DmaChannelAllocateHandler(
[in] PVOID ProviderContext,
[in] PNET_DMA_CHANNEL_PARAMETERS ChannelParameters,
[in] PVOID NetDmaChannelHandle,
[out] PVOID *pProviderChannelContext
)
{...}
参数
[in] ProviderContext
标识 DMA 提供程序的上下文区域的指针。 DMA 提供程序驱动程序在调用 中将此句柄传递给 NetDMA 接口 NetDmaRegisterProvider 函数。
[in] ChannelParameters
指向 NET_DMA_CHANNEL_PARAMETERS 结构,用于定义 DMA 通道的配置参数。
[in] NetDmaChannelHandle
标识 DMA 通道的句柄。 提供程序驱动程序将此句柄传递给 NetDmaXxx 函数,以标识 DMA 通道。
[out] pProviderChannelContext
指向值的指针,该值是指向 DMA 通道的 DMA 提供程序上下文区域的指针。 DMA 提供程序驱动程序在从 ProviderAllocateDmaChannel 返回之前分配此上下文区域。 NetDMA 将上下文区域指针传递给需要提供程序通道上下文的 ProviderXxx 函数。
返回值
ProviderAllocateDmaChannel 返回以下状态值之一:
返回代码 | 说明 |
---|---|
|
操作已成功完成。 |
|
由于资源不足,操作失败。 |
|
操作由于未指定的原因而失败。 |
注解
NetDMA 接口调用 DMA 提供程序驱动程序的 ProviderAllocateDmaChannel 函数来分配 DMA 通道。 NetDMA 接口在使用 DMA 通道之前调用 ProviderAllocateDmaChannel 。
DMA 提供程序驱动程序尝试分配具有中断 CPU 相关性的 DMA 通道,该关联与 在 的 ProcessorAffinityMask 成员中指定的位匹配ChannelParameters 参数处NET_DMA_CHANNEL_PARAMETERS结构。 如果不支持 MSI-X 或 MSI-X 受支持,但具有匹配中断 CPU 相关性的 DMA 通道不可用,则 DMA 提供程序驱动程序会分配任何可用的 DMA 通道,并调用 KeSetTargetProcessorDpc 例程来设置中断 DPC 的目标 CPU 以匹配指定的关联掩码位之一。
DMA 提供程序始终将它与 DMA 通道中断 DPC 关联的 CPU 编号返回到 NET_DMA_CHANNEL_PARAMETERS 结构的 CpuNumber 成员中的 NetDMA 接口。
DMA 提供程序驱动程序提供指向 ProviderAllocateDmaChannel 的 pProviderChannelContext 参数上驱动程序分配的上下文信息块的指针。 此上下文区域存储有关 DMA 通道的信息。 NetDMA 接口在后续调用中将上下文信息传递给需要 DMA 通道上下文的 ProviderXxx 函数。
当 NetDMA 接口调用 ProviderAllocateDmaChannel 时,它在 NetDmaChannelHandle 参数处提供句柄。 DMA 提供程序驱动程序在后续调用与 DMA 通道关联的 NetDmaXxx 函数时使用此句柄。
NetDMA 接口调用 ProviderFreeDmaChannel 函数来释放以前分配的 DMA 通道。
NetDMA 在 IRQL <= DISPATCH_LEVEL 调用 ProviderAllocateDmaChannel。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 支持 Windows Vista 中的 NetDMA 1.0 驱动程序。 |
目标平台 | Windows |
标头 | netdma.h (包括 Netdma.h) |
IRQL | <= DISPATCH_LEVEL |