Compartilhar via


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

HwVidBankedMemoryCallback

IOCTL_VIDEO_MAP_VIDEO_MEMORY

IOCTL_VIDEO_SHARE_VIDEO_MEMORY

IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY

VIDEO_REQUEST_PACKET

VideoPortMapMemory

VideoPortUnmapMemory