Função VideoPortSetTrappedEmulatorPorts (video.h)
Drivers de miniportos compatíveis com VGA (SVGA) chamam a função VideoPortSetTrappedEmulatorPorts para alterar dinamicamente a lista de portas de E/S que sã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 do dispositivo do driver de miniport.
NumAccessRanges
Especifica o número de elementos na matriz de AccessRange.
[in] AccessRange
Ponteiro para uma matriz de elementos VIDEO_ACCESS_RANGE. Cada elemento descreve um subconjunto adequado do EmulatorAccessEntries que o driver de miniporto configurou em VIDEO_PORT_CONFIG_INFO. Definir o RangeVisible membro de um elemento AccessRange para VERDADEIRO permite o acesso direto ao intervalo de portas de E/S pelo aplicativo de MS-DOS de tela inteira. Definir um membro do RangeVisible para false causa INemitidos pelo aplicativo, INSB/INSW/INSD, OUTs e/ou OUTSB/OUTSW/OUTSD para esse intervalo a serem presos e encaminhados para o driver de miniporto correspondente função SvgaHwIoPortXxx para validação.
A matriz AccessRange passada para VideoPortSetTrappedEmulatorPorts deve ser um subconjunto adequado dos intervalos de portas de E/S que a função HwVidFindAdapter configurada na matriz EmulatorAccessEntries da estrutura VIDEO_PORT_CONFIG_INFO. Todos os intervalos de portas de E/S na matriz de intervalos de acesso que não estão incluídos na matriz de EmulatorAccessEntries são presos e refletidos no modo de usuário VDD.
Valor de retorno
VideoPortSetTrappedEmulatorPorts retornará NO_ERROR se tiver alterado com êxito as portas presas. Caso contrário, ele retornará ERROR_INVALID_PARAMETER.
Observações
Por padrão, o AccessRange de portas de E/S que os aplicativos de 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 do da estrutura de VIDEO_PORT_CONFIG_INFO. Ou seja, os intervalos de portas 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 SvgaHwIoPortXxxx 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 de MS-DOS de tela inteira acesse essas portas de E/S diretamente, sem ter as instruções de assembly emitidas pelo aplicativo presas e encaminhadas para as funções de 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 até o último, habilitando e desabilitando portas de E/S conforme direcionado em cada elemento. Observe que um intervalo de portas habilitadas (o membro RangeVisible definido como TRUE) poderá 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 miniporto pode habilitar uma ampla gama de portas de E/S no elemento inicial da matriz de AccessRange e desabilitar seletivamente subranges de portas em elementos de matriz subsequentes quando chama VideoPortSetTrappedEmulatorPorts.
Todos os aplicativos de 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 de HwVidStartIO de um driver de miniporto compatível com VGA é chamada com o vrp IOCTL_VIDEO_ENABLE_VDM. Em seguida, o driver de miniporto deve reinicializar um conjunto padrão de portas de E/S diretamente acessíveis, que pode incluir todas as portas na matriz EmulatorAccessEntries.
Ao fornecer aplicativos MS-DOS em 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 pendure o computador. Em particular, esses drivers de miniporto devem sempre interceptar 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 interceptar e validar a E/S direta emitida pelo aplicativo que poderia fazer com que o computador travasse para qualquer subconjunto adicional dependente de adaptador de portas de E/S.
Chamar VideoPortSetTrappedEmulatorPorts novamente e redefinir o RangeVisible membro de um elemento AccessRange para FALSE faz com que as instruções emitidas pelo aplicativo para esse intervalo sejam encaminhadas para o driver de miniporto correspondente função SvgaHwIoPortXx.
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 |