Como os executáveis do Win32 exibem mensagens de incompatibilidade quando executados no DOS?

0

Enquanto inspecionava os executáveis Win32, eu os encontrei contendo a string This program cannot be run in DOS mode , que é exatamente a coisa impressa quando esses executáveis são executados dentro dos emuladores DOS, como o DOSBox.

Isso me leva à conclusão de que o executável tem dois caminhos - um é ocupado pelo DOS (o que faz com que a mensagem acima seja exibida) e outro pelo Windows, o que faz com que o programa principal seja executado.

Como essa coisa de "dois caminhos" é realmente cumprida?

    
por user2064000 17.07.2013 / 06:50

1 resposta

2

Resposta curta: todo arquivo EXE começa com um executável do DOS.

Resposta longa:

The MS-DOS Header

Every PE file begins with a small MS-DOS® executable. The need for this stub executable arose in the early days of Windows, before a significant number of consumers were running it. When executed on a machine without Windows, the program could at least print out a message saying that Windows was required to run the executable.

Ref: edição de fevereiro de 2002 da MSDN Magazine Por dentro do Windows - Um exame detalhado do executável portátil Win32 Formato de arquivo

O carregador de programas do Windows apenas ignora esse stub. O DOS carrega e executa como qualquer outro executável do DOS.

    
por 17.07.2013 / 09:59