Здравствуйте, LimyKurn, Вы писали:
LK>Так UNICODE_STRING я не просто так предлагаю, а для решения то самой проблемы.
UNICODE_STRING, vector или просто wchar_t — это не важно. Пока у тебя не будет синхронизации доступа к
этой переменной, работать твой драйвер корректно не будет.
LK>Про verifier — спасибо, гляну. А что именно он дает, в 2 словах?
Verifier позволяет быстрее обнаруживать различные скрытые ошибки, которые в нормальных условиях обычно
не проявляются сразу или проявляются спустя долгое время, когда программа уже в релизе.
Ну например, ты обращаешься к paged-памяти на DISPATCH_LEVEL. В нормальных условиях это иногда
может работать месяцами и годами, не выпадая в BSOD, а затем вдруг начинает падать (как правило, в
самый неожиданный и неудачный момент).
Когда ты включаешь соответствующую проверку в Verifier, он принудительно сбрасывает paged-память на
диск при повышении IRQL, так что данная ошибка всплывает практически сразу.