Função VideoPortSetTrappedEmulatorPorts (video.h)

Os drivers de miniporto SVGA (compatíveis com VGA) chamam a função VideoPortSetTrappedEmulatorPorts para alterar dinamicamente a lista de portas de E/S que estão presas quando uma VDM (monitor de exibição de vídeo) é executada no modo de tela inteira em um computador baseado em x86.

Sintaxe

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortSetTrappedEmulatorPorts(
       PVOID               HwDeviceExtension,
       ULONG               NumAccessRanges,
  [in] PVIDEO_ACCESS_RANGE AccessRange
);

Parâmetros

HwDeviceExtension

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

NumAccessRanges

Especifica o número de elementos na matriz AccessRange .

[in] AccessRange

Ponteiro para uma matriz de elementos VIDEO_ACCESS_RANGE . Cada elemento descreve um subrange adequado do EmulatorAccessEntries que o driver de miniporto configurou em VIDEO_PORT_CONFIG_INFO. Definir o membro RangeVisible de um elemento AccessRange como TRUE permite o acesso direto ao intervalo de portas de E/S pelo aplicativo MS-DOS de tela inteira. A configuração de um membro RangeVisible como FALSE faz com que ins, INSB/INSW/INSDs, OUTs e/ou OUTSB/OUTSW/OUTSDs emitidos pelo aplicativo para esse intervalo sejam presos e encaminhados para a função SvgaHwIoPortXxxx do driver de miniport correspondente para validação.

A matriz AccessRange passada para VideoPortSetTrappedEmulatorPorts deve ser um subconjunto adequado dos intervalos de porta de E/S que a função HwVidFindAdapter configurou na matriz EmulatorAccessEntries da estrutura VIDEO_PORT_CONFIG_INFO . Todos os intervalos de porta de E/S na matriz de intervalos de acesso que não estão incluídos na matriz EmulatorAccessEntries são presos e refletidos no VDD do modo de usuário.

Valor retornado

VideoPortSetTrappedEmulatorPorts retorna NO_ERROR se tiver alterado com êxito as portas presas. Caso contrário, ele retornará ERROR_INVALID_PARAMETER.

Comentários

Por padrão, o AccessRange de portas de E/S que os aplicativos MS-DOS de tela inteira podem acessar diretamente não inclui nenhum dos elementos de matriz de intervalo de acesso que descrevem intervalos de porta de E/S que também têm elementos correspondentes na matriz EmulatorAccessEntries da estrutura VIDEO_PORT_CONFIG_INFO . Ou seja, os intervalos de porta de E/S com entradas de acesso do emulador correspondentes são, por padrão, conectados às funções SvgaHwIoPortXxx do driver de miniporto para que as instruções emitidas pelo aplicativo sejam encaminhadas para as funções SvgaHwIoPortXxx para validação.

Um driver de miniporto SVGA compatível com VGA pode habilitar e desabilitar intervalos de portas de E/S conforme necessário com chamadas para VideoPortSetTrappedEmulatorPorts. Os intervalos de portas habilitados permitem que um aplicativo MS-DOS de tela inteira acesse essas portas de E/S diretamente, sem ter instruções de assembly emitidas pelo aplicativo presas e encaminhadas para as funções SvgaHwIoPortXxx do driver de miniporto para validação primeiro. O acesso direto à porta de E/S para esse aplicativo fornece ao usuário tempos de resposta de E/S de vídeo mais rápidos.

VideoPortSetTrappedEmulatorPorts verifica a matriz de parâmetros AccessRange do primeiro elemento para o último, habilitando e desabilitando portas de E/S conforme indicado em cada elemento. Observe que um intervalo de portas habilitadas (o membro RangeVisible definido como TRUE) pode ser desabilitado novamente na mesma chamada se o driver de miniporto incluir uma descrição duplicada do mesmo intervalo com o membro RangeVisible definido como FALSE. Observe também que um driver de minitransporte pode habilitar uma ampla gama de portas de E/S no elemento inicial da matriz AccessRange e desabilitar seletivamente subranges de portas em elementos de matriz subsequentes quando chama VideoPortSetTrappedEmulatorPorts.

Todos os aplicativos MS-DOS de tela inteira usam o mesmo IOPM (mapa de permissão de E/S) em computadores baseados em x86 e, portanto, o mesmo conjunto de portas de E/S habilitadas ou desabilitadas. Em cada comutador para um aplicativo de tela inteira, a função HwVidStartIO de um driver de miniporte compatível com VGA é chamada com o IOCTL_VIDEO_ENABLE_VDM VRP. O driver de miniporte deve reinicializar um conjunto padrão de portas de E/S diretamente acessíveis, que podem incluir todas as portas na matriz EmulatorAccessEntries .

Ao fornecer aplicativos MS-DOS de tela inteira em computadores baseados em x86 acesso direto às portas de vídeo torna as operações de vídeo iniciadas pelo aplicativo mais rapidamente, cada driver de miniporto SVGA compatível com VGA deve continuar a interceptar um subconjunto de portas de E/S críticas para impedir que esse aplicativo desative o computador. Em particular, esses drivers de miniporto devem sempre prender a E/S do aplicativo para o sequenciador de adaptador compatível com VGA e registros de saída diversos. Esse driver de miniporto também deve capturar e validar a E/S direta emitida pelo aplicativo que pode fazer com que o computador seja travado para qualquer subconjunto adicional dependente de adaptador de portas de E/S.

Chamar VideoPortSetTrappedEmulatorPorts novamente e redefinir o membro RangeVisible de um elemento AccessRange para FALSE faz com que as instruções emitidas pelo aplicativo para esse intervalo sejam encaminhadas para a função SvgaHwIoPortXxx do driver de miniporte correspondente.

Requisitos

   
Cliente mínimo com suporte Disponível no Windows 2000 e versões posteriores dos sistemas operacionais Windows.
Plataforma de Destino Desktop
Cabeçalho video.h (inclua Video.h)
Biblioteca Videoprt.lib
DLL Videoprt.sys
IRQL PASSIVE_LEVEL

Confira também

EMULATOR_ACCESS_ENTRY

HwVidFindAdapter

HwVidStartIO

VIDEO_ACCESS_RANGE

VIDEO_PORT_CONFIG_INFO

VideoPortSynchronizeExecution