Função VideoPortGetDeviceBase (video.h)

A função VideoPortGetDeviceBase mapeia um intervalo de endereços de E/S ou memória de dispositivo relativos ao barramento para o espaço do sistema.

Sintaxe

VIDEOPORT_DEPRECATED VIDEOPORT_API PVOID VideoPortGetDeviceBase(
  PVOID            HwDeviceExtension,
  PHYSICAL_ADDRESS IoAddress,
  ULONG            NumberOfUchars,
  UCHAR            InIoSpace
);

Parâmetros

HwDeviceExtension

Ponteiro para a extensão de dispositivo do driver de miniport.

IoAddress

O endereço físico base do intervalo a ser mapeado. Você obtém esse valor relativo ao barramento chamando VideoPortGetDeviceData, VideoPortGetRegistryParameters ou VideoPortGetAccessRanges. Caso contrário, esse valor é um endereço base padrão fornecido pelo driver para as portas de E/S ou memória do dispositivo.

Você deve ter reivindicado com êxito o intervalo descrito por IoAddress e NumberOfUchars no registro por meio de uma chamada anterior para VideoPortVerifyAccessRanges ou VideoPortGetAccessRanges.

NumberOfUchars

O número de bytes, começando em IoAddress, a ser mapeado.

InIoSpace

O local do intervalo IoAddress . Esse parâmetro pode ser um dos sinalizadores a seguir ou uma combinação compatível com ORed desses sinalizadores.

Sinalizador Significado
VIDEO_MEMORY_SPACE_DENSE Obsoleto.
VIDEO_MEMORY_SPACE_IO O intervalo de endereços está no espaço de E/S, não no espaço de memória.
VIDEO_MEMORY_SPACE_MEMORY O intervalo de endereços está no espaço de memória, não no espaço de E/S.
VIDEO_MEMORY_SPACE_P6CACHE O processador agrega uma sequência de operações de gravação, as envia para uma linha de cache e, posteriormente, libera o cache. Esse sinalizador só é significativo quando VIDEO_MEMORY_SPACE_IO não está definido. Designa a memória de vídeo como WC (combinação de gravação). Para obter informações sobre o cache do WC, consulte o artigo Memória de combinação de gravação no site drivers de miniporto de vídeo .

Retornar valor

Se tiver êxito, VideoPortGetDeviceBase retornará o endereço virtual base do mapeamento. Se o intervalo relativo ao barramento especificado não puder ser mapeado, VideoPortGetDeviceBase retornará NULL.

Comentários

Você pode passar os endereços virtuais mapeados para as funções VideoPortReadXxx, VideoPortWriteXxx e VideoPortXxxMemory , exceto para VideoPortMapMemory e VideoPortUnmapMemory.

Você deve chamar VideoPortGetDeviceBase da função HwVidFindAdapter, HwVidQueryDeviceCallback ou HwVidQueryNamedValueCallback do driver de miniport.

Antes de HwVidFindAdapter retornar o controle, você deve armazenar o endereço base mapeado retornado por VideoPortGetDeviceBase e o comprimento do intervalo de acesso mapeado na extensão de dispositivo do adaptador (apontado por HwDeviceExtension) para uso posterior.

O acesso ao espaço de endereço mapeado deve seguir estas regras:

  • Se InIoSpace for VIDEO_MEMORY_SPACE_IO, o que indica que o endereço está no espaço de E/S, o endereço virtual que essa função retorna deverá ser passado para as funções Xxx VideoPortReadPortXxx, VideoPortWritePortXxx, VideoPortReadPortBufferXxx e VideoPortWritePortBufferXxx , em que Xxx é Uchar, Ushort ou Ulong.
  • Se InIoSpace for VIDEO_MEMORY_SPACE_MEMORY, o que indica que o endereço não está no espaço de E/S, mas no espaço de memória, o endereço virtual que essa função retorna deve ser passado para as funções VideoPortReadRegisterXxx, VideoPortWriteRegisterXxx, VideoPortReadRegisterBufferXxx e VideoPortWriteRegisterBufferXxx , em que Xxx é Uchar, Ushort ou Ulong.
  • O driver não deve acessar endereços que estão fora do intervalo delimitado por NumberOfUchars.
VideoPortGetDeviceBase e VideoPortMapMemory podem ser chamados pelo driver de miniporto de vídeo para mapear a memória de vídeo para um espaço de endereço virtual. Se você chamar essas duas funções para mapear os mesmos endereços físicos ou se chamar uma das funções mais de uma vez para mapear os mesmos endereços físicos, poderá ter mais de um intervalo de endereços virtuais mapeado para o mesmo intervalo de endereços físicos. Nesse caso, você deve definir o sinalizador VIDEO_MEMORY_SPACE_P6CACHE do parâmetro InIoSpace com o mesmo valor em todas essas chamadas.

Cada dispositivo de exibição uma (arquitetura de memória universal) usa um buffer de quadro localizado em main memória em vez de em um barramento PCI. Nesse caso, não chame VideoPortMapMemory para mapear o buffer de quadros. Para mapear um buffer de quadro UMA para o espaço do sistema, chame MmMapIoSpace.

Se um driver de miniporte não der suporte a um adaptador para o qual ele mapeou um intervalo lógico, ele deverá executar duas etapas antes de retornar o controle para a função DriverEntry : chamar VideoPortFreeDeviceBase para desmarcar o intervalo mapeado anteriormente do espaço do sistema e chamar VideoPortGetAccessRanges ou VideoPortVerifyAccessRanges para liberar suas declarações no intervalo no registro.

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 (inclua Video.h)
Biblioteca Videoprt.lib
DLL Videoprt.sys
IRQL PASSIVE_LEVEL

Confira também

HwVidFindAdapter

HwVidQueryDeviceCallback

HwVidQueryNamedValueCallback

VideoPortCompareMemory

VideoPortFreeDeviceBase

VideoPortGetAccessRanges

VideoPortGetDeviceData

VideoPortGetRegistryParameters

VideoPortMoveMemory

VideoPortVerifyAccessRanges

VideoPortZeroDeviceMemory

VideoPortZeroMemory