Developing a Display Driver that is Prepared for DirectDraw Support
9/8/2008
Você pode de base seu driver exibir DirectDraw em um regular exibir driver.
Para desenvolver um driver exibir que está preparado para suporte do DirectDraw
Consulte o Drivers de vídeo tópico no guia de desenvolvimento driver de dispositivo. Você deve criar um driver exibir de trabalho usando os métodos descritos desse guia.
Embora não seja um requisito, Microsoft sugere que de base você seu driver exibir na GPE Classes de base C++. Essa é a maneira mais rápida para get seu driver exibir até e execução. Ele permite que o driver seja estendido com codificar fornecida pelo Microsoft que você faria caso contrário precisa gravar si mesmo.
Se você não fizer isso desejar aproveitar as classes GPE, consulte Funções de retorno de chamada DDHAL e Estruturas DDHAL Em referência DDHAL.
Assim que você tenha escrito e testados um driver GPE-Based exibir básico Windows Embedded CE, consulte, Estendendo um driver de vídeo com as classes DDGPE.
Visão geral do buffer de quadros controle no driver de vídeo do DirectDraw
**O seguinte parágrafos descrever como o sistema operacional Windows Embedded CE 6.0 mapeia a reserva quadro em um espaço aplicativo cliente usando o DirectDraw e, em seguida, descreve como você deve identificador que reserva quadro no driver exibir DirectDraw.
Para mapa (n.); mapear (v.) a reserva quadro em um espaço aplicativo cliente, o DirectDraw tenta determinar onde a iniciar de vídeo é memória. Ele chama a função HalGetDriverInfo (GUID_GetDriverInfo_VidMemBase e pVidMemBase)
No seu vídeo driver para localizar out se o driver pode retornar informações sobre a localidade do início do vídeo memória. Se este chamar for bem-sucedido, pVidMemBase Será não-NULL. Se a chamar falhar, geralmente porque o driver não implementar GUID_GetDriverInfo_VidMemBase, em seguida, ele assumirá que o primeiro byte do primário reserva é o primeiro byte de vídeo memória. Portanto, ele determina onde o primeiro byte do primário reserva está localizada. Para fazer isso, ele chama HalCreateSurface, HalLock, HalUnlock, e em seguida, ele libera a superfície. Ele também fornece lógica para superfícies identificador girado.
O DirectDraw realiza essa tarefa quando o aplicativo usuário cria o dispositivo. Durante esta tarefa, ele também valores fora o tamanho do vídeo grande memória lendo o valor da DDCAPS.dwVidMemTotal
variável.
Após o DirectDraw possui um ponteiro para que ele foi determinado seja o primeiro byte de vídeo memória, ele faz algumas coisas antes ele chama VirtualAllocCopyEx. Ele assegura que vídeo memória é alinhada a 64 KB e ajusta o ponteiro e tamanho de acordo. Ele também controla um mapeamento único por processo, que permite que você chamar DirectDrawCreate múltiplo horas em um único processo, e todas as chamadas podem compartilhar o mesmo vídeo mapeamento memória.
Emitir outro com o DirectDraw em CE 6.0 é que ele não pode vídeo descontínuos identificador memória. O primário reserva e outras superfícies com base em vídeo memória deve ser localizada dentro de uma região virtual única e contínua.
Ao identificador de reserva quadro no driver de exibir o DirectDraw, certifique-se que o seu driver exibir trata o GUID_GetDriverInfo_VidMemBase GUID in HalGetDriverInfo. Além disso, certifique-se que você defina DDCAPS.dwVidMemTotal
corretamente. **