DMA_CHANNEL_ALLOCATE_HANDLER función de devolución de llamada (netdma.h)
en Windows 8 y versiones posteriores.
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 un 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 funciones de NetDmaXxx 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 ProviderXxx funciones que requieren un contexto de canal de proveedor.
Valor devuelto
ProviderAllocateDmaChannel devuelve uno de los siguientes valores de estado:
Código devuelto | Descripción |
---|---|
|
La operación se completó correctamente. |
|
Error en la operación debido a recursos insuficientes. |
|
Error en la operación por motivos no especificados. |
Observaciones
La interfaz NetDMA llama a la función ProviderAllocateDmaChannel de un controlador de 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 coincide con un bit especificado en el ProcessorAffinityMask miembro del NET_DMA_CHANNEL_PARAMETERS estructura en el parámetro ChannelParameters. Si no se admite MSI-X o MSI-X se admite, 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 a la interrupción DPC para el canal DMA a la interfaz NetDMA en el miembro cpuNumber de la estructura de 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 pProviderChannelContext parámetro de ProviderAllocateDmaChannel. Este área de contexto almacena información sobre el canal DMA. La interfaz NetDMA pasa la información de contexto en las llamadas posteriores a ProviderXxx funciones 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 NetDmafunciones xxx asociadas al canal DMA.
La interfaz NetDMA llama a la función providerFreeDmaChannel de para liberar un canal DMA asignado previamente.
NetDMA llama a ProviderAllocateDmaChannel en IRQL <= DISPATCH_LEVEL.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Compatible con controladores netDMA 1.0 en Windows Vista. |
de la plataforma de destino de | Windows |
encabezado de | netdma.h (incluya Netdma.h) |
irQL | <= DISPATCH_LEVEL |