Usando o modelo de buffer de DMA do contrato garantido

O modelo de driver de exibição para Windows Vista garante o tamanho de buffers de DMA e listas de localização de patch para um dispositivo de renderização. Uma lista de localização de patch contém os endereços de memória física dos recursos referenciados pelos comandos no buffer de DMA.

No modo de contrato garantido, o driver de exibição no modo de usuário está ciente do tamanho exato do buffer DMA e da lista de localização de patch que está disponível para tradução quando o driver de exibição do modo de usuário preenche buffers de comando e chama pfnRenderCb para enviá-los ao driver de miniporto de exibição. Após cada chamada para pfnRenderCb, o driver de exibição do modo de usuário recebe o tamanho do buffer DMA e da lista de locais de patch disponíveis para a tradução a seguir (ou seja, a chamada a seguir para pfnRenderCb).

O gerenciador de memória de vídeo garante não cortar os buffers de DMA e as listas de localização de patch para esse dispositivo até que a próxima tradução seja concluída. O driver de miniporto de exibição deve ser capaz de converter um buffer de comando em exatamente um buffer de DMA e uma lista de locais de patch. Se essa tradução não for possível, o buffer de comando do modo de usuário será, por definição, inválido. O driver de miniporto de exibição não pode retornar status que indica que ele está fora do espaço em buffer de DMA e listas de localização de patch durante a tradução; isso resulta na verificação de bugs do gerenciador de memória de vídeo do sistema porque o gerenciador de memória não cumpriu os requisitos do contrato de DMA garantido.