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.
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 |