estrutura MINIDRV_TRANSFER_CONTEXT (wiamindr_lh.h)
A estrutura MINIDRV_TRANSFER_CONTEXT é usada para armazenar a imagem e outras informações necessárias para uma transferência de dados de retorno de memória ou uma transferência de dados de arquivo.
Sintaxe
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;
Membros
lSize
Especifica o tamanho em bytes dessa estrutura MINIDRV_TRANSFER_CONTEXT.
lWidthInPixels
Especifica a largura em pixels da imagem atual. O valor desse membro é derivado da propriedade de item comum WIA_IPA_PIXELS_PER_LINE.
lLines
Especifica o número total de linhas (o número de linhas horizontais de pixels) na imagem atual. O valor desse membro é derivado da propriedade de item comum WIA_IPA_NUMBER_OF_LINES .
lDepth
Especifica o valor de profundidade de cor da imagem atual em bits por pixel. O valor desse membro é derivado da propriedade de item comum WIA_IPA_DEPTH .
lXRes
Especifica a resolução horizontal atual da imagem em pixels por polegada. O valor desse membro é derivado da propriedade WIA_IPS_XRES item do scanner.
lYRes
Especifica a resolução vertical atual da imagem em pixels por polegada. O valor desse membro é derivado da propriedade de item do scanner WIA_IPS_YRES .
lCompression
Especifica o tipo de compactação usado pelo dispositivo. O valor desse membro é derivado da propriedade de item comum WIA_IPA_COMPRESSION .
guidFormatID
Especifica um GUID que indica o formato de dados do dispositivo. O valor desse membro é derivado da propriedade de item comum WIA_IPA_FORMAT.
tymed
Especifica o tipo de transferência de dados. A transferência de dados especificada pode ser uma transferência de retorno de chamada de memória (TYMED_CALLBACK ou TYMED_MULTIPAGE_CALLBACK) ou transferência de arquivo (TYMED_FILE ou TYMED_MULTIPAGE_FILE). O valor desse membro é derivado da propriedade de item comum WIA_IPA_TYMED .
Esse membro transmite informações relacionadas a isso no membro bTransferDataCB . Confira Comentários para obter mais informações.
hFile
Especifica o identificador para o arquivo aberto usado durante transferências de arquivo. O minidriver não deve usar esse membro. Confira Comentários para obter mais informações.
cbOffset
Especifica o deslocamento atual em bytes do próximo local de buffer usado durante essa transferência.
lBufferSize
Especifica o tamanho total do buffer de transferência.
lActiveBuffer
Especifica qual buffer é usado para a transferência atual. O valor desse membro deve estar no intervalo de 1 a lNumBuffers.
lNumBuffers
Especifica o número de buffers disponíveis para transferência de dados. Atualmente, esse valor pode ser 1 ou 2.
pBaseBuffer
Aponta para o início do buffer de transferência base.
pTransferBuffer
Aponta para o início do buffer de transferência atual. Para uma transferência de retorno de chamada na qual o buffer duplo é usado, esse membro alterna entre os dois buffers, apontando para o início do primeiro buffer e, em seguida, para o início do segundo e assim por diante.
bTransferDataCB
Especifica se uma transferência de dados é uma transferência de retorno de chamada de memória ou uma transferência de arquivo. Esse membro será definido como TRUE se a transferência for uma transferência de retorno de chamada de memória e FALSE se a transferência for uma transferência de arquivo. Para transferências de arquivos, o serviço WIA geralmente fornece uma rotina de retorno de chamada, que permite que o aplicativo receba atualizações do minidriver sobre o status da transferência de arquivo. (O serviço WIA fornece uma rotina de retorno de chamada se o aplicativo fornecer sua própria rotina de retorno de chamada. Consulte Interface COM IWiaMiniDrvCallback para obter detalhes.) Para transferências de arquivo, um minidriver deve marcar o valor armazenado no membro pIWiaMiniDrvCallBack. Se esse membro for NULL, o serviço WIA não fornecerá uma rotina de retorno de chamada, portanto, o driver não deverá tentar chamá-lo. Para transferências de retorno de chamada de memória, o serviço WIA sempre fornece um retorno de chamada.
Esse membro transmite informações relacionadas a isso no membro tymed . Confira Comentários para obter mais informações.
bClassDrvAllocBuf
Especifica se o serviço WIA alocou o buffer de transferência. Esse valor será TRUE se o serviço WIA alocar o buffer e FALSE , caso contrário. Nesse caso, é responsabilidade do minidriver alocar o buffer de transferência.
lClientAddress
Especifica o endereço, no espaço de endereço do cliente, da transferência. O minidriver não deve alterar esse valor.
pIWiaMiniDrvCallBack
Aponta para uma interface IWiaMiniDrvCallBack usada para dados ou status transferência de retorno de chamada.
lImageSize
Especifica o tamanho, em bytes, de bits não compactados em uma única página.
lHeaderSize
Especifica o tamanho, em bytes, dos dados de cabeçalho de imagem em uma única página.
lItemSize
Especifica o tamanho, em bytes, de bits e cabeçalho. Esse valor poderá ser zero se o tamanho do item for desconhecido antes da aquisição.
cbWidthInBytes
Especifica o tamanho, em bytes, de uma linha de imagem.
lPage
Especifica o número de página da página atual ao verificar uma imagem TIFF de várias páginas. A numeração de página começa com zero.
lCurIfdOffset
Especifica o deslocamento do diretório de arquivo de imagem (IFD) na página atual de uma imagem TIFF de várias páginas.
lPrevIfdOffset
Especifica o deslocamento do diretório de arquivo de imagem (IFD) na página anterior de uma imagem TIFF de várias páginas.
Comentários
O serviço WIA define a maioria dos membros dessa estrutura antes de chamar o método IWiaMiniDrv::d rvAcquireItemData do minidriver. Se o minidriver chamar wiasGetImageInformation, essa função preencherá os membros restantes do MINIDRV_TRANSFER_CONTEXT passados para ele.
Como o serviço WIA atualmente usa apenas as constantes TYMED_FILE e TYMED_CALLBACK, os membros tymed e bTransferDataCB armazenam essencialmente as mesmas informações. Para transferências de arquivo, quando bTransferDataCB é definido como FALSE, tymed é definido como TYMED_FILE ou TYMED_MULTIPAGE_FILE. Para transferências de retorno de chamada de memória, quando bTransferDataCB é definido como TRUE, tymed é definido como TYMED_CALLBACK ou TYMED_MULTIPAGE_CALLBACK.
O membro hFile é reservado para uso somente pelo serviço WIA. Em vez de usar esse membro para transferências de arquivo, o minidriver deve gravar os dados em um buffer e, em seguida, chamar wiasWritePageBufToFile para concluir a transferência de arquivo.
O minidriver obtém valores de propriedades específicas de item comum ou de scanner para definir os membros mostrados na tabela a seguir:
Membro | Definido por |
---|---|
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 |
Normalmente, o minidriver define os membros da estrutura anterior diretamente dos valores das propriedades do item. Um aplicativo ou o minidriver terá definido as propriedades do item anteriormente. O serviço WIA preenche seu contexto de serviço, usando os valores de propriedade. O driver pode usar os valores armazenados nesse contexto para referência rápida.
O serviço WIA define os seguintes membros da estrutura:
hFile
bTransferDataCB
bClassDrvAllocBuf
A função minidriver ou biblioteca de serviços wiasGetImageInformation define os seguintes membros da estrutura:
lImageSize
lHeaderSize
lItemSize
cbWidthInBytes
Os membros a seguir dessa estrutura são usados em retornos de chamada de transferência de dados. O serviço WIA ou o minidriver define esses membros. Em vários casos, o valor armazenado em bClassDrvAllocBuf determina se o serviço WIA ou o minidriver define o membro.
Membro | Definido por |
---|---|
cbOffset | Minidriver |
lBufferSize | Serviço wia ou minidriver. Se bClassDrvAllocBuf for TRUE, o serviço WIA definirá esse membro; caso contrário, o minidriver o define. |
lActiveBuffer | Serviço WIA. O minidriver não deve modificar esse membro. |
lNumBuffers | Serviço WIA. O minidriver não deve modificar esse membro. |
pBaseBuffer | Serviço wia ou minidriver. Se bClassDrvAllocBuf for TRUE, o serviço WIA definirá esse membro; caso contrário, o minidriver o define. |
pTransferBuffer | Serviço wia ou minidriver. Se bClassDrvAllocBuf for TRUE, o serviço WIA definirá esse membro; caso contrário, o minidriver o define. |
lClientAddress | Serviço WIA. O minidriver não deve modificar esse membro. |
pIWiaMiniDrvCallBack | Serviço WIA |
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | wiamindr_lh.h (inclua Wiamindr.h) |
Confira também
IWiaMiniDrv::d rvAcquireItemData