Initially, a SMI trap detects an application accessing a memory location
associated with a physical hardware device. The SMI trap receives the
device address for the address bus and compares that address with memory
addresses for hardware devices being virtualized by virtual device
simulators. If the address matches an available virtual device, the SMI
caches the address, hooks and caches the corresponding IO instruction for
the memory address and issues a SMI. A SMI handler receives the SMI and
determines which virtual device simulator to call. Once activated by the
SMI handler, the virtual device simulator interacts with the application
and then returns control to the processor.
Inicialmente, uma armadilha do SMI detecta uma aplicação alcançar uma posição de memória associada com um dispositivo de ferragem físico. A armadilha do SMI recebe o endereço de dispositivo para a barra-ônibus de endereço e compara esse endereço com os endereços de memória para os dispositivos de ferragem que são virtualized por simuladores do dispositivo virtual. Se o endereço combinar um dispositivo virtual disponível, o SMI caches o endereço, os ganchos e os esconderijos a instrução correspondente do IO para o endereço e as edições de memória um SMI. Um alimentador do SMI recebe o SMI e determina que simulador do dispositivo virtual a se chamar. Ativado uma vez pelo alimentador do SMI, o simulador do dispositivo virtual interage com a aplicação e retorna então o controle ao processador.