Compartilhar via


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

IWiaMiniDrvCallBack::MiniDrvCallback

wiasGetImageInformation

wiasWritePageBufToFile