Condividi tramite


struttura MINIDRV_TRANSFER_CONTEXT (wiamindr_lh.h)

La struttura MINIDRV_TRANSFER_CONTEXT viene usata per archiviare l'immagine e altre informazioni necessarie per il trasferimento dei dati di callback di memoria o per il trasferimento di dati di file.

Sintassi

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;

Members

lSize

Specifica le dimensioni in byte di questa struttura MINIDRV_TRANSFER_CONTEXT.

lWidthInPixels

Specifica la larghezza in pixel dell'immagine corrente. Il valore di questo membro è derivato dalla proprietà WIA_IPA_PIXELS_PER_LINE elemento comune.

lLines

Specifica il numero totale di righe (il numero di righe orizzontali di pixel) nell'immagine corrente. Il valore di questo membro è derivato dalla proprietà WIA_IPA_NUMBER_OF_LINES elemento comune.

lDepth

Specifica il valore di profondità del colore dell'immagine corrente in bit per pixel. Il valore di questo membro è derivato dalla proprietà WIA_IPA_DEPTH elemento comune.

lXRes

Specifica la risoluzione orizzontale corrente dell'immagine in pixel per pollice. Il valore di questo membro è derivato dalla proprietà dell'elemento dello scanner WIA_IPS_XRES.

lYRes

Specifica la risoluzione verticale corrente dell'immagine in pixel per pollice. Il valore di questo membro è derivato dalla proprietà dell'elemento dello scanner WIA_IPS_YRES.

lCompression

Specifica il tipo di compressione utilizzato dal dispositivo. Il valore di questo membro è derivato dalla proprietà WIA_IPA_COMPRESSION elemento comune.

guidFormatID

Specifica un GUID che indica il formato dei dati per il dispositivo. Il valore di questo membro è derivato dalla proprietà WIA_IPA_FORMAT elemento comune.

tymed

Specifica il tipo di trasferimento dei dati. Il trasferimento dei dati specificato può essere un trasferimento di callback di memoria (TYMED_CALLBACK o TYMED_MULTIPAGE_CALLBACK) o un trasferimento di file (TYMED_FILE o TYMED_MULTIPAGE_FILE). Il valore di questo membro è derivato dalla proprietà WIA_IPA_TYMED elemento comune.

Questo membro fornisce informazioni correlate a tale elemento nel membro bTransferDataCB . Vedere osservazioni Per ulteriori informazioni.

hFile

Specifica l'handle per il file aperto utilizzato durante i trasferimenti di file. Il minidriver non deve usare questo membro. Vedere osservazioni Per ulteriori informazioni.

cbOffset

Specifica l'offset corrente in byte della posizione del buffer successiva utilizzata durante questo trasferimento.

lBufferSize

Specifica le dimensioni totali del buffer di trasferimento.

lActiveBuffer

Specifica il buffer utilizzato per il trasferimento corrente. Il valore di questo membro deve essere compreso nell'intervallo compreso tra 1 e lNumBuffers.

lNumBuffers

Specifica il numero di buffer disponibili per il trasferimento dei dati. Questo valore può essere attualmente 1 o 2.

pBaseBuffer

Punta all'inizio del buffer di trasferimento di base.

pTransferBuffer

Punta all'inizio del buffer di trasferimento corrente. Per un trasferimento di callback in cui viene usato il doppio buffering, questo membro alterna tra i due buffer, puntando all'inizio del primo buffer e quindi all'inizio del secondo e così via.

bTransferDataCB

Specifica se un trasferimento di dati è un trasferimento di callback di memoria o un trasferimento di file. Questo membro è impostato su TRUE se il trasferimento è un trasferimento di callback di memoria e FALSE se il trasferimento è un trasferimento di file. Per i trasferimenti di file, il servizio WIA in genere fornisce una routine di callback, che consente all'applicazione di ricevere gli aggiornamenti dal minidriver sullo stato del trasferimento del file. Il servizio WIA fornisce una routine di callback se l'applicazione fornisce una routine di callback personalizzata. Per informazioni dettagliate, vedere Interfaccia COM IWiaMiniDrvCallback . Per i trasferimenti di file, un minidriver deve controllare il valore archiviato nel membro pIWiaMiniDrvCallBack . Se il membro è NULL, il servizio WIA non fornisce una routine di callback, pertanto il driver non deve tentare di chiamarlo. Per i trasferimenti di callback di memoria, il servizio WIA fornisce sempre un callback.

Questo membro fornisce informazioni correlate a tale elemento nel membro tymed . Vedere osservazioni Per ulteriori informazioni.

bClassDrvAllocBuf

Specifica se il servizio WIA ha allocato il buffer di trasferimento. Questo valore è TRUE se il servizio WIA ha allocato il buffer e FALSE in caso contrario. In tal caso, è responsabilità del minidriver allocare il buffer di trasferimento.

lClientAddress

Specifica l'indirizzo, nello spazio indirizzi del client, del trasferimento. Il minidriver non deve modificare questo valore.

