Microsoft STL в своей лекции кратко намекнул, что у STL есть проблемы с взаимодействием в режиме ядра. Может кто-нибудь объяснить, что он имел в виду?
Код режима ядра использует несколько собственных расширений Microsoft для C ++, в частности, для определения того, на каком уровне IRQ может выполняться код. Если вы ошиблись, Windows может отобразить синий экран с ошибкой «Driver IRQL Not Less or Equal».
К сожалению, эти расширения не совместимы с шаблонами C ++ или виртуальными функциями. Причина в том, что компилятор C ++ неявно создает экземпляры шаблонов и таблиц vtables, но не может применить правильную настройку IRQL, потому что нет явного момента создания экземпляра, из которого можно получить правильный уровень.
Других решений пока нет …