Compartilhar via


Display Driver Development Concepts

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Drivers de vídeo são carregados e chamado diretamente pelo elementos gráficos, janelas e subsistema evento, chamado Gwes.dll. Os drivers mais comumente são gravados usando uma em camadas arquitetura because of o número de operações hardware-Independent.

A biblioteca Graphics Primitive Engine (GPE) manipula o usar como padrão desenho, atuando como camada superior modelo driver de dispositivo (MDD) do driver de exibir.

Você desenvolver a codificar hardware-specific que corresponde à camada inferior do driver de exibir, chamado de plataforma-dependente driver (PDD).

A seguinte tabela mostra os elementos que constituem o pipeline de elementos gráficos Windows Embedded CE.

Elemento Descrição

Aplicativo

O aplicativo pode ser simples, such as um aplicativo Hello World ou complexos, such as um tridimensional engenharia aplicativo.

O que é, o aplicativo chama funções GDI. Coredll.dll expõe essas funções.

Coredll.dll

O principal conjunto de funções é exposto por um único DLL, chamado Coredll.dll.

Na maioria dos casos, esta biblioteca não executar o trabalho. Em vez disso, a biblioteca empacota os parâmetros para chamar a função e, em seguida, dispara um Local Procedure Call (LPC) para outro processo.

O processo específico depende de como chamar a função. Todas as chamadas de desenho e janelas são enviadas para Gwes.dll.

Gwes.dll

Os elementos gráficos, janela e eventos Subsystem (GWES) é responsável por todos os gráfico saída e todas as interações com o usuário.

Os drivers que residir na GWES espaço de endereço incluem exibir drivers, drivers de impressora, drivers de teclado, mouse drivers e tocar drivers Tela.

DDI.dll

O nome usar como padrão para o driver exibir é DDI.dll. Como com a maioria das DLLs, DDI.dll se comunica através de funções exportadas.

DDI.dll Exporta somente a DrvEnableDriver função, que retorna um ponteiro para uma matriz de 27 ponteiros função para o chamador. Quando GWES requer um driver exibir, ele chama um dessas funções 27.

Escrever um driver de dispositivo envolve escrever a codificar para essas funções 27.

Três dessas funções são específicos para drivers de impressora, que deixa 24 para o desenvolvedor driver exibir.

Hardware

O gráfico pipeline termina no hardware. O driver exibir se comunica com o hardware usando o mecanismo exigido pelo hardware.

Esse processo geralmente envolve uma combinação de vídeo Memory-mapped buffers e registra E/S.

A seguinte ilustração mostra a arquitetura de elementos gráficos Windows Embedded CE.

Aa911948.f5676a4c-7d10-4813-9cf6-74eb0ace9295(pt-BR,WinEmbedded.60).gif

Você pode minimizar a quantidade de tempo e esforço que seja necessário para criar um driver exibir por personalizando um driver exemplo fornecido com Platform Builder. Os drivers exemplo aproveitar a classe GPE para fornecer desenho usar como padrão hardware-specific problemas.

O GDI faz chamadas para o driver exibir e o driver exibir grava o físico dispositivo exibir. Todos os drivers exibir baseado em Windows Embedded CE devem implementar um conjunto de funções DDI exibir que você usar para inicializar a exibir driver e bloco imagem transferir (blit cores) para a exibir.

As classes GPE servem como um de base de codificar que você pode usar para derivar novos drivers exibir para seu hardware. O identificador classes GPE todas as comunicações na camada DDI exibir e identificador o desenho usar como padrão. Ao usar as classes GPE pode salvar desenvolvimento e depuração trabalho.

Os drivers exibir exemplo usam o GPE. Eles demonstrar como você pode adicionar extensões para o driver exibir, de exemplo, para habilitar hardware acelerações.

Se você usar as classes GPE, você deve fornecer codificar necessário garantir que seu dispositivo exibir opera corretamente. Além disso, se seu dispositivo oferece suporte à aceleração de hardware BitBlt transferências, você também habilitar aceleração hardware pode.

Esteja ciente que usar as classes GPE envolve requisitos hardware.

As classes GPE são para exibir Dispositivos que suporte a simple-quadro reserva. Simples-quadro implica que todas as memória dispositivo de vídeo deve ser em um único bloco de contíguo memória.

Exibir todos os controles driver gravar o interno hardware exibir do sistema. Esse hardware pode ser uma Tela LCD ou qualquer hardware exibir que é adequado para sua plataforma hardware. Exibir modelos driver Para interno exibir hardware e drivers adaptador exibir Periféricos são os mesmos.

Para armazenar entradas configuração para seu driver exibir, criar uma chave Registro em HKEY_LOCAL_MACHINE\Drivers\Display. Rotina de inicialização do seu driver exibir deve criar chaves em HKEY_LOCAL_MACHINE\Drivers\Display\Active Para que os aplicativos podem determinar quais dispositivos exibir estão disponível.

Drivers exibir PCI-Based podem beneficiar do driver de barramento PCI Carregar modelo.

Driver de barramento PCI, plataforma de hardware é BIOS, ou ambos, enumerar e programa o espaço configuração PCI do dispositivo e preencher o Registro com informações configuração. O driver exibir pode em seguida, ler esta informações Registro sem precisar digitalizar o barramento para seu dispositivo e ler o próprio espaço configuração PCI.

Para obter um exemplo, consulte o DisplayInit e MapPhysicalDevice funções para o driver MQ200 em % _WINCEROOT%\Public\Common\OAK\Drivers\Display\MQ200\Devmap.cpp.

