DMA_CHANNEL_ALLOCATE_HANDLER回调函数 (netdma.h)

注意 不支持 NetDMA 接口

在 Windows 8 及更高版本中。

 
ProviderAllocateDmaChannel 函数分配 DMA 通道。

语法

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 提供程序上下文区域的指针。 在调用 NetDMA 接口时,DMA 提供程序驱动程序将此句柄传递给 NetDMA 接口 NetDmaRegisterProvider 函数。

[in] ChannelParameters

指向 NET_DMA_CHANNEL_PARAMETERS 结构,用于定义 DMA 通道的配置参数。

[in] NetDmaChannelHandle

标识 DMA 通道的句柄。 提供程序驱动程序将此句柄传递给 NetDmaXxx 函数来标识 DMA 通道。

[out] pProviderChannelContext

指向指向 DMA 通道的 DMA 提供程序上下文区域的指针的值的指针。 DMA 提供程序驱动程序在从 ProviderAllocateDmaChannel返回之前分配此上下文区域。 NetDMA 将上下文区域指针传递给需要提供程序通道上下文的 ProviderXxx 函数。

返回值

ProviderAllocateDmaChannel 返回以下状态值之一:

返回代码 描述
STATUS_SUCCESS
作已成功完成。
STATUS_RESOURCES
作由于资源不足而失败。
STATUS_UNSUCCESSFUL
由于未指定的原因,作失败。

言论

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 提供程序驱动程序提供指向 pProviderChannelContextProviderAllocateDmaChannel参数处的驱动程序分配上下文信息的块的指针。 此上下文区域存储有关 DMA 通道的信息。 NetDMA 接口在后续调用中传递上下文信息,ProviderXxx 需要 DMA 通道上下文的函数。

当 NetDMA 接口调用 ProviderAllocateDmaChannel时,它会在 NetDmaChannelHandle 参数提供句柄。 DMA 提供程序驱动程序在后续调用中使用此句柄 NetDmaXxx 与 DMA 通道关联的函数。

NetDMA 接口调用 ProviderFreeDmaChannel 函数释放以前分配的 DMA 通道。

在 IRQL <= DISPATCH_LEVEL,netDMA 调用 ProviderAllocateDmaChannel

要求

要求 价值
最低支持的客户端 在 Windows Vista 中支持 NetDMA 1.0 驱动程序。
目标平台 窗户
标头 netdma.h (包括 Netdma.h)
IRQL <= DISPATCH_LEVEL

另请参阅

KeSetTargetProcessorDpc

NET_DMA_CHANNEL_PARAMETERS

NetDmaRegisterProvider

ProviderFreeDmaChannel