Interrupções de hardware
Alguém parece ter dito a você que o Windows NT é executado no topo do BIOS, do qual você deduziu que as interrupções são colocadas em campo pelo BIOS, que "aumenta para o Windows".
Isso é completamente errado e um modelo errôneo de como o sistema operacional funciona. Além da ACPI, do modo de gerenciamento do sistema e do suporte VESA (para alguns adaptadores de vídeo), o firmware do BIOS não está envolvido em nada quando o Windows está em execução. Interrupções (SMM à parte) não são colocadas em campo pelo BIOS. Eles são colocados em campo pela Camada de Abstração de Hardware do Windows, que faz todos os pokery de baixo nível com APICs, IDTs e vetores de interrupção necessários para o preenchimento de interrupções e entrega para o kernel do Windows.
Para rastrear a manipulação de sinais de interrupção no Windows NT, é necessário um debug kernel , comunicando-se com um utilitário debugger do kernel . Então, é possível fazer coisas com comandos do depurador, como !idt
, !apic
e assim por diante.
Instruções de interrupção
Para chamar funções na API de firmware do BIOS - que são (principalmente, mas não universalmente) invocadas com a instrução int
e, portanto, confusamente também "interrupções enviadas para o BIOS" - e Para rastrear sua execução, você precisa do DOS (ou algum outro sistema operacional de modo real de 16 bits). Em particular, você precisa de uma ferramenta de depuração do DOS. Você pode executar essa ferramenta em um DOS real, como o OpenDOS ou o FreeDOS, ou em uma máquina DOS virtualizada, como o NTVDM no Windows NT. Esteja ciente de que a última máquina DOS virtual afetará a funcionalidade do firmware.
Não é possível invocar funções da API de firmware do BIOS - que esperam que o processador (variavelmente) esteja no modo real de 16 bits, no modo protegido de 16 bits v8086 ou no modo protegido de 0 bits de 16 bits - em anel protegido de 32 bits 3 modo. O código da máquina simplesmente não será executado corretamente, mesmo se você tivesse uma maneira de mapeá-lo na memória virtual. Tal funcionalidade de firmware é simplesmente inacessível do modo de aplicativo em sistemas operacionais como o Windows NT ou Linux. (Não é realmente útil para aplicativos em tais sistemas operacionais, de qualquer maneira.)