structure MINIDRV_TRANSFER_CONTEXT (wiamindr_lh.h)
La structure MINIDRV_TRANSFER_CONTEXT est utilisée pour stocker l’image et d’autres informations nécessaires pour un transfert de données de rappel de mémoire ou un transfert de données de fichier.
Syntaxe
typedef struct _MINIDRV_TRANSFER_CONTEXT {
LONG lSize;
LONG lWidthInPixels;
LONG lLines;
LONG lDepth;
LONG lXRes;
LONG lYRes;
LONG lCompression;
GUID guidFormatID;
LONG tymed;
LONG_PTR hFile;
LONG cbOffset;
LONG lBufferSize;
LONG lActiveBuffer;
LONG lNumBuffers;
BYTE *pBaseBuffer;
BYTE *pTransferBuffer;
BOOL bTransferDataCB;
BOOL bClassDrvAllocBuf;
LONG_PTR lClientAddress;
IWiaMiniDrvCallBack *pIWiaMiniDrvCallBack;
LONG lImageSize;
LONG lHeaderSize;
LONG lItemSize;
LONG cbWidthInBytes;
LONG lPage;
LONG lCurIfdOffset;
LONG lPrevIfdOffset;
} MINIDRV_TRANSFER_CONTEXT, *PMINIDRV_TRANSFER_CONTEXT;
Membres
lSize
Spécifie la taille en octets de cette structure MINIDRV_TRANSFER_CONTEXT.
lWidthInPixels
Spécifie la largeur en pixels de l’image actuelle. La valeur de ce membre est dérivée de la WIA_IPA_PIXELS_PER_LINE propriété d’élément commune.
lLines
Spécifie le nombre total de lignes (le nombre de lignes horizontales de pixels) dans l’image actuelle. La valeur de ce membre est dérivée du WIA_IPA_NUMBER_OF_LINES propriété d’élément commun.
lDepth
Spécifie la valeur de profondeur de couleur de l’image actuelle en bits par pixel. La valeur de ce membre est dérivée du WIA_IPA_DEPTH propriété d’élément commun.
lXRes
Spécifie la résolution horizontale actuelle de l’image en pixels par pouce. La valeur de ce membre est dérivée de la propriété d’élément du scanneur WIA_IPS_XRES.
lYRes
Spécifie la résolution verticale actuelle de l’image en pixels par pouce. La valeur de ce membre est dérivée de la propriété d’élément du scanneur WIA_IPS_YRES .
lCompression
Spécifie le type de compression utilisé par l’appareil. La valeur de ce membre est dérivée de la WIA_IPA_COMPRESSION propriété d’élément commune.
guidFormatID
Spécifie un GUID qui indique le format de données de l’appareil. La valeur de ce membre est dérivée du WIA_IPA_FORMAT propriété d’élément commun.
tymed
Spécifie le type de transfert de données. Le transfert de données spécifié peut être un transfert de rappel de mémoire (TYMED_CALLBACK ou TYMED_MULTIPAGE_CALLBACK) ou un transfert de fichiers (TYMED_FILE ou TYMED_MULTIPAGE_FILE). La valeur de ce membre est dérivée de la WIA_IPA_TYMED propriété d’élément commune.
Ce membre transmet des informations relatives à cela dans le membre bTransferDataCB . Pour plus d’informations, consultez Remarques .
hFile
Spécifie le handle du fichier ouvert utilisé lors des transferts de fichiers. Le minidriver ne doit pas utiliser ce membre. Pour plus d’informations, consultez Remarques .
cbOffset
Spécifie le décalage actuel en octets de l’emplacement de mémoire tampon suivant utilisé pendant ce transfert.
lBufferSize
Spécifie la taille totale de la mémoire tampon de transfert.
lActiveBuffer
Spécifie la mémoire tampon utilisée pour le transfert actuel. La valeur de ce membre doit être comprise entre 1 et lNumBuffers.
lNumBuffers
Spécifie le nombre de mémoires tampons disponibles pour le transfert de données. Cette valeur peut actuellement être 1 ou 2.
pBaseBuffer
Pointe vers le début de la mémoire tampon de transfert de base.
pTransferBuffer
Pointe vers le début de la mémoire tampon de transfert actuelle. Pour un transfert de rappel dans lequel une double mise en mémoire tampon est utilisée, ce membre alterne entre les deux mémoires tampons, pointant vers le début de la première mémoire tampon, puis vers le début de la seconde, et ainsi de suite.
bTransferDataCB
Spécifie si un transfert de données est un transfert de rappel de mémoire ou un transfert de fichiers. Ce membre a la valeur TRUE si le transfert est un transfert de rappel de mémoire et FALSE si le transfert est un transfert de fichiers. Pour les transferts de fichiers, le service WIA fournit généralement une routine de rappel, qui permet à l’application de recevoir des mises à jour du minidriver sur la status du transfert de fichiers. (Le service WIA fournit une routine de rappel si l’application fournit sa propre routine de rappel. Pour plus d’informations, consultez Interface COM IWiaMiniDrvCallback.) Pour les transferts de fichiers, un minidriver doit case activée la valeur stockée dans le membre pIWiaMiniDrvCallBack. Si ce membre a la valeur NULL, le service WIA ne fournit pas de routine de rappel. Le pilote ne doit donc pas tenter de l’appeler. Pour les transferts de rappel de mémoire, le service WIA fournit toujours un rappel.
Ce membre transmet des informations relatives à cela dans le membre lié . Pour plus d’informations, consultez Remarques .
bClassDrvAllocBuf
Spécifie si le service WIA a alloué la mémoire tampon de transfert. Cette valeur est TRUE si le service WIA a alloué la mémoire tampon et FALSE si ce n’est pas le cas. Dans ce cas, il incombe au minidriver d’allouer la mémoire tampon de transfert.
lClientAddress
Spécifie l’adresse, dans l’espace d’adressage du client, du transfert. Le minidriver ne doit pas modifier cette valeur.
pIWiaMiniDrvCallBack
Pointe vers une interface IWiaMiniDrvCallBack utilisée pour le transfert de données ou de status rappel.
lImageSize
Spécifie la taille, en octets, des bits non compressés dans une seule page.
lHeaderSize
Spécifie la taille, en octets, des données d’en-tête d’image dans une seule page.
lItemSize
Spécifie la taille, en octets, des bits et de l’en-tête. Cette valeur peut être égale à zéro si la taille de l’élément est inconnue avant l’acquisition.
cbWidthInBytes
Spécifie la taille, en octets, d’une ligne d’image.
lPage
Spécifie le numéro de page de la page active lors de l’analyse d’une image TIFF multipage. La numérotation des pages commence par zéro.
lCurIfdOffset
Spécifie le décalage du répertoire de fichiers image (IFD) dans la page active d’une image TIFF multipage.
lPrevIfdOffset
Spécifie le décalage du répertoire de fichiers image (IFD) dans la page précédente d’une image TIFF multipage.
Remarques
Le service WIA définit la plupart des membres de cette structure avant d’appeler la méthode IWiaMiniDrv ::d rvAcquireItemData du minidriver. Si le minidriver appelle wiasGetImageInformation, cette fonction remplit les membres restants du MINIDRV_TRANSFER_CONTEXT passé.
Étant donné que le service WIA utilise actuellement uniquement les constantes TYMED_FILE et TYMED_CALLBACK, les membres tymed et bTransferDataCB stockent essentiellement les mêmes informations. Pour les transferts de fichiers, lorsque bTransferDataCB a la valeur FALSE, tymed est défini sur TYMED_FILE ou TYMED_MULTIPAGE_FILE. Pour les transferts de rappel de mémoire, lorsque bTransferDataCB a la valeur TRUE, tymed est défini sur TYMED_CALLBACK ou TYMED_MULTIPAGE_CALLBACK.
Le membre hFile est réservé à l’utilisation uniquement par le service WIA. Au lieu d’utiliser ce membre pour les transferts de fichiers, le minidriver doit écrire les données dans une mémoire tampon, puis appeler wiasWritePageBufToFile pour terminer le transfert de fichiers.
Le minidriver obtient des valeurs à partir de propriétés d’élément commun ou de scanneur spécifiques pour définir les membres indiqués dans le tableau suivant :
Membre | Défini par |
---|---|
lWidthInPixels | WIA_IPA_PIXELS_PER_LINE |
lLines | WIA_IPA_NUMBER_OF_LINES |
lDepth | WIA_IPA_DEPTH |
lXRes | WIA_IPS_XRES |
lYRes | WIA_IPS_YRES |
lCompression | WIA_IPA_COMPRESSION |
guidFormatID | WIA_IPA_FORMAT |
tymed | WIA_IPA_TYMED |
En règle générale, le minidriver définit les membres de structure précédents directement à partir des valeurs des propriétés d’élément. Une application ou le minidriver aura défini les propriétés de l’élément précédemment. Le service WIA remplit son contexte de service à l’aide des valeurs de propriété. Le pilote peut utiliser les valeurs stockées dans ce contexte à des fins de référence rapide.
Le service WIA définit les membres de structure suivants :
hFile
bTransferDataCB
bClassDrvAllocBuf
Le minidriver ou la fonction de bibliothèque de service wiasGetImageInformation définit les membres de structure suivants :
lImageSize
lHeaderSize
lItemSize
cbWidthInBytes
Les membres suivants de cette structure sont utilisés dans les rappels de transfert de données. Le service WIA ou le minidriver définit ces membres. Dans plusieurs cas, la valeur stockée dans bClassDrvAllocBuf détermine si le service WIA ou le minidriver définit le membre.
Membre | Défini par |
---|---|
cbOffset | Minidriver |
lBufferSize | Service WIA ou minidriver. Si bClassDrvAllocBuf a la valeur TRUE, le service WIA définit ce membre ; sinon, le minidriver le définit. |
lActiveBuffer | Service WIA. Le minidriver ne doit pas modifier ce membre. |
lNumBuffers | Service WIA. Le minidriver ne doit pas modifier ce membre. |
pBaseBuffer | Service WIA ou minidriver. Si bClassDrvAllocBuf a la valeur TRUE, le service WIA définit ce membre ; sinon, le minidriver le définit. |
pTransferBuffer | Service WIA ou minidriver. Si bClassDrvAllocBuf a la valeur TRUE, le service WIA définit ce membre ; sinon, le minidriver le définit. |
lClientAddress | Service WIA. Le minidriver ne doit pas modifier ce membre. |
pIWiaMiniDrvCallBack | Service WIA |
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | wiamindr_lh.h (incluez Wiamindr.h) |
Voir aussi
IWiaMiniDrv ::d rvAcquireItemData