Partilhar via


Interface COM IWiaUIExtension

Se você implementar a interface IWiaUIExtension , poderá implementar nenhum, alguns ou todos os métodos IWiaUIExtension .

Se um método específico retornar E_NOTIMPL, a alternativa fornecida pelo sistema e uma estiver disponível, ela será usada.

A interface IWiaUIExtension fornece os seguintes métodos:P

Método Descrição
IWiaUIExtension::D eviceDialog Fornece uma interface do usuário personalizada que substitui a interface do usuário do sistema padrão.
IWiaUIExtension::GetDeviceBitmapLogo Obtém um logotipo de bitmap personalizado para o dispositivo.
IWiaUIExtension::GetDeviceIcon Obtém um ícone de dispositivo personalizado.

IWiaUIExtension::D eviceDialog aceita um ponteiro para uma estrutura DEVICEDIALOGDATA (declarada em wiadevd.h), que contém todos os dados necessários para implementar a caixa de diálogo do dispositivo.

A caixa de diálogo do dispositivo deve ser implementada como uma caixa de diálogo Win32 modal, sujeita às quatro seguintes restrições:

  1. A matriz de itens retornados em pDeviceDialogData-->ppWiaItems deve ser alocada usando CoTaskMemAlloc e é liberada pelo aplicativo usando CoTaskMemFree (consulte a documentação SDK do Microsoft Windows para ambas as funções).

  2. Você não deve destruir nem liberar o item raiz armazenado em pDeviceDialogData -->pIWiaItemRoot. Você também não deve fazer com que o item raiz se torne inválido. Por exemplo, você não deve chamar o comando WIA_CMD_SYNCHRONIZE dispositivo.

  3. Retorne S_OK para indicar que o usuário solicitou uma transferência de dados e S_FALSE para indicar que o usuário cancelou a transferência.

  4. Tome cuidado para garantir que a memória ou os vazamentos de recursos não sejam introduzidos neste componente, pois ele é executado em processo no aplicativo.

IWiaUIExtension::GetDeviceIcon permite que o aplicativo use um ícone especificado pelo driver. Para evitar vazamentos de recursos, esse ícone deve ser carregado com LoadImage, usando o sinalizador LR_SHARED (consulte a documentação do SDK do Windows).

IWiaUIExtension::GetDeviceBitmapLogo permite que o aplicativo apresente logotipos de dispositivo e fornecedor conforme apropriado. Atualmente, nenhum componente do sistema usa esse método. O bitmap deve ser um bitmap alocado por DIB usando CreateDIBSection ou carregado usando LoadImage com o sinalizador LR_CREATEDIBSECTION (consulte a documentação do SDK do Windows para obter mais informações). Isso permite que o aplicativo extraia qualquer informação de paleta e se adapte às profundidades de cor de exibição atuais ou em alteração.

Para implementar uma caixa de diálogo de verificação personalizada em um driver de scanner WIA, use o método IWiaUIExtension::D eviceDialog (com as quatro restrições listadas acima) para criar uma caixa de diálogo modal win32 e passar a estrutura DEVICEDIALOGDATA para o parâmetro dwInitParam da função DialogBoxParam como um LPARAM.

É importante lembrar que a própria caixa de diálogo do dispositivo não gerencia as transferências de dados. A caixa de diálogo apenas retorna um ponteiro para uma matriz de ponteiros de interface IWiaItem (com propriedades definidas) do driver para o aplicativo. Em seguida, cabe ao aplicativo negociar o mecanismo de transferência e o formato.