Partager via


VideoPortStartDma, fonction (video.h)

La fonction VideoPortStartDma prépare le système à une opération DMA. Dès que la ressource appropriée est disponible, VideoPortStartDma crée une liste de points/regroupements, initialise les ressources système et appelle la routine HwVidExecuteDma fournie par le pilote de miniport vidéo 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 master bus. Cette structure est retournée à partir d’un appel à VideoPortGetDmaAdapter.

[in] Mdl

Pointeur vers la 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’octets dans la mémoire tampon à laquelle l’opération DMA commence. 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 avant même que VideoPortStartDma ne retourne.

[in] ExecuteDmaRoutine

Pointeur vers une routine de rappel HwVidExecuteDma fournie par le pilote miniport. 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 HwVidExecuteDma du pilote miniport. Étant donné que la routine de rappel HwVidExecuteDma s’exécute à DISPATCH_LEVEL, les données vers laquelle pointe Context doivent être en mémoire non pagée.

[in] WriteToDevice

Spécifie la direction du transfert DMA. La valeur TRUE indique un transfert de la mémoire tampon vers l’appareil, et la valeur FALSE indique un transfert de l’appareil vers la mémoire tampon.

Valeur retournée

VideoPortStartDma retourne l’un des codes status suivants :

Code de retour Description
NO_ERROR L’opération a été effectuée avec succès.
ERROR_NOT_ENOUGH_MEMORY Les ressources système sont insuffisantes 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 points/regroupements.
  • Appelle le rappel HwVidExecuteDma du pilote miniport vidéo.
Il est possible que toutes les données demandées n’ont pas été 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 doivent encore être transférées. Dans ce 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.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows XP et versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Desktop (Expérience utilisateur)
En-tête video.h (incluez Video.h)
Bibliothèque Videoprt.lib
DLL Videoprt.sys
IRQL <=DISPATCH_LEVEL

Voir aussi

HwVidExecuteDma

VP_DMA_ADAPTER

VideoPortCompleteDma

VideoPortGetDmaAdapter