Compartilhar via


Função VideoPortStartDma (video.h)

A função VideoPortStartDma prepara o sistema para uma operação de DMA. Assim que o recurso apropriado estiver disponível, o VideoPortStartDma criará uma lista de dispersão/coleta, inicializará os recursos do sistema e chamará a rotina HwVidExecuteDma fornecida pelo miniporto de vídeo para realizar a operação de DMA.

Sintaxe

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

Ponteiro para a extensão de dispositivo do driver de miniport.

[in] VpDmaAdapter

Ponteiro para a estrutura VP_DMA_ADAPTER que representa o adaptador de master de barramento. Essa estrutura é retornada de uma chamada para VideoPortGetDmaAdapter.

[in] Mdl

Ponteiro para o MDL que descreve o buffer. Esse ponteiro é retornado de uma chamada para a função VideoPortLockBuffer do driver de porta de vídeo.

[in] Offset

Especifica o deslocamento de bytes no buffer no qual a operação DMA começa. O parâmetro Mdl descreve esse buffer.

[in, out] pLength

Ponteiro para uma variável que especifica o tamanho de transferência solicitado, em bytes, e que receberá o tamanho real a ser transferido. A variável será atualizada quando um dos seguintes eventos ocorrer: VideoPortStartDma retorna ou HwVidExecuteDma é chamado. Portanto, é seguro ler essa variável de dentro de HwVidExecuteDma mesmo antes de VideoPortStartDma retornar.

[in] ExecuteDmaRoutine

Ponteiro para uma rotina de retorno de chamada HwVidExecuteDma fornecida pelo miniport driver. VideoPortStartDma chama essa rotina para programar os registros de hardware e iniciar a operação de DMA real.

[in] Context

Ponteiro para o contexto determinado pelo driver a ser passado para a rotina de retorno de chamada HwVidExecuteDma do driver de miniport. Como a rotina de retorno de chamada HwVidExecuteDma é executada em DISPATCH_LEVEL, os dados para os quais Context aponta devem estar na memória nãopagada.

[in] WriteToDevice

Especifica a direção da transferência de DMA. Um valor true indica uma transferência do buffer para o dispositivo e um valor de FALSE indica uma transferência do dispositivo para o buffer.

Retornar valor

VideoPortStartDma retorna um dos seguintes códigos de status:

Código de retorno Descrição
NO_ERROR A operação foi realizada com êxito.
ERROR_NOT_ENOUGH_MEMORY Não há recursos de sistema suficientes para essa operação.

Comentários

Para se preparar para uma operação de transferência de DMA, VideoPortStartDma:

  • Libera a região de memória nos caches do processador host.
  • Cria uma lista de dispersão/coleta.
  • Chama o retorno de chamada HwVidExecuteDma do driver de miniport de vídeo.
É possível que nem todos os dados solicitados foram transferidos, pois a quantidade real de memória transferida é limitada pelo número de registros de mapa disponíveis para o driver. Os chamadores dessa função devem inspecionar o tamanho real da transferência retornado em pLength para determinar se os dados adicionais ainda devem ser transferidos. Nesse caso, o driver de miniporto deve chamar VideoPortStartDma (e, posteriormente, VideoPortCompleteDma) quantas vezes forem necessárias para atender a toda a solicitação de transferência.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows XP e versões posteriores dos sistemas operacionais Windows.
Plataforma de Destino Área de Trabalho
Cabeçalho video.h (inclua Video.h)
Biblioteca Videoprt.lib
DLL Videoprt.sys
IRQL <=DISPATCH_LEVEL

Confira também

HwVidExecuteDma

VP_DMA_ADAPTER

VideoPortCompleteDma

VideoPortGetDmaAdapter