pIWiaMiniDrvCallBack

Punta a un'interfaccia IWiaMiniDrvCallBack usata per il trasferimento di callback di dati o di stato.

lImageSize

Specifica le dimensioni, in byte, dei bit non compressi in una singola pagina.

lHeaderSize

Specifica le dimensioni, in byte, dei dati di intestazione dell'immagine in una singola pagina.

lItemSize

Specifica le dimensioni, in byte, di bit e intestazione. Questo valore può essere zero se la dimensione dell'articolo è sconosciuta prima dell'acquisizione.

cbWidthInBytes

Specifica le dimensioni, in byte, di una linea di immagine.

lPage

Specifica il numero di pagina della pagina corrente durante l'analisi di un'immagine TIFF a più pagine. La numerazione delle pagine inizia con zero.

lCurIfdOffset

Specifica l'offset della directory dei file di immagine (IFD) nella pagina corrente di un'immagine TIFF a più pagine.

lPrevIfdOffset

Specifica l'offset della directory dei file di immagine (IFD) nella pagina precedente di un'immagine TIFF a più pagine.

Commenti

Il servizio WIA imposta la maggior parte dei membri di questa struttura prima di chiamare il metodo IWiaMiniDrv::d rvAcquireItemData del minidriver. Se il minidriver chiama wiasGetImageInformation, tale funzione riempie i membri rimanenti del MINIDRV_TRANSFER_CONTEXT passati.

Poiché il servizio WIA attualmente usa solo le costanti TYMED_FILE e TYMED_CALLBACK, i membri tymed e bTransferDataCB archiviano essenzialmente le stesse informazioni. Per i trasferimenti di file, quando bTransferDataCB è impostato su FALSE, tymed è impostato su TYMED_FILE o TYMED_MULTIPAGE_FILE. Per i trasferimenti di callback di memoria, quando bTransferDataCB è impostato su TRUE, tymed è impostato su TYMED_CALLBACK o TYMED_MULTIPAGE_CALLBACK.

Il membro hFile è riservato esclusivamente al servizio WiA. Anziché usare questo membro per i trasferimenti di file, il minidriver deve invece scrivere i dati in un buffer e quindi chiamare wiasWritePageBufToFile per completare il trasferimento del file.

Il minidriver ottiene i valori da specifiche proprietà comuni o degli elementi dello scanner per impostare i membri illustrati nella tabella seguente:

Membro Impostato da
lWidthInPixels WIA_IPA_PIXELS_PER_LINE
lLines WIA_IPA_NUMBER_OF_LINES
lDepth WIA_IPA_DEPTH
lXRes WIA_IPS_XRES
lYRes WIA_IPS_YRES
lCompressione WIA_IPA_COMPRESSION
guidFormatID WIA_IPA_FORMAT
Tymed WIA_IPA_TYMED

In genere, il minidriver imposta i membri della struttura precedenti direttamente dai valori delle proprietà dell'elemento. Un'applicazione o il minidriver avranno impostato le proprietà dell'elemento in precedenza. Il servizio WIA compila il contesto del servizio, usando i valori delle proprietà. Il driver può usare i valori archiviati in questo contesto per riferimento rapido.

Il servizio WIA imposta i membri della struttura seguenti:

  • hFile

  • bTransferDataCB

  • bClassDrvAllocBuf

La funzione della libreria del servizio wiasGetImageInformation imposta i membri della struttura seguenti:

  • lImageSize

  • lHeaderSize

  • lItemSize

  • cbWidthInBytes

I membri seguenti di questa struttura vengono usati nei callback di trasferimento dei dati. Il servizio WIA o il minidriver imposta questi membri. In diversi casi, il valore archiviato in bClassDrvAllocBuf determina se il servizio WIA o il minidriver imposta il membro.

Membro Impostato da
cbOffset Minidriver
lBufferSize Servizio WIA o minidriver. Se bClassDrvAllocBuf è TRUE, il servizio WIA imposta questo membro; in caso contrario, il minidriver lo imposta.
lActiveBuffer Servizio WIA. Il minidriver non deve modificare questo membro.
lNumBuffers Servizio WIA. Il minidriver non deve modificare questo membro.
pBaseBuffer Servizio WIA o minidriver. Se bClassDrvAllocBuf è TRUE, il servizio WIA imposta questo membro; in caso contrario, il minidriver lo imposta.
pTransferBuffer Servizio WIA o minidriver. Se bClassDrvAllocBuf è TRUE, il servizio WIA imposta questo membro; in caso contrario, il minidriver lo imposta.
lClientAddress Servizio WIA. Il minidriver non deve modificare questo membro.
pIWiaMiniDrvCallBack Servizio WIA

Requisiti

Requisito Valore
Intestazione wiamindr_lh.h (include Wiamindr.h)

Vedi anche

IWiaMiniDrv::d rvAcquireItemData

IWiaMiniDrvCallBack::MiniDrvCallback

wiasGetImageInformation

wiasWritePageBufToFile