Несколько вопросов по написанию kernel-mode драйвера.
От: CoolCmd Россия  
Дата: 01.09.07 19:35
Оценка:
Почти дописал 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, то он может быть прерван виндою и переключен на другой поток даже на одноядерной тачке и этот поток может заново вызвать мой драйвер?
простите, я убил небо
Re: Несколько вопросов по написанию kernel-mode драйвера.
От: Геннадий Майко США  
Дата: 02.09.07 07:03
Оценка:
Здравствуйте, 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 уважением,
Геннадий Майко.
Re[2]: Несколько вопросов по написанию kernel-mode драйвера.
От: CoolCmd Россия  
Дата: 02.09.07 10:04
Оценка:
Здравствуйте, Геннадий Майко, Вы писали:

ГМ>Чтобы понять, почему появляется такие файлы, стоит посмотреть, наверное, *.log файл сборки драйвера, а затем и файлы в директории \bin (*.bat, *.inc, *.def, *.new, *.plt).

Листинг создал я сам. Вопрос не в том, почему он появился, а почему он начал компилироваться.

CC>>2. Почему не используется опция компилятора /Oy даже в релизе? Какой от нее вред?

ГМ>Польза от нее может быть для упрощения "раскрутки стека", например, во время той же BSOD.
Т.е. для отладки? Значит можно выкинуть.

CC>>4. Вопрос из области теории. Если код драйвера выполняется в IRQL=PASSIVE_LEVEL, то он может быть прерван виндою и переключен на другой поток даже на одноядерной тачке и этот поток может заново вызвать мой драйвер?

ГМ>Да.
Спасибо.
простите, я убил небо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.