Compartilhar via


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

HwVidBankedMemoryCallback

IOCTL_VIDEO_MAP_VIDEO_MEMORY

IOCTL_VIDEO_SHARE_VIDEO_MEMORY

IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY

VIDEO_REQUEST_PACKET

VideoPortMapMemory

VideoPortUnmapMemory