Condividi tramite


Funzione VideoPortStartDma (video.h)

La funzione VideoPortStartDma prepara il sistema per un'operazione DMA. Non appena è disponibile la risorsa appropriata, VideoPortStartDma crea un elenco a dispersione/raccolta, inizializza le risorse di sistema e chiama il driver miniport video fornito HwVidExecuteDma routine per eseguire l'operazione DMA.

Sintassi

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
);

Parametri

[in] HwDeviceExtension

Puntatore all'estensione del dispositivo del driver miniport.

[in] VpDmaAdapter

Puntatore alla struttura VP_DMA_ADAPTER che rappresenta l'adattatore bus-master. Questa struttura viene restituita da una chiamata a VideoPortGetDmaAdapter.

[in] Mdl

Puntatore al MDL che descrive il buffer. Questo puntatore viene restituito da una chiamata alla funzione videoPortLockBuffer del driver della porta video.

[in] Offset

Specifica l'offset di byte nel buffer in corrispondenza del quale inizia l'operazione DMA. Il parametro Mdl descrive questo buffer.

[in, out] pLength

Puntatore a una variabile che specifica la dimensione del trasferimento richiesta, in byte, e che riceverà le dimensioni effettive da trasferire. La variabile verrà aggiornata quando si verifica uno degli eventi seguenti: VideoPortStartDma restituisce o viene chiamato il HwVidExecuteDma. È quindi possibile leggere questa variabile dall'interno di HwVidExecuteDma anche prima che venga restituita VideoPortStartD ma.

[in] ExecuteDmaRoutine

Puntatore a un driver miniport fornito HwVidExecuteDma routine di callback. VideoPortStartDma chiama questa routine per programmare i registri hardware e avviare l'operazione DMA effettiva.

[in] Context

Puntatore al contesto determinato dal driver da passare alla routine di callback del driver miniport HwVidExecuteD ma. Poiché la routine di callback HwVidExecuteDma viene eseguita in DISPATCH_LEVEL, i dati che Context puntano devono trovarsi in memoria non di paging.

[in] WriteToDevice

Specifica la direzione del trasferimento DMA. Un valore di TRUE indica un trasferimento dal buffer al dispositivo e un valore di FALSE indica un trasferimento dal dispositivo al buffer.

Valore restituito

VideoPortStartDma restituisce uno dei codici di stato seguenti:

Codice restituito Descrizione
NO_ERROR L'operazione è stata eseguita correttamente.
ERROR_NOT_ENOUGH_MEMORY Per questa operazione non sono disponibili risorse di sistema sufficienti.

Osservazioni

Per preparare un'operazione di trasferimento DMA, VideoPortStartDma:

  • Scarica l'area di memoria nelle cache del processore host.
  • Compila un elenco a dispersione/raccolta.
  • Chiama il driver miniport video HwVidExecuteDma callback.
È possibile che non tutti i dati richiesti siano stati trasferiti, poiché la quantità effettiva di memoria trasferita è limitata dal numero di registri mappa disponibili per il driver. I chiamanti di questa funzione devono esaminare le dimensioni effettive del trasferimento restituite in pLength per determinare se i dati aggiuntivi rimangono da trasferire. In tal caso, il driver miniport deve chiamare VideoPortStartDma (e successivamente, VideoPortCompleteDma) quante volte necessario per soddisfare l'intera richiesta di trasferimento.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile in Windows XP e versioni successive dei sistemi operativi Windows.
piattaforma di destinazione Desktop
intestazione video.h (includere Video.h)
libreria Videoprt.lib
dll Videoprt.sys
IRQL <=DISPATCH_LEVEL

Vedere anche

HwVidExecuteDma

VP_DMA_ADAPTER

VideoPortCompleteDma

VideoPortGetDmaAdapter