GWES grava o driver está usando para HKEY_LOCAL_MACHINE\System\GDI\Drivers\MainDisplay.

Para determinar qual driver exibir para carregar, GWES usa o seguinte procedimento:

  1. GWES verifica a lista de candidatos exibe no HKEY_LOCAL_MACHINE\System\GDI\DisplayCandidates Para determinar se qualquer são instanciado no local sistema. Esta lista geralmente é criada no Platform.reg.
  2. Se a primeira GWES por isso, usa-localiza.
  3. GWES tenta carregar DDI.dll, que é o nome driver exibir usar como padrão.
  4. Uma entrada Registro no Common.reg carrega DDI.dll.
    Um processo dedicado pode secundário carregar drivers por chamado Erro Com "MyDDI.dll" Como o primeiro parâmetro. Para obter mais informações, consulte Drivers de vídeo secundário.

GWES permite que você crie executar - tempo imagens que determinam o adaptador exibir em tempo de execução e carregar o apropriado driver. Os dados instância PCI podem especificar o adaptador exibir. Se for possível que nenhum adaptador exibir esteja presente, você pode usar Ddi_nop.

Por exemplo, assumir que um dispositivo poderia tenha um cartão ATI Rage XL Expert 98 em um slot PCI. Para criar uma imagem para suporte esta, faça o seguinte:

  • Definir BSP_DISPLAY_RAGEXL = 1 e BSP_DISPLAY_NOP = 1.
  • Criar modelos PCI e um candidato GDI lista no seu arquivo Platform.reg.

Se o driver de barramento PCI detectar um cartão adaptador exibir, ele cria uma chave instância PCI que GDI usa para carregar o driver.

Se nenhum cartões adaptador for encontrados, o driver Ddi_nop é carregado porque ele aparece após as outras, conforme o seguinte exemplo Registro.

IF BSP_NODISPLAY !

IF BSP_DISPLAY_MQ200
[HKEY_LOCAL_MACHINE\System\GDI\Drivers]
    "Display"="ddi_mq200.dll"

;
;MediaQ MQ200 driver settings
;
[HKEY_LOCAL_MACHINE\Drivers\Display\MQ200]
   "Rotate"=dword:0
   "PPSupport"=dword:0
   "PPSupportEnable"=dword:0

;; 640x480x16
   "CxScreen"=dword:280
   "CyScreen"=dword:1E0
   "BPP"=dword:10
   "Freq"=dword:3C

;; FB_BASE address
   "FB_BASE"=dword:00000000

;; OEM run time flag
   "Flag"=dword:00030503

   "MIU2"=dword:00EA0086
   "MIU3"=dword:6C4848C4
   "MIU5"=dword:00000119
   "DC0"=dword:0EF2082A
   "PLL1Freq"=dword:00530000

   "PWM"=dword:000000A1

[HKEY_LOCAL_MACHINE\Drivers\Display\MQ200\Color]
;; Cursor Color setting
   "CC"=dword:F

;
; MQ200 supports saving/restoring video memory surfaces during
suspend/resume.
;
[HKEY_LOCAL_MACHINE\SYSTEM\GWE]
    ; "PORepaint"=dword:0 - the display driver handles everything
    ; "PORepaint"=dword:1 - gwe should save and restore the bits
    ; "PORepaint"=dword:2 - gwe should invalidate and repaint
    ; "PORepaint"=dword:3 - gwe and driver need to save video memory
    ;
    "PORepaint"=dword:3
ENDIF

IF BSP_DISPLAY_SMI3DR
[HKEY_LOCAL_MACHINE\System\GDI\Drivers]
    "Display"="ddi_3dr.dll"
ENDIF

IF BSP_DISPLAY_RAGEXL
[HKEY_LOCAL_MACHINE\System\GDI\Drivers]
    "Display"="ddi_ragexl.dll"
ENDIF   

IF BSP_DISPLAY_PERM3
[HKEY_LOCAL_MACHINE\System\GDI\Drivers]
    "Display"="ddi_perm3.dll"
ENDIF

IF BSP_DISPLAY_PERM3_SWG
[HKEY_LOCAL_MACHINE\System\GDI\Drivers]
    "Display"="ddi_perm3_swg.dll"
ENDIF

IF BSP_DISPLAY_ATI
[HKEY_LOCAL_MACHINE\System\GDI\Drivers]
    "Display"="ddi_ati.dll"
ENDIF

IF BSP_DISPLAY_S3V
[HKEY_LOCAL_MACHINE\System\GDI\Drivers]
    "Display"="ddi_s3v.dll"
ENDIF

IF BSP_DISPLAY_RFLAT
[HKEY_LOCAL_MACHINE\System\GDI\Drivers]
    "Display"="ddi_rflat.dll"
ENDIF

IF BSP_DISPLAY_FLAT
[HKEY_LOCAL_MACHINE\System\GDI\Drivers]
    "Display"="ddi_flat.dll"
ENDIF

IF BSP_DISPLAY_NOP
[HKEY_LOCAL_MACHINE\System\GDI\Drivers]
    "Display"="ddi_nop.dll"
ENDIF

ENDIF BSP_NODISPLAY !

See Also

Reference

BitBlT Emulation Library Functions

Concepts

Display Driver Extensions
Display Driver Samples
Primary Display Drivers
Secondary Display Drivers
DDI Functions
GPE Base Classes
GDI Support Services
Display Buffer Formats
Line Drawing
Display Driver Escape Codes
Display Drivers and the Run-Time Image

Other Resources

Display Drivers