Partager via


VideoPortStartDma, fonction (video.h)

La fonction VideoPortStartDma prépare le système pour une opération DMA. Dès que la ressource appropriée est disponible, VideoPortStartDma crée une liste de nuages de points/collecte, initialise les ressources système et appelle le pilote miniport vidéo fourni HwVidExecuteDma routine pour effectuer l’opération DMA.

Syntaxe

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

Paramètres

[in] HwDeviceExtension

Pointeur vers l’extension de périphérique du pilote miniport.

[in] VpDmaAdapter

Pointeur vers la structure VP_DMA_ADAPTER qui représente l’adaptateur maître de bus. Cette structure est retournée à partir d’un appel à VideoPortGetDmaAdapter.

[in] Mdl

Pointeur vers le MDL qui décrit la mémoire tampon. Ce pointeur est retourné à partir d’un appel à la fonction VideoPortLockBuffer du pilote de port vidéo.

[in] Offset

Spécifie le décalage d’octet dans la mémoire tampon au début de l’opération DMA. Le paramètre mdl décrit cette mémoire tampon.

[in, out] pLength

Pointeur vers une variable qui spécifie la taille de transfert demandée, en octets, et qui recevra la taille réelle à transférer. La variable est mise à jour lorsque l’un des événements suivants se produit : VideoPortStartDma retourne ou HwVidExecuteDma est appelé. Il est donc sûr de lire cette variable à partir de HwVidExecuteDma même avant que VideoPortStartDma retourne.

[in] ExecuteDmaRoutine

Pointeur vers un pilote miniport fourni HwVidExecuteDma routine de rappel. VideoPortStartDma appelle cette routine pour programmer les registres matériels et démarrer l’opération DMA réelle.

[in] Context

Pointeur vers le contexte déterminé par le pilote à passer à la routine de rappel du pilote miniport HwVidExecuteDma routine de rappel. Étant donné que la routine de rappel HwVidExecuteDma s’exécute à DISPATCH_LEVEL, les données qui Contexte points doivent être en mémoire non page.

[in] WriteToDevice

Spécifie la direction du transfert DMA. Une valeur de TRUE désigne un transfert de la mémoire tampon vers l’appareil et une valeur de FALSE indique un transfert de l’appareil vers la mémoire tampon.

Valeur de retour

VideoPortStartDma retourne l’un des codes d’état suivants :

Retourner le code Description
NO_ERROR L’opération a été effectuée avec succès.
ERROR_NOT_ENOUGH_MEMORY Il n’y a pas suffisamment de ressources système pour cette opération.

Remarques

Pour préparer une opération de transfert DMA, VideoPortStartDma:

  • Vide la région de mémoire dans les caches du processeur hôte.
  • Génère une liste de nuages de points/regroupements.
  • Appelle le rappel HwVidExecuteDma du pilote miniport vidéo.
Il est possible que toutes les données demandées ne soient pas transférées, car la quantité réelle de mémoire transférée est limitée par le nombre de registres cartographiques disponibles pour le pilote. Les appelants de cette fonction doivent inspecter la taille de transfert réelle retournée à pLength pour déterminer si des données supplémentaires restent à transférer. Si c’est le cas, le pilote miniport doit appeler VideoPortStartDma (et par la suite, VideoPortCompleteDma) autant de fois que nécessaire pour répondre à l’intégralité de la demande de transfert.

Exigences

Exigence Valeur
client minimum pris en charge Disponible dans Windows XP et versions ultérieures des systèmes d’exploitation Windows.
plateforme cible Bureau
d’en-tête video.h (include Video.h)
bibliothèque Videoprt.lib
DLL Videoprt.sys
IRQL <=DISPATCH_LEVEL

Voir aussi

HwVidExecuteDma

VP_DMA_ADAPTER

VideoPortCompleteDma

VideoPortGetDmaAdapter