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 提供程序上下文区域的指针。 在调用 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 返回以下状态值之一:
返回代码 | 描述 |
---|---|
|
作已成功完成。 |
|
作由于资源不足而失败。 |
|
由于未指定的原因,作失败。 |
言论
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 |