Função VideoPortMapBankedMemory (video.h)
A função VideoPortMapBankedMemory é obsoleta e tem suporte apenas para Windows NT 4.0 e drivers anteriores. Os drivers do Windows 2000 e posteriores devem usar VideoPortMapMemory.
VideoPortMapBankedMemory remapeia um intervalo físico relativo de barramento de memória de vídeo para o 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 de 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 miniport e display 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 usar um dos valores a seguir:
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 driver de miniport. Ao retornar de uma chamada bem-sucedida, VideoPortMapBankedMemory redefine a variável para o endereço virtual base para o qual mapeou o PhysicalAddress especificado.
BankLength
Especifica o tamanho de um banco, em bytes.
ReadWriteBank
Se definido como TRUE , o banco será Read\Write; se definido como FALSE , há dois bancos independentes de leitura e gravação.
BankRoutine
Ponteiro para uma função HwVidBankedMemoryCallback fornecida pelo driver a ser chamada pelo Gerenciador de Memória quando um novo banco for acessado pelo driver de vídeo.
Context
Ponteiro para um contexto fornecido pelo driver de miniport que é passado de volta para o driver quando a BankRoutine é chamada.
Retornar valor
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.
Comentários
VideoPortMapBankedMemory é executado no modo kernel dentro do mesmo contexto que o thread de modo de usuário que iniciou a chamada.
VideoPortMapBankedMemory é chamado por drivers de miniporta para gerenciar com eficiência dispositivos do tipo x86 que estão limitados a mapear um buffer de quadros em bancos. Quando essa rotina retorna ao chamador, o buffer de quadro gerenciado pelo driver de miniporta é mapeado como um buffer de quadro linear no 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 miniporta para atualizar o Registro de Índice bancário para apontar para um novo banco que contém o endereço referenciado no momento. O Bank Index Register é mantido pelo miniportor em BankRoutine. O Índice Bancário correto é calculado pelo Gerenciador de Memória de forma transparente para um driver de vídeo e passado para o driver de miniport no retorno de chamada para BankRoutine.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível no Windows 2000 e versões posteriores dos sistemas operacionais Windows. |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | video.h (incluir Video.h) |
Biblioteca | Videoprt.lib |
DLL | Videoprt.sys |
IRQL | PASSIVE_LEVEL |
Confira também
IOCTL_VIDEO_SHARE_VIDEO_MEMORY