Função VideoPortMapBankedMemory (video.h)
A função VideoPortMapBankedMemory é obsoleta e tem suporte apenas para drivers windows NT 4.0 e anteriores. Os drivers windows 2000 e posteriores devem usar VideoPortMapMemory.
VideoPortMapBankedMemory remapear um intervalo físico relativo de memória de vídeo no espaço de endereço virtual do driver de exibição correspondente em resposta a um VRP com o membro IoControlCode definido como IOCTL_VIDEO_SHARE_VIDEO_MEMORY ou IOCTL_VIDEO_MAP_VIDEO_MEMORY.
Sintaxe
VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortMapBankedMemory(
PVOID HwDeviceExtension,
PHYSICAL_ADDRESS PhysicalAddress,
PULONG Length,
PULONG InIoSpace,
PVOID *VirtualAddress,
ULONG BankLength,
UCHAR ReadWriteBank,
PBANKED_SECTION_ROUTINE BankRoutine,
PVOID Context
);
Parâmetros
HwDeviceExtension
Ponteiro para a extensão do dispositivo do driver de miniport.
PhysicalAddress
Especifica o endereço base relativo ao barramento do intervalo a ser mapeado.
Length
Ponteiro para uma variável que especifica o número total de bytes de memória do dispositivo a ser mapeado (independentemente do tamanho do banco). VideoPortMapBankedMemory retorna o tamanho real da memória mapeada, que pode ser arredondada para um limite de alinhamento determinado pelo sistema, nesse parâmetro. No entanto, os drivers de miniporto e de exibição não podem acessar a memória fora do intervalo delimitado pelo valor de entrada em Length.
InIoSpace
Indica o local do intervalo. Esse parâmetro pode ser um dos seguintes valores:
Valor | Significado |
---|---|
VIDEO_MEMORY_SPACE_DENSE | Obsoleto |
VIDEO_MEMORY_SPACE_IO | O intervalo está no espaço de E/S do sistema em vez de no espaço de memória. |
VIDEO_MEMORY_SPACE_MEMORY | O intervalo está no espaço de memória em vez de no espaço de E/S do sistema. |
VIDEO_MEMORY_SPACE_P6CACHE | O processador agrega uma sequência de operações de gravação e as envia para uma determinada linha de cache. Em seguida, o processador libera o cache. Esse sinalizador só é significativo quando VIDEO_MEMORY_SPACE_IO não está definido. |
VIDEO_MEMORY_SPACE_USER_MODE | Indica que o intervalo de endereços especificado deve ser mapeado para o modo de usuário em vez do modo kernel. Esse sinalizador só é significativo quando VIDEO_MEMORY_SPACE_IO não está definido. |
VirtualAddress
É um identificador para o processo no qual a memória deve ser mapeada ou NULL. NULL especifica que o driver de porta deve mapear o intervalo de memória lógica em qualquer local no espaço de endereço do processo atual. Caso contrário, esse identificador pode ser um valor passado em um VRP pelo driver de exibição correspondente do miniportor. Ao retornar de uma chamada bem-sucedida, VideoPortMapBankedMemory redefine a variável para o endereço virtual base para o qual ele mapeou o PhysicalAddress determinado.
BankLength
Especifica o tamanho de um banco, em bytes.
ReadWriteBank
Se definido como VERDADEIRO o banco será Read\Write; se definido como false há dois bancos de leitura e gravação independentes.
BankRoutine
Ponteiro para uma função HwVidBankedMemoryCallback fornecida pelo driver para ser chamada pelo Gerenciador de Memória quando um novo banco for acessado pelo driver de exibição.
Context
Ponteiro para um contexto fornecido pelo driver de miniporto que é passado de volta para o driver quando o BankRoutine é chamado.
Valor de retorno
VideoPortMapBankedMemory retornará NO_ERROR se o intervalo lógico fornecido tiver sido mapeado com êxito para um intervalo virtual de espaço do usuário. Caso contrário, ele poderá retornar ERROR_INVALID_PARAMETER.
Observações
VideoPortMapBankedMemory é executado no modo kernel no mesmo contexto que o thread do modo de usuário que iniciou a chamada.
VideoPortMapBankedMemory é chamado por drivers de miniporto para gerenciar com eficiência dispositivos do tipo x86 limitados a mapear um buffer de quadros em bancos. Quando essa rotina retorna ao chamador, o buffer de quadro gerenciado pelo driver de miniporto é mapeado como um buffer de quadro linear para o espaço de endereço do processo de solicitação (consulte parâmetro virtualAddress). Quando um acesso é feito a um endereço nesse espaço mapeado, o Gerenciador de Memória chama o driver de miniporto para atualizar o Registro de Índice do Banco para apontar para um novo banco que contém o endereço referenciado no momento. O Registro de Índice bancário é mantido pelo driver de miniporto no bankroutine. O índice bancário correto é calculado pelo Gerenciador de Memória de forma transparente para um driver de exibição e passado para o driver de miniporto no retorno de chamada para BankRoutine.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Disponível no Windows 2000 e versões posteriores dos sistemas operacionais Windows. |
da Plataforma de Destino | Área de trabalho |
cabeçalho | video.h (inclua Video.h) |
biblioteca | Videoprt.lib |
de DLL | Videoprt.sys |
IRQL | PASSIVE_LEVEL |
Consulte também
IOCTL_VIDEO_SHARE_VIDEO_MEMORY