DMA_CHANNEL_ALLOCATE_HANDLER función de devolución de llamada (netdma.h)

Nota No se admite la interfaz NetDMA

en Windows 8 y versiones posteriores.

 
La función ProviderAllocateDmaChannel asigna un canal DMA.

Sintaxis

DMA_CHANNEL_ALLOCATE_HANDLER DmaChannelAllocateHandler;

NTSTATUS DmaChannelAllocateHandler(
  [in]  PVOID ProviderContext,
  [in]  PNET_DMA_CHANNEL_PARAMETERS ChannelParameters,
  [in]  PVOID NetDmaChannelHandle,
  [out] PVOID *pProviderChannelContext
)
{...}

Parámetros

[in] ProviderContext

Puntero que identifica el área de contexto de un proveedor DMA. El controlador del proveedor DMA pasa este identificador a la interfaz NetDMA en una llamada a . Función NetDmaRegisterProvider .

[in] ChannelParameters

Puntero a NET_DMA_CHANNEL_PARAMETERS estructura que define los parámetros de configuración para el canal DMA.

[in] NetDmaChannelHandle

Identificador que identifica el canal DMA. Los controladores de proveedor pasan este identificador a las funciones NetDma Xxx para identificar el canal DMA.

[out] pProviderChannelContext

Puntero a un valor que es un puntero al área de contexto de un proveedor DMA para el canal DMA. El controlador del proveedor DMA asigna este área de contexto antes de volver de ProviderAllocateDmaChannel. NetDMA pasa el puntero del área de contexto a las funciones ProviderXxx que requieren un contexto de canal de proveedor.

Valor devuelto

ProviderAllocateDmaChannel devuelve uno de los siguientes valores de estado:

Código devuelto Descripción
STATUS_SUCCESS
La operación se ha completado correctamente.
STATUS_RESOURCES
Error en la operación debido a recursos insuficientes.
STATUS_UNSUCCESSFUL
Error en la operación por motivos no especificados.

Comentarios

La interfaz NetDMA llama a la función ProviderAllocateDmaChannel del controlador del proveedor DMA para asignar un canal DMA. La interfaz NetDMA llama a ProviderAllocateDmaChannel antes de usar un canal DMA.

El controlador del proveedor DMA intenta asignar un canal DMA con una afinidad de CPU de interrupción que coincida con un bit especificado en el miembro ProcessorAffinityMask del NET_DMA_CHANNEL_PARAMETERS estructura en el parámetro ChannelParameters . Si no se admite MSI-X o MSI-X es compatible, pero no hay disponible un canal DMA con una afinidad de CPU de interrupción coincidente, el controlador del proveedor DMA asigna cualquier canal DMA disponible y llama a la rutina KeSetTargetProcessorDpc para establecer la CPU de destino de la interrupción DPC para que coincida con uno de los bits de máscara de afinidad especificados.

El proveedor DMA siempre devuelve el número de CPU asociado al DPC de interrupción del canal DMA a la interfaz NetDMA en el miembro CpuNumber de la estructura NET_DMA_CHANNEL_PARAMETERS.

El controlador del proveedor DMA proporciona un puntero a un bloque de información de contexto asignada por el controlador en el parámetro pProviderChannelContext de ProviderAllocateDmaChannel. Este área de contexto almacena información sobre el canal DMA. La interfaz NetDMA pasa la información de contexto en llamadas posteriores a funciones ProviderXxx que requieren un contexto de canal DMA.

Cuando la interfaz NetDMA llama a ProviderAllocateDmaChannel, proporciona un identificador en el parámetro NetDmaChannelHandle . El controlador del proveedor DMA usa este identificador en llamadas posteriores a funciones NetDmaXxx asociadas al canal DMA.

La interfaz NetDMA llama a la función ProviderFreeDmaChannel para liberar un canal DMA asignado previamente.

NetDMA llama a ProviderAllocateDmaChannel en IRQL <= DISPATCH_LEVEL.

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con controladores netDMA 1.0 en Windows Vista.
Plataforma de destino Windows
Encabezado netdma.h (incluir Netdma.h)
IRQL <= DISPATCH_LEVEL

Consulte también

KeSetTargetProcessorDpc

NET_DMA_CHANNEL_PARAMETERS

NetDmaRegisterProvider

ProviderFreeDmaChannel