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

Nota La interfaz NetDMA no se admite en Windows 8 y versiones posteriores.

La función ProviderAppendDma anexa una lista vinculada de descriptores DMA al último descriptor de un canal DMA.

Sintaxis

DMA_APPEND_HANDLER DmaAppendHandler;

NTSTATUS DmaAppendHandler(
  [in] PVOID ProviderChannelContext,
  [in] PNET_DMA_DESCRIPTOR DescriptorVirtualAddress,
  [in] PHYSICAL_ADDRESS DescriptorPhysicalAddress,
  [in] ULONG DescriptorCount
)
{...}

Parámetros

[in] ProviderChannelContext

Puntero que identifica el área de contexto de un canal DMA. El proveedor DMA devolvió este identificador a NetDMA en la ubicación especificada en el parámetro pProviderChannelContext del Función ProviderAllocateDmaChannel .

[in] DescriptorVirtualAddress

Puntero a la dirección virtual de la primera estructura NET_DMA_DESCRIPTOR en una lista vinculada de descriptores DMA. La dirección física correspondiente se especifica en el parámetro DescriptorPhysicalAddress .

[in] DescriptorPhysicalAddress

Puntero a la dirección física del primer descriptor DMA en una lista vinculada de descriptores DMA. La dirección virtual correspondiente se especifica en el parámetro DescriptorVirtualAddress .

[in] DescriptorCount

Número de descriptores DMA en DescriptorVirtualAddress .

Nota Los controladores del proveedor netDMA anteriores a la versión 2.0 de NetDMA pueden omitir el parámetro DescriptorCount . Para NetDMA 2.0 y versiones posteriores, este parámetro es el recuento de descriptores en la operación DMA.
 

Valor devuelto

ProviderAppendDma devuelve uno de los siguientes valores de estado:

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

Comentarios

La interfaz NetDMA llama a una función ProviderAppendDma del controlador DMA para anexar una lista vinculada de descriptores DMA después del último descriptor en un canal DMA. La interfaz netDMA puede llamar a ProviderAppendDma cualquier número de veces después de iniciar una transferencia DMA. Sin embargo, la interfaz NetDMA debe llamar a la función ProviderStartDma después de un restablecimiento o anulación del canal, o después de asignar el canal DMA por primera vez.

Nota En NetDMA 2.0 y versiones posteriores, la lista vinculada de descriptores no está terminada en NULL. El miembro NextDescriptor del último descriptor de la lista vinculada especifica la dirección física de la estructura NET_DMA_DESCRIPTOR que se usará en la llamada posterior a la función ProviderAppendDma . Un controlador de proveedor netDMA 2.0 puede almacenar en caché la dirección en NextDescriptor y usar esta dirección como el principio de la lista vinculada para la siguiente operación Append.
 
La interfaz NetDMA establece el miembro NextDescriptor del último descriptor al principio de la nueva cadena de descriptores antes de llamar a ProviderAppendDma.

Si el descriptor actual de una transferencia activa es el último descriptor, el motor DMA debe volver a leer el último descriptor. El miembro NextDescriptor de la última estructura de NET_DMA_DESCRIPTOR debe tener una nueva dirección y el motor DMA debe continuar con el descriptor siguiente. Si el descriptor actual no es el último descriptor, el motor DMA puede continuar procesando descriptores DMA sin tareas adicionales.

NetDMA llama a ProviderAppendDma en IRQL <= DISPATCH_LEVEL.

Requisitos

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

Consulte también

NET_DMA_DESCRIPTOR

ProviderAllocateDmaChannel

ProviderStartDma