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