PVIDEO_HW_FIND_ADAPTER função de retorno de chamada (video.h)
HwVidFindAdapter executa a inicialização de dados específicos para o driver de miniporto e dispositivos compatíveis com o driver de miniporto.
Sintaxe
PVIDEO_HW_FIND_ADAPTER PvideoHwFindAdapter;
VP_STATUS PvideoHwFindAdapter(
PVOID HwDeviceExtension,
PVOID HwContext,
PWSTR ArgumentString,
PVIDEO_PORT_CONFIG_INFO ConfigInfo,
PUCHAR Again
)
{...}
Parâmetros
HwDeviceExtension
Ponteiro para a área de armazenamento por dispositivo do driver. Para obter mais informações, consulte de Extensões de Dispositivo.
HwContext
É NULL e deve ser ignorado pelo driver de miniporto.
ArgumentString
Ponteiro para uma cadeia de caracteres ASCII terminada em nulo que se origina com o usuário. Esse ponteiro pode ser NULL.
ConfigInfo
Ponteiro para uma estrutura VIDEO_PORT_CONFIG_INFO. O driver de porta de vídeo aloca memória e inicializa essa estrutura com qualquer informação de configuração conhecida, como o número do barramento de E/S do sistema e os valores que o driver de miniporto definiu na estrutura VIDEO_HW_INITIALIZATION_DATA.
Again
Deve ser ignorado pelo driver de miniporto.
Valor de retorno
HwVidFindAdapter deve retornar um dos seguintes códigos de status:
Código de retorno | Descrição |
---|---|
ERROR_DEV_NOT_EXIST | Indica, para um ônibus reenumerável, que o motorista do miniport não pôde encontrar o dispositivo. |
ERROR_INVALID_PARAMETER | Indica que o driver de miniporto não pôde configurar ou inicializar o adaptador com êxito. |
NO_ERROR | Indica êxito. |
Observações
Cada driver de miniporto de vídeo deve ter uma função HwVidFindAdapter.
O driver de porta de vídeo faz o seguinte antes de chamar HwVidFindAdapter:
- Aloca o armazenamento para a área de armazenamento por adaptador do driver de miniporto de acordo com o valor de HwDeviceExtensionSize que a função DriverEntry do driver do miniporto especificada na estrutura VIDEO_HW_INITIALIZATION_DATA e inicializa o armazenamento alocado.
- Aloca o armazenamento para uma estrutura VIDEO_PORT_CONFIG_INFO e preenche todas as informações disponíveis com base em informações fornecidas pelo driver de miniporto em VIDEO_HW_INITIALIZATION_DATA.
A função HwVidFindAdapter para dispositivos em um barramento enumerável deve fazer o seguinte:
- Verifique o tamanho da estrutura de VIDEO_PORT_CONFIG_INFO à qual ConfigInfo aponta para garantir o controle de versão adequado.
- Chame VideoPortGetAccessRanges para obter os endereços físicos relativos ao barramento aos quais o dispositivo responderá. Esses endereços são atribuídos pelo gerenciador PnP. O driver de miniporto deve passar NULL nos parâmetros VendorId, DeviceIde Slot de VideoPortGetAccessRanges.
- Para drivers de miniporto que dão suporte a vários tipos de dispositivo, determine o tipo de dispositivo detectado pelo gerenciador PnP. O driver de miniporto pode chamar VideoPortGetBusData para obter informações de configuração de PCI.
- Preencha todas as informações de configuração relevantes, mas ausentes, nos membros apropriados da estrutura VIDEO_PORT_CONFIG_INFO com dados específicos do adaptador.
HwVidFindAdapter pode alocar recursos, como memória e bloqueios, para uso pelo driver de miniporto. Esses recursos podem ser específicos do dispositivo ou podem ser compartilhados por vários dispositivos aos quais o driver de miniporto dá suporte. Se HwVidFindAdapter retornar qualquer valor diferente de NO_ERROR, ele deverá liberar todos os recursos específicos do dispositivo antes de retornar. Para recursos compartilhados entre vários dispositivos, HwVidFindAdapter deve manter uma contagem de referência. Por exemplo, a contagem de referências pode indicar o número de chamadas anteriores para HwVidFindAdapter que foram bem-sucedidas. Dessa forma, se HwVidFindAdapter falhar e determinar que todas as chamadas anteriores para HwVidFindAdapter falharam, isso poderá liberar os recursos compartilhados.
Se HwVidFindAdapter falhar sempre que for chamado pelo driver de porta de vídeo, o sistema operacional poderá descarregar o driver de miniporto mais tarde. Nesse caso, todos os recursos que HwVidFindAdapter alocados, mas não foram gratuitos, vazarão.
Para um dispositivo em um barramento reenumerável, como o ISA, o PnP ainda tenta iniciar o dispositivo, embora seja responsabilidade do HwVidFindAdapter para determinar se o dispositivo está realmente presente. Se o dispositivo não for encontrado, HwVidFindAdapter deverá retornar ERROR_DEV_NOT_EXIST.
HwVidFindAdapter também deve chamar VideoPortSetRegistryParameters para armazenar informações específicas do adaptador na chave HardwareInformation. Essas informações são usadas pelo programa Display no Painel de Controle. Consulte Definindo informações de hardware no do Registro para obter detalhes.
Dependendo do adaptador e do AdapterInterfaceType no VIDEO_PORT_CONFIG_INFO, HwVidFindAdapter pode chamar algumas das seguintes funções VideoPortXxx para obter os dados de configuração relativos ao barramento necessários e os intervalos de acesso mapeados para se comunicar com o adaptador:
-
VideoPortGetBusData para obter informações de configuração específicas do tipo de ônibus sobre um adaptador em um determinado barramento de E/S.
-
VideoPortGetDeviceData para obter informações específicas VIDEO_DEVICE_DATA_TYPE do registro e chamar HwVidQueryDeviceCallback para processar essas informações.
-
VideoPortGetRegistryParameters para obter informações de configuração do registro.
-
VideoPortGetAccessRanges para obter endereços de intervalos de acesso relativos ao barramento e possivelmente outros valores de configuração de hardware e reivindicá-los no registro para uso pelo driver de um adaptador.
-
VideoPortVerifyAccessRanges para determinar se as portas de memória e/ou E/S relativas ao barramento para o adaptador podem ser reivindicadas pelo driver de miniporto; caso contrário, um driver carregado anteriormente já reivindicou o recurso no registro e HwVidFindAdapter deve tentar reivindicar outros intervalos de acesso, se possível ou falhar.
-
VideoPortGetDeviceBase para mapear cada endereço base e tamanho de intervalo relativos ao barramento, conforme descrito em uma estrutura VIDEO_ACCESS_RANGE, para espaço do sistema endereços lógicos. HwVidFindAdapter deve chamar com êxito VideoPortVerifyAccessRanges ou VideoPortGetAccessRanges antes de chamar VideoPortGetDeviceBase.
HwVidFindAdapter não deve deixar um adaptador sem suporte com o estado alterado. Para adaptadores VGA/SVGA, HwVidFindAdapter deve deixar o adaptador em um estado VGA e restaurar todos os registros estendidos que ele possa ter modificado para sua condição original.
HwVidFindAdapter deve ficar paginável.
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Área de trabalho |
cabeçalho | video.h (inclua Video.h) |
Consulte também
DriverEntry do de Driver de Miniporto de Vídeo