Partager via


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

IWiaMiniDrvCallBack ::MiniDrvCallback

wiasGetImageInformation

wiasWritePageBufToFile