Почти дописал legacy драйвер, но осталось пару вопросов. WDK используется последний, 6001 beta3 + vs2005.
1. В каталоге objchk_w2k_x86\i386\ компилятор создал файл листинга (кстати, как это слово на русский перевести?) driver.asm. Вроде все нормально, но при следующим запуске build получаю ошибку. Оказывается кто-то вызвал ml.exe для компиляции этого листинга!
Это что за самодеятельность? Разумеется файлов sources и dirs в этом каталоге нет, а в макросе SOURCES есть только driver.cpp.
2. Почему не используется опция компилятора /Oy даже в релизе? Какой от нее вред?
3. Почему при создании драйвера не используется опция линкера /merge:.rdata=.text? Я проверил, все атрибуты секций совпадают, включая nonpageable.
4. Вопрос из области теории.
Если код драйвера выполняется в IRQL=PASSIVE_LEVEL, то он может быть прерван виндою и переключен на другой поток даже на одноядерной тачке и этот поток может заново вызвать мой драйвер?
Здравствуйте, CoolCmd,
CC> WDK используется последний, 6001 beta3 + vs2005.
CC>1. В каталоге objchk_w2k_x86\i386\ компилятор создал файл листинга (кстати, как это слово на русский перевести?) driver.asm. Вроде все нормально, но при следующим запуске build получаю ошибку. Оказывается кто-то вызвал ml.exe для компиляции этого листинга! Это что за самодеятельность? Разумеется файлов sources и dirs в этом каталоге нет, а в макросе SOURCES есть только driver.cpp.
--
Чтобы понять, почему появляется такие файлы, стоит посмотреть, наверное, *.log файл сборки драйвера, а затем и файлы в директории \bin (*.bat, *.inc, *.def, *.new, *.plt).
CC>2. Почему не используется опция компилятора /Oy даже в релизе? Какой от нее вред?
--
Польза от нее может быть для упрощения "раскрутки стека", например, во время той же BSOD.
...
CC>4. Вопрос из области теории. Если код драйвера выполняется в IRQL=PASSIVE_LEVEL, то он может быть прерван виндою и переключен на другой поток даже на одноядерной тачке и этот поток может заново вызвать мой драйвер?
--
Да.
C уважением,
Геннадий Майко.
Здравствуйте, Геннадий Майко, Вы писали:
ГМ>Чтобы понять, почему появляется такие файлы, стоит посмотреть, наверное, *.log файл сборки драйвера, а затем и файлы в директории \bin (*.bat, *.inc, *.def, *.new, *.plt).
Листинг создал я сам. Вопрос не в том, почему он появился, а почему он начал компилироваться.
CC>>2. Почему не используется опция компилятора /Oy даже в релизе? Какой от нее вред?
ГМ>Польза от нее может быть для упрощения "раскрутки стека", например, во время той же BSOD.
Т.е. для отладки? Значит можно выкинуть.
CC>>4. Вопрос из области теории. Если код драйвера выполняется в IRQL=PASSIVE_LEVEL, то он может быть прерван виндою и переключен на другой поток даже на одноядерной тачке и этот поток может заново вызвать мой драйвер?
ГМ>Да.
Спасибо.