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.
VIDEOPORT_DEPRECATED VIDEOPORT_API PVOID VideoPortGetDeviceBase(
PVOID HwDeviceExtension,
PHYSICAL_ADDRESS IoAddress,
ULONG NumberOfUchars,
UCHAR InIoSpace
);
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 . |
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.
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.
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.
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 |