Вы не сможете запустить приложение MFC до запуска Windows, потому что по определению MFC запускает библиотеки DLL Windows, которые не загружаются до тех пор, пока не загрузится сама Windows. Не говоря уже о том, что именно Windows отвечает за загрузку PE в первую очередь, поэтому вы даже не сможете загрузить скомпилированный EXE или DLL без специального загрузчика.
Для того, чтобы сделать то, что вы хотите сделать, у вас есть несколько вариантов. Существуют (простые) способы настройки Windows для загрузки приложения при запуске. Если это то, что вы хотите, то это вполне возможно.
Однако, если вы хотите выполнить код до и во время запуска Windows, то вы должны сначала перезаписать загрузчик (что-то вроде GRUB), выполнить свой код (опять же, у вас не будет доступа к каким-либо стандартной библиотеке - вам придется работать непосредственно с буферами, предоставленными вам ЦП, если вы хотите выполнять какой-либо ввод-вывод), затем запустите окна, запустив его загрузчик. Я понятия не имею, как это сделать; но это общий обзор того, что должно произойти.
Вы упомянули внедрение DLL, что является еще одной возможностью. Я не знаю, какие библиотеки DLL и в каком порядке загружаются при запуске Windows. Это будет для вас упражнением. Что вам нужно будет принять во внимание, так это то, что чем выше уровень, на котором вы хотите существовать (т. Е. Какие библиотеки доступны для вас, чтобы выполнять файловый/консольный ввод-вывод), тем выше вам нужно выполнять свой код в процессе запуска Windows. .
Я предлагаю вам просто написать программу, которая выполняется как служба, которая запускается во время инициализации Windows. Это легко сделать, и у вас будет весь HAL загружен и готов к фактическому выполнению задач - вместо этого вам придется писать драйверы для конкретных устройств, чтобы манипулировать оборудованием до того, как окно загрузит HAL.
person
Community
schedule
16.07.2009