上周在XP系统上测试一个驱动的时候,发现驱动加载不上,“net start”命令只是给出一个无意义的错误代码,驱动的DriverEntry()入口程序还没有得到机会运行。
初步怀疑是引入函数的问题,用WDK工具Depends.exe查看了一下驱动文件,果然是由于_chkstk函数无法解析所导致。
_chkstk是个微软C编译器的辅助库函数,MSDN上对其介绍十分简略:
_chkstk Routine is a helper routine for the C compiler. For x86 compilers, _chkstk Routine is called when the local variables exceed 4096 bytes; for x64 compilers it is 8K.
当编译器察觉到局部变量太大超过限值时(X86系统限值是4K,X64t系统上是8K), 编译器会自动插入_chkstk这个函数以保证栈空间所使用页面在内存中。
问题是发现了,但要查出来究竟在哪个函数中还是要费些心思的。从用户层移植过来不少代码,基本锁定问题出在其中,但如果一个函数一个函数寻找实在是个不讨巧的笨办法,也不符合程序人的一贯风格,便用IDA反编译驱动sys文件,于汇编代码中搜索_chkstk字串,直接锁定出了问题函数。此函数所使用的一个结构体中定义了超大数组,对栈的超常使用在内核中是相当危险的。
解决办法很简单,直接将此结构的定义放在一个从内存分配的结构中即可。问题虽已解决,但对于DDK中有关_chkstk的描述,及其相关的疑问一直让我觉得困扰,比如,为什么X86上是4K,而AMD64架构上可以是8K。
这两天终于有了时间,可以彻底地了结这个疑问了。
要想解决这个问题,还要先从用户栈的分配开始。以ReactOS代码为例,当线程创建时,CreateThread()会调用BasepCreateStack()来创建用户栈,具体可以参见ReactOS源码:
~/ReactOS/lib/kernel32/misc/utils.c。
BasepCreateStack()函数主要做三件事:
- 1,分配栈空间所需的虚拟内存,大小为Stack Reserve Size
- 2,根据Stack Commit Size锁定内存页面,如果Stack Commit Size小于Stack Reserve Size的话,需要增加一个Page,这个额外申请的Page用作Guard Page之用。
- 3,将栈底部的Page设定为Guard Page。
当用户栈被用尽时,会访问到栈底部的Guard Page。而对Guard Page的任何访问都会导致Page Fault的发生。Page Fault处理函数MmAccessFault()可以分析出此次Page Fault是由Guard Page导致,便会默认由用户栈处理程序MiCheckForUserStackOverflow()来处理。如果用户栈并没有溢出的话,即Stack Commit Size小于Stack Reserve Size的情况,MiCheckForUserStackOverflow()会自动向下扩展栈空间,扩展大小为GUARD_PAGE_SIZE。 GUARD_PAGE_SIZE针对不同的CPU架构有不同的定义:
X64: #define GUARD_PAGE_SIZE (PAGE_SIZE * 2)
X86: #define GUARD_PAGE_SIZE PAGE_SIZE
这里便解释了为什么X86系统上的限制是4K(即PAGE_SIZE),而X64上却为8K的原因。
说到此处,该是解答_chkstk()倒底是干什么的时候了。Visual Studio中有_chkstk的源码,以x86为例:
输入参数eax是所需堆栈大小(字节)
labelP _chkstk, PUBLIC
push ecx ; save ecx
cmp eax,_PAGESIZE_ ; more than one page requested?
lea ecx,[esp] + 8 ; compute new stack pointer in ecx
; correct for return address and
; saved ecx
jb short lastpage ; no
;------------
probepages:
sub ecx,_PAGESIZE_ ; yes, move down a page
sub eax,_PAGESIZE_ ; adjust request and...
test dword ptr [ecx],eax ; ...probe it (如果是guard page,刚会导致page fault,最终用户栈
; 将向下扩展一个页面)
cmp eax,_PAGESIZE_ ; more than one page requested?
jae short probepages ; no
lastpage:
sub ecx,eax ; move stack down by eax
mov eax,esp ; save current tos and do a...
test dword ptr [ecx],eax ; ...probe in case a page was crossed
; 调用函数将要访问的堆栈底部 ,如果此页面为guard page,同
; 样会导致用户栈的向下延伸
mov esp,ecx ; set the new stack pointer
; 向下更改栈指针,其上直到原ESP的栈空间为调用函数局部变量
mov ecx,dword ptr [eax] ; recover ecx
mov eax,dword ptr [eax + 4] ; recover return address
; 将返回地址(调用函数中)放入eax
push eax ; prepare return address
; 将返回地址(调用函数中)放入当前栈中,准备返回
; ...probe in case a page was crossed
ret
end
_chkstk()的主要作用是保证栈向下连续的生长。如果没有_chkstk(),当局部变量太多并超过guard page下沿时,若再有压栈操作,将会导致Access violation错误。因为此时堆栈内存页面无效,压栈直接将导致page fault的发生,而page fault处理程序因不能识别此fault的发生原因从而不能做出正确判断和有效处理。
相对用户层,内核程序的处理则相当简单,就如Win7内核中_chkstk实际上就是个空函数。其原因就是内核线程的栈空间是固定的。其取值针对X86及X64架构亦有所不同:
X64: #define KERNEL_STACK_SIZE 0x6000 /* 6个内存页面 */
X86: #define KERNEL_STACK_SIZE 12288 /* 3个内存页面 */
内核中栈资源非常紧缺,并驱动程序的编写有较高的要求,特别是有递归的情况下,一定要注意嵌套的层数,否则很容易收到M$发来的蓝屏。
Windows内核中其实还有一种大堆栈机制,以确保一些对堆栈较高消耗的特殊情况能够得到满足,但这部分完全是黑箱,对用户不可见,不是常见情况,此处不再多述。
参考资料:
1, http://support.microsoft.com/kb/100775/en
2, http://msdn.microsoft.com/en-us/library/ms648426(v=vs.85).aspx
3, http://www.reactos.org ReactOS源码
Быстро собираем первичную информацию, оцениваем риски и предлагаем подходящий вариант обращения.
Получить больше информации – вывод из запоя цена Красноярск
Муж её пил неделю. А время шло. Анонимный нарколог на дом при запое — это когда врач приезжает сам. Потом стабилизируют давление. Срочный вывод из запоя на дому — И в выходные. Можете ознакомиться по ссылке: вывод из запоя на дому круглосуточно https://vyvod-iz-zapoya-v-krasnoyarske-ikm.ru И про срочный выезд по городу. Иногда промедление стоит здоровья.
Помню, соседка жаловалась. А время шло. Вызов нарколога на дом запой — это когда врач приезжает сам. И только после этого становится легче. Вызвать врача для вывода из запоя — работает круглосуточно. Советую глянуть источник: запой вызов нарколога запой вызов нарколога Там и про вывод из запоя вызов для Московской области. Не ждите, пока станет хуже.
Вызов нарколога на дом востребован, когда пациент не готов ехать в клинику, плохо переносит запой или нуждается в медицинском осмотре в привычной обстановке. Лечение может начинаться дома, но дальнейшее лечение алкоголизма, кодирование и реабилитация нередко продолжаются в клинике. Наркологическая служба оценивает ситуацию индивидуально.
Изучить вопрос подробнее – нарколог на дом вывод
Муж её пил неделю. Она в панике звонила всем подряд. Вывод из запоя — Осматривает, ставит капельницу. Потом стабилизируют давление. Прерывание запоя на дому — Без осуждения и лишних вопросов. Можете ознакомиться по ссылке: вывод из запоя на дому анонимно https://vyvod-iz-zapoya-v-krasnoyarske-ikm.ru Там и про вывод из запоя на дому цена для Красноярского края. Не тяните до последнего.
Жена на нервах была. Оказалось, опять сорвался. Анонимный нарколог на дом при запое — это когда врач приезжает сам. Потом давление выравнивают. Вывод из запоя на дому круглосуточно — работает и ночью. Советую глянуть источник: выведение из запоя на дому выведение из запоя на дому И про капельницу для вывода из запоя для региона. Не ждите, пока станет хуже.
Вывод из запоя нужен, когда после длительного приема спиртного самочувствие заметно ухудшается и самостоятельно прекратить цикл не получается. В Красноярске помощь можно организовать на дому или в профильном отделении: формат выбирается по тяжести ситуации, возрасту, длительности эпизода и сопутствующим факторам. Нарколог оценивает жалобы, уточняет, сколько длился период, когда был последний прием алкоголя, какие препараты принимались ранее и были ли осложнения. Такой подход позволяет подобрать безопасное лечение без универсальных схем.
Подробнее – https://vyvod-iz-zapoya-krasnoyarsk67.ru/
Обратиться к наркологу стоит, если запой продолжается несколько дней, человек не может остановиться, появилась сильная слабость, тревога, бессонница или тремор. Состояние после алкоголя зависит от стажа зависимости, количества спиртного и сопутствующих болезней. Врач определяет, подходит ли вывод из запоя на дому или необходима клиника.
Подробнее – вывод из запоя капельница Екатеринбург
Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев.
Получить больше информации – https://3.kapelnica-ot-zapoya-v-moskve14.ru/
После первичного разговора врач собирает анамнез, уточняет длительность запоя, количество выпитого, возраст, аллергию, хронические диагнозы и лекарства, которые принимаются регулярно. Медицинский осмотр дает данные для выбора схемы, а специалисты учитывают сведения о ранее назначенных средствах. Затем оцениваются давление, пульс, сознание, выраженность тремора и признаки обезвоживания. При необходимости центр использует экспресс-диагностику. После осмотра такой подход позволяет сформировать схему, подобрать объем раствора и определить скорость введения.
Подробнее – https://1.kapelnica-ot-zapoya-v-moskve14.ru/
Мать её отказывалась идти к врачу. Вызвать психиатра на дом оказалось проще. Консультация психиатра на дому — Разговаривает, оценивает состояние. Потом подбирают терапию. Психотерапевт на дом Москва — И для пожилых. Вся информация доступна здесь: консультация психиатра на дому https://psikhiatr-na-dom-v-moskve-qaz.ru И про услуги психиатра на дому для Московской области. Обращайтесь к специалистам.
Абстинентный синдром отличается от обычного похмелья. При сформированной зависимости алкоголь становится частью нарушенных обменных процессов, поэтому внезапная отмена этанола вызывает выраженную реакцию нервного и вегетативного характера. Состояние пациента может ухудшаться в течение нескольких часов после последней дозы спиртного. Возникают тревога, тремор, повышенная потливость, тахикардия, бессонница, тошнота, рвота, скачки давления и нарушения поведения.
Подробнее – срочный вывод из запоя Красноярск
Заказать нарколога на дому можно круглосуточно. Выезжаем по городу, включая Ленинский, Кировский, Октябрьский, Чкаловский, Железнодорожный, Орджоникидзевский и другие районы Екатеринбурга. Возможность приезда в пригороды Свердловской области уточняет оператор call-центра.
Ознакомиться с деталями – вывод из запоя на дому
Помню, сосед три дня не выходил из квартиры. Нужен был срочный вывод из запоя. Анонимный нарколог на дом при запое — Осматривает, ставит капельницу. Потом давление выравнивают. Вывод из запоя на дому круглосуточно — И в выходные. Советую глянуть источник: выведение из запоя на дому выведение из запоя на дому Там и про вывод из запоя на дому цена по городу. Иногда промедление стоит жизни.
И родные не знают, куда звонить. Вывод из запоя — дело серьёзное. Запой нарколог на дом — Осматривает, ставит капельницу. И только после этого становится легче. Вызов нарколога на дом запой — Без осуждения и лишних вопросов. Можете ознакомиться по ссылке: вызвать врача для вывода из запоя https://vyvod-iz-zapoya-v-moskve-pwu.ru И про помощь нарколога для Московской области. Иногда промедление стоит здоровья.
Самостоятельный отказ от спиртного кажется простым решением, однако при зависимости резкая отмена способна усиливать тревогу, бессонницу, вегетативные реакции и судорожную готовность. Некоторые люди пытаются сделать домашний детокс, используют седативные препараты без назначения или снова выпивают, чтобы стало легче. Такое поведение повышает риск отравления, угнетения дыхания и опасного сочетания медикаментов с алкоголем.
Узнать больше – https://1.vyvod-iz-zapoya-balashiha13.ru/
Дверь заперта, телефон не берёт. Запой жуткий, сам не остановится. Вывод из запоя — это когда врач приезжает сам. И голова начинает соображать. Вывод из запоя на дому круглосуточно — И в выходные. Советую глянуть источник: вывод из запоя на дому вывод из запоя на дому Там и про вывод из запоя на дому цена для Красноярского края. Обращайтесь к специалистам.
Дверь заперта, телефон не берёт. Нужен был срочный вывод из запоя. Вывод из запоя — это когда врач приезжает сам. Сначала уходит интоксикация. Нарколог вывод из запоя — работает и ночью. Вся информация доступна здесь: вызвать врача для вывода из запоя https://vyvod-iz-zapoya-v-moskve-ovt.ru И про срочный выезд для Московской области. Иногда промедление стоит жизни.
В статье по вопросам здоровья мы рассматриваем актуальные проблемы, с которыми сталкивается общество. Обсуждаются заболевания, факторы риска и важные аспекты профилактики. Читатели получат полезные советы о том, как сохранить здоровье и улучшить качество жизни.
Детали по клику – наркологическая клиника в санкт-петербурге
Мать её отказывалась идти к врачу. Вызвать психиатра на дом оказалось проще. Платный психиатр на дом — Разговаривает, оценивает состояние. Сначала снимают острое состояние. Психиатр на дом для пожилого человека — работает и для взрослых. Вся информация доступна здесь: вызов психиатрической помощи на дом https://psikhiatr-na-dom-v-moskve-qaz.ru Там и про детского психиатра на дом в Москве. Иногда один визит решает всё.
И сам уже не в состоянии остановиться. Тут голова кругом идёт. Вывод из запоя — Осматривает, ставит капельницу. И только после этого становится легче. Срочный вывод из запоя на дому — И в выходные. Можете ознакомиться по ссылке: быстро вывести из запоя на дому быстро вывести из запоя на дому Там и про вывод из запоя на дому цена в Иркутске. Не тяните до последнего.
Особого внимания требуют ситуации, когда появляются:
Получить больше информации – pomoshch-vyvod-iz-zapoya
В этой статье обсуждаются актуальные медицинские вопросы, которые волнуют общество. Мы обращаем внимание на проблемы, касающиеся здравоохранения и лечения, а также на новшества в области медицины. Читатели будут осведомлены о последних событиях и смогут следить за тенденциями в медицине.
Смотри, что ещё есть – “delta clinic ru
Говорила, что всё нормально, а сама не спала ночами. И это решило проблему. Платный психиатр на дом — И объясняет, что делать дальше. Сначала снимают острое состояние. Психотерапевт на дом Москва — работает и для взрослых. Вся информация доступна здесь: психиатр на дом москва психиатр на дом москва Там и про детского психиатра на дом по городу. Иногда один визит решает всё.
И родные не знают, куда звонить. Вывод из запоя — дело серьёзное. Вывод из запоя — это когда специалист приезжает сам. Сначала уходит интоксикация. Доктор нарколог вывод из запоя — Без осуждения и лишних вопросов. Вся информация доступна здесь: вывод из запоя вызвать нарколога вывод из запоя вызвать нарколога Там и про вывод из запоя вызов для Москвы. Иногда промедление стоит здоровья.
И родные не знают, куда звонить. И лучше доверить его врачу. Вывод из запоя — это когда специалист приезжает сам. Потом стабилизируют давление. Вызвать врача для вывода из запоя — Без осуждения и лишних вопросов. Можете ознакомиться по ссылке: выведение из запоя врачом наркологом https://vyvod-iz-zapoya-v-moskve-pwu.ru И про помощь нарколога для региона. Не тяните до последнего.
Мужик писал, что запой затянулся на две недели. И сказал, что нужен стационар. Выведение из запоя в стационаре — Днём и ночью. Сначала снимают интоксикацию. Вывод из запоя круглосуточно — работает и в тяжёлых случаях. Советую глянуть источник: спб нарколог вывод из запоя спб нарколог вывод из запоя И про стационар для жителей Северной столицы. Не тяните, если дома уже не справляетесь.
Специалисты регулярно помогают при интоксикации, запоях, абстиненции и сложных состояниях зависимости.
Ознакомиться с деталями – https://vyvod-iz-zapoya-v-ekaterinburge18.ru/
Бывает, человек пьёт неделю. Тут важно не тянуть. Запой нарколог на дом — И выводит человека из этого состояния. Потом стабилизируют давление. Вызов нарколога на дом запой — работает круглосуточно. Можете ознакомиться по ссылке: врач выводящий из запоя https://vyvod-iz-zapoya-v-moskve-pwu.ru И про срочный выезд для Москвы. Иногда промедление стоит здоровья.
Помню, сосед три дня не выходил из квартиры. Нужен был срочный вывод из запоя. Вывод из запоя — это когда врач приезжает сам. Сначала уходит интоксикация. Нарколог вывод из запоя — И в выходные. Вся информация доступна здесь: вызвать врача для вывода из запоя https://vyvod-iz-zapoya-v-moskve-ovt.ru И про помощь нарколога в Москве. Не ждите, пока станет хуже.
При наличии опасных симптомов не стоит просить больного потерпеть еще несколько часов или самостоятельно давать лекарства. Бригада оценивает ситуацию, а при угрозе жизни рекомендует экстренное обращение в профильное учреждение. Государственный диспансер, городские больницы и частная наркологическая клиника имеют разные условия приема, однако при неотложной ситуации главным остается своевременное оказание помощи.
Узнать больше – https://1.vyvod-iz-zapoya-balashiha13.ru/
Клиника начинает лечение с оценки жалоб и анамнеза. Диагностика помогает врачу определить риски и выбрать подходы. Специалисты изучают сведения из обследования и предыдущие назначения. Следует предоставить точные сведения.
Подробнее – анонимная наркологическая клиника
В клинику приходят люди с разным стажем зависимости. Один человек обращается после первого выраженного срыва, другой страдает несколько лет и уже проходил лечение. Иногда родственники привезли брата или другого близкого из деревни, поскольку там невозможно получить специализированную помощь по профилю. Нарколог оценивает употребление алкоголя и наркотических веществ, наличие хронических заболеваний, патологическое влечение и способность соблюдать рекомендации.
Получить больше информации – https://narkologicheskaya-klinika-v-krasnoyarske18.ru/
Поэтапная структура терапии делает лечение контролируемым и прогнозируемым, минимизируя риски возникновения осложнений и повторных обострений зависимости.
Детальнее – http://narkologicheskaya-klinika-v-spb16.ru
Помню, сосед три дня не выходил из квартиры. Нужен был срочный вывод из запоя. Вызов нарколога на дом запой — это когда врач приезжает сам. И голова начинает соображать. Нарколог вывод из запоя — И в выходные. Вся информация доступна здесь: запой нарколог на дом https://vyvod-iz-zapoya-v-moskve-ovt.ru Там и про вывод из запоя вызов для Москвы. Иногда промедление стоит жизни.
И сам уже не в состоянии остановиться. Куда звонить среди ночи. Вывод из запоя — Осматривает, ставит капельницу. Потом стабилизируют давление. Вывод из запоя на дому анонимно — работает и ночью. Можете ознакомиться по ссылке: лечение запоя на дому https://vyvod-iz-zapoya-v-irkutske-gty.ru И про капельницу для вывода из запоя для Иркутской области. Иногда промедление стоит здоровья.
Помогаем быстро перейти от консультации к конкретному плану: выезд, стационар или наблюдение.
Дополнительная информация – https://vyvod-iz-zapoya-v-ekaterinburge17.ru/
И сам уже не в состоянии остановиться. Не знаешь, за что хвататься. Выведение из запоя на дому — Осматривает, ставит капельницу. Сначала уходит интоксикация. Вывод из запоя на дому круглосуточно — Без осуждения и лишних вопросов. Можете ознакомиться по ссылке: лечение запоя на дому https://vyvod-iz-zapoya-v-irkutske-gty.ru И про капельницу для вывода из запоя в Иркутске. Не тяните до последнего.
Мужик писал, что запой затянулся на две недели. Вызвали нарколога. Вывод из запоя в стационаре — Днём и ночью. И только потом начинают основное лечение. Выведение из запоя в стационаре СПб — Когда дома уже не вариант. Советую глянуть источник: вывод из запоя в больнице https://zapoy.vyvod-iz-zapoya-v-staczionare-spb-gdi.ru И про стационар для Ленобласти. Иногда стационар — единственный выход.
А потом сам не может остановиться. Вывод из запоя — дело серьёзное. Запой нарколог на дом — И выводит человека из этого состояния. Сначала уходит интоксикация. Вызвать врача для вывода из запоя — работает круглосуточно. Вся информация доступна здесь: врач нарколог вывод из запоя врач нарколог вывод из запоя И про срочный выезд для Московской области. Не тяните до последнего.
Вспоминаю случай из практики. Жена вызвала нарколога. Выведение из запоя в стационаре — Круглосуточно. И только после этого начинают основное лечение. Выведение из запоя в стационаре СПб — Когда дома уже не вариант. Можете ознакомиться по ссылке: вывод из запоя адреса https://pohmelye.vyvod-iz-zapoya-v-staczionare-spb-gdi.ru Там и про вывод из запоя в клинике для Ленобласти. Не ждите, пока станет совсем плохо.
В статье рассматриваются различные стратегии борьбы с зависимостями, включая проверенные методы и реальные истории успеха. Читатель узнает, какие подходы наиболее эффективны и как начать путь к выздоровлению.
Продолжить изучение – лечение алкоголизма в санкт петербурге
И родные не знают, куда звонить. И лучше доверить его врачу. Запой нарколог на дом — Осматривает, ставит капельницу. Потом стабилизируют давление. Вызов нарколога на дом запой — И в выходные. Вся информация доступна здесь: вывод из запоя вызов нарколога https://vyvod-iz-zapoya-v-moskve-lny.ru И про помощь нарколога для Московской области. Обращайтесь к специалистам.
Программа лечения формируется после осмотра и может включать несколько этапов. Их количество и продолжительность зависят от клинической ситуации, физической зависимости, психического состояния и результатов предыдущего лечения. Врач может изменить план, если самочувствие меняется или требуется более интенсивная терапия.
Получить больше информации – narkologicheskaya-klinika-na-dom
На форуме как-то читал тему. Вызвали нарколога. Стационарный вывод из запоя — Днём и ночью. Сначала снимают интоксикацию. Вывод из запоя круглосуточно — Когда дома уже не вариант. Советую глянуть источник: вывод из запоя санкт петербург стационар вывод из запоя санкт петербург стационар Там и про вывод из запоя в клинике для Санкт-Петербурга. Не тяните, если дома уже не справляетесь.
Близкий человек отказывается идти к врачу. А состояние ухудшается. Платный психиатр на дом — это когда врач приезжает сам. Потом подбирают терапию. Психиатр на дом Москва — И для пожилых. Вся информация доступна здесь: психиатр на дом москва психиатр на дом москва Там и про услуги психиатра на дому по городу. Обращайтесь к специалистам.
Муж её пил неделю без остановки. Она в панике звонила всем подряд. Вывод из запоя — Осматривает, ставит капельницу. И только после этого становится легче. Срочный вывод из запоя на дому — работает и ночью. Вся информация доступна здесь: вывод из запоя с выездом на дом https://vyvod-iz-zapoya-v-irkutske-esz.ru И про срочный выезд в Иркутске. Обращайтесь к специалистам.
Мужик после недельного запоя слег. Жена вызвала нарколога. Вывод из запоя в стационаре — это когда человек под присмотром врачей. Потом выравнивают давление и сон. Выведение из запоя в стационаре СПб — Без лишнего риска. Можете ознакомиться по ссылке: вывод из запоя санкт петербург вывод из запоя санкт петербург И про стационар для жителей Северной столицы. Обращайтесь к специалистам.
Сотрудники клиники оценивают проблему комплексно. Учитываются стаж зависимости, возраст, хронические болезни и готовность к лечению. Следует рассказать врачу о предыдущих курсах и препаратах. Клиника подбирает лечение индивидуально.
Подробнее – анонимная наркологическая клиника
На форуме как-то читал тему. И сказал, что нужен стационар. Стационарный вывод из запоя — И без доступа к спиртному. Сначала снимают интоксикацию. Выведение из запоя в стационаре СПб — Без лишнего риска. Советую глянуть источник: вывод из запоя стационар вывод из запоя стационар Там и про вывод из запоя в клинике в СПб. Не тяните, если дома уже не справляетесь.