Compartir a través de


DMA_START_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 ProviderStartDma inicia una transferencia DMA en el canal DMA especificado.

Sintaxis

DMA_START_HANDLER DmaStartHandler;

NTSTATUS DmaStartHandler(
  [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

ProviderStartDma 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 una función ProviderStartDma del controlador del proveedor DMA para iniciar una transferencia DMA. La interfaz NetDMA puede llamar a ProviderStartDma en cualquier momento después de asignar un canal DMA. La interfaz NetDMA debe llamar a ProviderStartDma después de llamar a ProviderAbortDma, ProviderResetChannel o Función ProviderAllocateDmaChannel para un canal DMA.

El origen de la transferencia de DMA es una lista vinculada de descriptores DMA. El miembro NextDescriptor de la estructura NET_DMA_DESCRIPTOR en el parámetro DescriptorVirtualAddress contiene la dirección física de la siguiente estructura NET_DMA_DESCRIPTOR de la lista vinculada.

Nota En NetDMA 2.0 y versiones posteriores, la lista vinculada de descriptores no termina 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 del proveedor NetDMA 2.0 puede almacenar en caché la dirección en NextDescriptor y usar esta dirección como principio de la lista vinculada para la siguiente operación Append.
 
Para realizar la operación de inicio, el proveedor DMA debe omitir la lista de descriptores de DMA existente, si existe, después de completar cualquier procesamiento en el descriptor actual. El proveedor DMA debe omitir el miembro NextDescriptor en la estructura NET_DMA_DESCRIPTOR actual y cargar el descriptor que especifica ProviderStartDma .

Después de que ProviderStartDma inicie la transferencia DMA inicial, la interfaz NetDMA puede llamar a la función ProviderAppendDma para anexar datos adicionales a la transferencia.

NetDMA llama a ProviderStartDma en IRQL <= DISPATCH_LEVEL.

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con los controladores netDMA 2.0 en Windows Server 2008. Compatible con los 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 (incluir Netdma.h)
IRQL <= DISPATCH_LEVEL

Consulte también

NET_DMA_DESCRIPTOR

ProviderAbortDma

ProviderAllocateDmaChannel

ProviderAppendDma

ProviderResetChannel