Compartir a través de


Función VideoPortStartDma (video.h)

La función VideoPortStartDma prepara el sistema para una operación DMA. Tan pronto como esté disponible el recurso adecuado, VideoPortStartDma crea una lista de dispersión y recopilación, inicializa los recursos del sistema y llama a la rutina HwVidExecuteDma proporcionada por el controlador de miniport de vídeo para llevar a cabo la operación DMA.

Sintaxis

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortStartDma(
  [in]      IN PVOID           HwDeviceExtension,
  [in]      IN PVP_DMA_ADAPTER VpDmaAdapter,
  [in]      IN PVOID           Mdl,
  [in]      IN ULONG           Offset,
  [in, out] IN OUT PULONG      pLength,
  [in]      IN PEXECUTE_DMA    ExecuteDmaRoutine,
  [in]      IN PVOID           Context,
  [in]      IN BOOLEAN         WriteToDevice
);

Parámetros

[in] HwDeviceExtension

Puntero a la extensión del dispositivo del controlador de minipuerto.

[in] VpDmaAdapter

Puntero a la estructura VP_DMA_ADAPTER que representa el adaptador de bus-master. Esta estructura se devuelve desde una llamada a VideoPortGetDmaAdapter.

[in] Mdl

Puntero al MDL que describe el búfer. Este puntero se devuelve desde una llamada a la función VideoPortLockBuffer del controlador de puerto de vídeo.

[in] Offset

Especifica el desplazamiento de bytes en el búfer en el que comienza la operación DMA. El parámetro Mdl describe este búfer.

[in, out] pLength

Puntero a una variable que especifica el tamaño de transferencia solicitado, en bytes, y que recibirá el tamaño real que se va a transferir. La variable se actualizará cuando se produzca cualquiera de los siguientes eventos: Se devuelve VideoPortStartDma o se llama a HwVidExecuteDma . Por lo tanto, es seguro leer esta variable desde HwVidExecuteDma incluso antes de que Se devuelva VideoPortStartDma .

[in] ExecuteDmaRoutine

Puntero a una rutina de devolución de llamada HwVidExecuteDma proporcionada por el controlador de miniporte. VideoPortStartDma llama a esta rutina para programar los registros de hardware e iniciar la operación DMA real.

[in] Context

Puntero al contexto determinado por el controlador que se va a pasar a la rutina de devolución de llamada HwVidExecuteDma del controlador de miniporte. Dado que la rutina de devolución de llamada HwVidExecuteDma se ejecuta en DISPATCH_LEVEL, los datos a los que apunta Context deben estar en memoria no paginada.

[in] WriteToDevice

Especifica la dirección de la transferencia DMA. Un valor de TRUE denota una transferencia desde el búfer al dispositivo y un valor de FALSE denota una transferencia desde el dispositivo al búfer.

Valor devuelto

VideoPortStartDma devuelve uno de los siguientes códigos de estado:

Código devuelto Descripción
NO_ERROR La operación se llevó a cabo correctamente.
ERROR_NOT_ENOUGH_MEMORY No hay suficientes recursos del sistema para esta operación.

Comentarios

Para prepararse para una operación de transferencia DMA, VideoPortStartDma:

  • Vacía la región de memoria en las memorias caché del procesador host.
  • Crea una lista de dispersión y recopilación.
  • Llama a la devolución de llamada HwVidExecuteDma del controlador de miniporto de vídeo.
Es posible que no todos los datos solicitados se hayan transferido, ya que la cantidad real de memoria transferida está limitada por el número de registros de mapa disponibles para el controlador. Los autores de llamadas de esta función deben inspeccionar el tamaño de transferencia real devuelto en pLength para determinar si se deben transferir datos adicionales. Si es así, el controlador de miniport debe llamar a VideoPortStartDma (y posteriormente VideoPortCompleteDma) tantas veces como sea necesario para cumplir toda la solicitud de transferencia.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows XP y versiones posteriores de los sistemas operativos Windows.
Plataforma de destino Escritorio
Encabezado video.h (incluya Video.h)
Library Videoprt.lib
Archivo DLL Videoprt.sys
IRQL <=DISPATCH_LEVEL

Consulte también

HwVidExecuteDma

VP_DMA_ADAPTER

VideoPortCompleteDma

VideoPortGetDmaAdapter