Recursos brutos e traduzidos
Quando a função de retorno de chamada EvtDeviceRemoveAddedResources ou EvtDevicePrepareHardware de um driver recebe uma lista de recursos, ela recebe duas versões da lista. Uma versão representa os recursos brutos do dispositivo e a outra representa os recursos traduzidos do dispositivo. Ambas as versões representam o mesmo conjunto de recursos de hardware, na mesma ordem.
Recursos brutos são recursos identificados por endereços relativos ao barramento ao qual o dispositivo está conectado. Normalmente, o driver que programa o dispositivo fornece esses endereços para o dispositivo.
Os recursos traduzidos são recursos identificados por endereços físicos do sistema que os drivers usam para acessar os recursos.
Um driver para um dispositivo de barramento PCI recebe recursos listados na ordem em que aparecem nos BARs (Registros de Endereços Base ) do dispositivo. No entanto, descritores de recursos adicionais podem ser intercalados na lista, de modo que o recurso no índice X na BARRA pode não corresponder ao recurso na mesma posição de índice na lista de recursos.
Para obter mais informações sobre recursos brutos e traduzidos, consulte as descrições de membro para a estrutura CM_PARTIAL_RESOURCE_DESCRIPTOR .
Se a lista de recursos traduzidos de um dispositivo contiver um recurso com o membro Type da estrutura CM_PARTIAL_RESOURCE_DESCRIPTOR definida como CmResourceTypeMemory, todos os driveres que acessam esse recurso deverão fazer o seguinte:
- A função de retorno de chamada EvtDevicePrepareHardware do driver deve chamar MmMapIoSpace para mapear endereços físicos do sistema para endereços virtuais do sistema.
- A função de retorno de chamada EvtDeviceReleaseHardware do driver deve chamar MmUnmapIoSpace para desmarcar os endereços.
Para obter mais informações sobre o mapeamento de endereços relativos ao barramento, consulte Mapeamento Bus-Relative endereços para endereços virtuais.