Méthode IWiaDataTransfer ::idtGetBandedData (wia_xp.h)

La méthode IWiaDataTransfer ::idtGetBandedData transfère une bande de données d’un appareil matériel vers une application. Pour plus d’efficacité, les applications récupèrent des données à partir d’appareils matériels d’acquisition d’images Windows (WIA) dans des bandes successives.

Syntaxe

HRESULT idtGetBandedData(
  [in] PWIA_DATA_TRANSFER_INFO pWiaDataTransInfo,
  [in] IWiaDataCallback        *pIWiaDataCallback
);

Paramètres

[in] pWiaDataTransInfo

Type : PWIA_DATA_TRANSFER_INFO

Pointeur vers la structure WIA_DATA_TRANSFER_INFO .

[in] pIWiaDataCallback

Type : IWiaDataCallback*

Pointeur vers l’interface IWiaDataCallback . Régulièrement, cette méthode appelle la méthode BandedDataCallback pour fournir à l’application un transfert de données status notification.

Valeur retournée

Type : HRESULT

Cette méthode peut retourner l’une des valeurs suivantes :

Valeur renvoyée Signification
E_INVALIDARG Un ou plusieurs paramètres de cette méthode contiennent des données non valides.
E_OUTOFMEMORY Cette méthode ne peut pas allouer suffisamment de mémoire pour terminer son opération.
E_UNEXPECTED Une erreur inconnue s'est produite.
S_FALSE L’application a annulé l’opération.
S_OK L’image a été acquise avec succès.
STG_E_MEDIUMFULL Le support de stockage utilisé par l’application pour acquérir l’image est plein.
WIA_S_NO_DEVICE_AVAILABLE Aucun périphérique matériel WIA n’est attaché à l’ordinateur de l’utilisateur.
 

Cette méthode retourne une valeur spécifiée dans Codes d’erreur, ou une erreur COM standard si elle échoue pour une raison autre que celles spécifiées dans le tableau précédent.

Remarques

La méthode IWiaDataTransfer ::idtGetBandedData alloue une section de mémoire pour transférer des données sans nécessiter de copie de données supplémentaire via la couche de marshaling COM/RPC (Component Object Model/Remote Procedure Call). Cette section mémoire est partagée entre l’application et l’arborescence des éléments de l’appareil matériel.

Si vous le souhaitez, l’application peut passer un pointeur vers un bloc de mémoire que IWiaDataTransfer ::idtGetBandedData utilisera comme section partagée. L’application transmet ce handle en stockant le pointeur dans le membre ulSection de la structure WIA_DATA_TRANSFER_INFO avant d’appeler IWiaDataTransfer ::idtGetBandedData.

Les applications peuvent améliorer les performances à l’aide de la double mise en mémoire tampon. Pour ce faire, les applications doivent définir le membre bDoubleBuffer de la structure WIA_DATA_TRANSFER_INFO sur TRUE. La méthode IWiaDataTransfer ::idtGetBandedData divise la mémoire tampon de données en deux. Lorsqu’une moitié de la mémoire tampon est saturée, IWiaDataTransfer ::idtGetBandedData envoie une notification à l’application à l’aide du pointeur IWiaDataCallback transmis via le paramètre pIWiaDataCallback . Pendant que l’application récupère les données de la moitié complète de la mémoire tampon, le pilote de périphérique peut remplir l’autre moitié avec des données.

Le format du transfert de données est déterminé par les valeurs des propriétés WIA_IPA_FORMAT et WIA_IPA_TYMED de l’élément. L’application définit ces propriétés avec des appels à la méthode IWiaPropertyStorage ::WriteMultiple .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel, Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête wia_xp.h (incluez Wia.h)
Bibliothèque Wiaguid.lib
DLL Wiaservc.dll