上周在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源码
Помощь оказывают врачи с практикой в наркологии, психиатрии и восстановительной терапии.
Подробнее можно узнать тут – вывод из запоя химки
Вывод из запоя в Королеве требуется, когда человек несколько дней употребляет алкоголь, не может остановиться, плохо спит, испытывает тревогу, тошноту, тремор, слабость, потерю аппетита и признаки похмельного синдрома. В такой момент главное — не пытаться лечить запойное состояние случайной дозой лекарственных средств, а обратиться к врачу. Наркологическая клиника подбирает лечение индивидуально: учитываются возраст пациента, срок употребления спиртного, стаж алкоголизма, наличие хронических заболеваний, самочувствие, риск развития осложнений и желание больного начать путь к трезвости.
Изучить вопрос глубже – vyvod-iz-zapoya-stacionar
Наркологическая служба работает круглосуточно, включая выходные дни. Вызов можно оформить на дому в Химках либо обратиться в частный центр для лечения в стационаре. Нарколог проводит осмотр, собирает анамнез, уточняет возраст, длительность запоя, количество выпитого, наличие хронических заболеваний, аллергии и противопоказания. На основе данных диагностики специалист индивидуально подбирает препараты, определяет безопасную дозу и контролирует состояние больного во время процедуры. Анонимность обращения, конфиденциальность персональных данных и отсутствие постановки на государственный учет помогают получить помощь без лишней огласки.
Выяснить больше – vyvod-iz-zapoya-vyzov-na-dom
Врач-нарколог проводит осмотр, собирает анамнез, оценивает клиническую картину, уточняет данные о лекарствах, прошлых кодированиях, хронических диагнозах, нарушениях сна и психики. При необходимости назначаются ЭКГ, анализы, тест на вещества, консультация психиатра или психотерапевта. В лечении используются солевой раствор, витамины, седативные препараты, гепатопротекторы, кардиопротекторы и средства, которые нормализуют обменные процессы, восстанавливают водно-солевой баланс и улучшают работу внутренних органов.
Получить больше информации – vyvod-iz-zapoya-moskva
Москва, всем привет Отец не выходит из штопора Жена в истерике Таблетки не помогают Короче, единственный кто реально помог — вызов нарколога на дом срочно Через пару часов человек пришёл в себя В общем, жмите чтобы сохранить — анонимный вызов врача нарколога на дом https://chastnyj.narkolog-na-dom-moskva-uxm.ru Нарколог на дом — это реальный выход Перешлите тем кто в такой же ситуации
Общаемся без осуждения и давления, сохраняя спокойную атмосферу для пациента и семьи.
Получить дополнительную информацию – http://vyvod-iz-zapoya-v-lyubercah14-4.ru/
Схема помощи зависит от состояния, стажа употребления, противопоказаний и дальнейших целей лечения.
Получить дополнительные сведения – вывод из запоя люберцы
Абстинентный синдром развивается после снижения концентрации алкоголя в крови. Его характер зависит от стадии алкоголизма, продолжительности запоя, возраста, пола, общего состояния органов и наличия хронической патологии. Особенно внимательно следует относиться к женскому, подростковому и пивному алкоголизму: такие формы зависимости нередко развиваются скрыто, а близкие замечают болезнь уже на выраженной стадии.
Подробнее можно узнать тут – http://www.domen.ru
Соблюдаем конфиденциальность, бережно общаемся с пациентом и его близкими на каждом этапе.
Получить дополнительную информацию – наркология вывод из запоя геленджик
Наркологическая служба работает круглосуточно, включая выходные дни. Вызов можно оформить на дому в Химках либо обратиться в частный центр для лечения в стационаре. Нарколог проводит осмотр, собирает анамнез, уточняет возраст, длительность запоя, количество выпитого, наличие хронических заболеваний, аллергии и противопоказания. На основе данных диагностики специалист индивидуально подбирает препараты, определяет безопасную дозу и контролирует состояние больного во время процедуры. Анонимность обращения, конфиденциальность персональных данных и отсутствие постановки на государственный учет помогают получить помощь без лишней огласки.
Детальнее – https://vyvod-iz-zapoya-v-himki1.ru/
Информация об обращении не передается третьим лицам, а детали лечения обсуждаются только с пациентом.
Получить дополнительные сведения – кодирование от алкоголизма цены
Согласно данным НМИЦ психиатрии и наркологии Минздрава РФ, профессиональный вывод из запоя с применением капельниц снижает риск осложнений и сокращает период восстановления. Процедура проводится только под наблюдением квалифицированных специалистов и требует правильного подбора препаратов в зависимости от стадии опьянения и наличия сопутствующих заболеваний.
Ознакомиться с деталями – вызвать капельницу от запоя на дому
Наркологическая помощь в Люберцах может проводиться на дому, амбулаторно или в стационаре клиники. Формат подбирает врач после осмотра пациента, оценки длительности запоя, количества алкоголя, возраста, наличия хронических заболеваний, психического состояния и возможных осложнений. Главный принцип медицинской работы — не просто вывести человека из состояния опьянения или похмельного синдрома, а стабилизировать организм, снизить риск срыва и начать лечение алкогольной зависимости.
Получить дополнительную информацию – vyvod iz zapoya kruglosutochno
После поступления вашего звонка специалист оперативно выезжает по указанному адресу в Нижнем Новгороде и проводит первичную диагностику. Врач измеряет основные жизненные показатели: артериальное давление, пульс, сатурацию кислорода в крови и оценивает степень алкогольной интоксикации. Затем подбирается индивидуальный состав капельницы, который позволяет максимально быстро снять симптомы похмелья и абстиненции.
Получить дополнительную информацию – https://kapelnica-ot-zapoya-nizhniy-novgorod0.ru/kapelnicza-ot-zapoya-na-domu-nizhnij-novgorod/
Помощь оказывают врачи с практикой в наркологии, психиатрии и восстановительной терапии.
Разобраться лучше – http://vyvod-iz-zapoya-korolev2.ru
Вывод из запоя в Мурманске представляет собой комплекс мероприятий, направленных на оказание медицинской помощи пациентам, находящимся в состоянии алкогольного отравления или длительного употребления спиртного. Процедура проводится с целью стабилизации состояния организма, предупреждения осложнений и минимизации риска развития тяжелых последствий алкоголизма.
Получить больше информации – наркология вывод из запоя в мурманске
Вывод из запоя в Королеве — профессиональная наркологическая помощь человеку, который не может самостоятельно прекратить прием спиртного. Продолжительный запой является опасным состоянием: в крови накапливаются токсические продукты распада этанола, нарушаются функции печени, сердца, сосудов, головного мозга и нервной системы. Чем дольше зависимый употребляет алкоголь, тем больше вероятность тяжелой абстиненции, судорог, психоза, сердечной недостаточности и других осложнений.
Получить дополнительные сведения – vyvod iz zapoya koroleva
Алкогольный запой представляет собой тяжелое состояние, вызванное длительным бесконтрольным употреблением спиртных напитков. Без медицинского вмешательства вывести организм из запоя может быть сложно и даже опасно. Срочная помощь нарколога требуется при следующих признаках:
Узнать больше – после капельницы от запоя нижний новгород
Ситуации, требующие срочного лечения, часто связаны с длительным употреблением спиртных напитков. Однако с течением времени теряется чувство меры, для достижения состояния опьянения нужны большие дозы алкоголя — постепенно развивается алкогольная зависимость. Острая интоксикация продуктами распада этанола запускает тяжелый абстинентный синдром, который в Люберцах и соседних городах, таких как Королев, Мытищи, Химки и Балашиха, становится частой причиной обращений за экстренной наркологической помощью. Специалисты нашего центра настоятельно рекомендуют не откладывать терапию при появлении признаков белой горячки, судорогах, резком скачке артериального давления и неадекватном поведении зависимого. За долгие годы лечения алкоголизма и наркомании наши наркологи сталкивались с различными ситуациями, поэтому врач быстро подберет оптимальную для конкретного пациента схему терапии.
Подробнее тут – врач нарколог на дом
Все процедуры проводятся под круглосуточным наблюдением. Применяются инфузионные растворы, седативные и противосудорожные средства, а также поддерживающие препараты, позволяющие уменьшить нагрузку на жизненно важные органы.
Получить больше информации – запой наркологическая клиника
Вывод из запоя включает комплекс мер, направленных на детоксикацию организма, стабилизацию состояния и снятие абстинентного синдрома. В течение первых часов специалист контролирует давление, пульс, дыхание и уровень сознания. Современные методики позволяют уменьшить тошноту, тремор, тревогу, болевой синдром и другие проявления отравления. Эффективность лечения повышается, когда пациент соблюдает рекомендации и после стабилизации продолжает лечение алкогольной зависимости.
Разобраться лучше – https://vyvod-iz-zapoya-krasnogorsk2.ru/
Врач-нарколог проводит осмотр, собирает анамнез, оценивает клиническую картину, уточняет данные о лекарствах, прошлых кодированиях, хронических диагнозах, нарушениях сна и психики. При необходимости назначаются ЭКГ, анализы, тест на вещества, консультация психиатра или психотерапевта. В лечении используются солевой раствор, витамины, седативные препараты, гепатопротекторы, кардиопротекторы и средства, которые нормализуют обменные процессы, восстанавливают водно-солевой баланс и улучшают работу внутренних органов.
Ознакомиться с деталями – круглосуточный стационар вывод из запоя
Ситуации, требующие срочного лечения, часто связаны с длительным употреблением спиртных напитков. Однако с течением времени теряется чувство меры, для достижения состояния опьянения нужны большие дозы алкоголя — постепенно развивается алкогольная зависимость. Острая интоксикация продуктами распада этанола запускает тяжелый абстинентный синдром, который в Люберцах и соседних городах, таких как Королев, Мытищи, Химки и Балашиха, становится частой причиной обращений за экстренной наркологической помощью. Специалисты нашего центра настоятельно рекомендуют не откладывать терапию при появлении признаков белой горячки, судорогах, резком скачке артериального давления и неадекватном поведении зависимого. За долгие годы лечения алкоголизма и наркомании наши наркологи сталкивались с различными ситуациями, поэтому врач быстро подберет оптимальную для конкретного пациента схему терапии.
Разобраться лучше – вызов нарколога на дом запой
Помощь может включать консультацию, детоксикацию, стационар и дальнейшее сопровождение по показаниям.
Ознакомиться с деталями – вывод из запоя в клинике
Клиника «ТоксинНет» предлагает профессиональную помощь при алкогольной зависимости и запоях в Нижнем Новгороде. Наши опытные наркологи круглосуточно выезжают на дом для оказания экстренной медицинской помощи. Основным методом лечения является капельница от запоя, которая позволяет оперативно снять интоксикацию и стабилизировать общее состояние пациента. Мы обеспечиваем конфиденциальность, индивидуальный подход и высокий уровень безопасности процедур.
Разобраться лучше – поставить капельницу от запоя
Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев.
Изучить вопрос глубже – нарколог вывод из запоя
Особую опасность представляет белая горячка (алкогольный психоз). У пациента возникают галлюцинации, приступы паники, агрессивное поведение, дезориентация во времени и пространстве. Это состояние требует незамедлительного вмешательства врача, так как человек может представлять опасность для себя и окружающих.
Разобраться лучше – нарколог на дом вывод из запоя в новокузнецке
Мы работаем круглосуточно, принимаем срочный вызов, консультируем анонимно и индивидуально подбираем необходимые процедуры. В течение нескольких минут после обращения можно получить консультацию, узнать цены, уточнить контакты, оформить заявку и вызвать нарколога. Врач проведет осмотр, подберет препараты, поставит капельницу, даст рекомендации родственникам и при необходимости направит больного в стационарное отделение.
Ознакомиться с деталями – вывод из запоя на дому люберцы
Помощь может включать консультацию, детоксикацию, стационар и дальнейшее сопровождение по показаниям.
Разобраться лучше – вывод из запоя на дому недорого геленджик
Вывод из запоя в Красногорске требуется, когда человек не может самостоятельно выйти из длительного употребления спиртного, тяжело переносит похмелье или чувствует резкое ухудшение самочувствия. Круглосуточная наркологическая помощь доступна на дому, амбулаторно и в клинике. Врач учитывает возраст, длительность запоя, количество алкогольных напитков, состояние сердечно-сосудистой системы, особенности психики и наличие хронических болезней. Лечение проводится анонимно, а выбранный стандарт помощи зависит от клинической картины.
Получить больше информации – vyvod iz zapoya
Помощь оказывают врачи с практикой в наркологии, психиатрии и восстановительной терапии.
Получить дополнительные сведения – вывод из запоя
Особую опасность представляет белая горячка (алкогольный психоз). У пациента возникают галлюцинации, приступы паники, агрессивное поведение, дезориентация во времени и пространстве. Это состояние требует незамедлительного вмешательства врача, так как человек может представлять опасность для себя и окружающих.
Исследовать вопрос подробнее – нарколог на дом круглосуточно в новокузнецке
Врач учитывает симптомы, риски, анамнез и семейную ситуацию, чтобы предложить подходящую программу.
Углубиться в тему – srochnyj vyvod iz zapoya
Алкогольная и наркотическая зависимость оказывают разрушительное воздействие на организм, нарушая работу сердечно-сосудистой системы, печени, почек и головного мозга. Запои и передозировки приводят к острой интоксикации, которая без медицинской помощи может перерасти в поражение внутренних органов, психоз или даже летальный исход.
Получить дополнительные сведения – vrach-narkolog-na-dom novokuznetsk
Зависимость — это заболевание, которое разрушает не только тело, но и личность. Оно затрагивает мышление, поведение, разрушает отношения и лишает человека способности контролировать свою жизнь. Наркологическая клиника в Волгограде — профессиональное лечение зависимостей строит свою работу на понимании природы болезни, а не на осуждении. Именно это позволяет добиваться стойких результатов, восстанавливая пациента физически, эмоционально и социально.
Получить дополнительную информацию – https://narkologicheskaya-klinika-volgograd9.ru/chastnaya-narkologicheskaya-klinika-volgograd
Принимаем заявки круглосуточно, уточняем состояние и подбираем безопасный формат помощи.
Подробнее можно узнать тут – vyvod-iz-zapoya-vyzov-na-dom
References:
Holland Casino Auszahlung http://www.fouillez-tout.com/cgi-bin/redirurl.cgi?http://card.lifenlegacydigital.com/wilmeroconor24
Принимаем заявки круглосуточно, уточняем состояние и подбираем безопасный формат помощи.
Получить дополнительную информацию – срочный вывод из запоя геленджик
Принимаем заявки круглосуточно, уточняем состояние и подбираем безопасный формат помощи.
Получить больше информации – нарколог на дом люберцы
При необходимости применяется симптоматическое лечение для снижения болевого синдрома, устранения тошноты и рвоты, а также нормализации психоэмоционального состояния пациента. Врачи наркологи строго контролируют течение процедуры, что обеспечивает безопасность и снижает риски осложнений.
Подробнее – наркология вывод из запоя в мурманске
Москва, всем привет Брат снова сорвался Дети напуганы Нужна срочная помощь на дому Короче, только это реально спасло — вывод из запоя анонимно недорого с опытом Через пару часов человек пришёл в себя В общем, жмите чтобы сохранить — срочный вывод из запоя на дому круглосуточно срочный вывод из запоя на дому круглосуточно Не ждите пока станет хуже Перешлите тем кто в такой же ситуации
Нужна бесплатная юридическая консультация? Переходите по запросу юридическая консультация в Туле и получите помощь опытных правозащитников в любой области права: семейные споры, долги и кредиты, недвижимость, трудовые конфликты, защита прав потребителей и многое другое. Задайте вопрос онлайн или по телефону и получите подробный разбор вашей ситуации и рекомендации адвоката по дальнейшим действиям. Консультация проводится бесплатно и конфиденциально.
После первичной консультации пациент проходит обследование, позволяющее точно определить стадию зависимости и сопутствующие патологии. Используются лабораторные анализы, оценка неврологического статуса и сбор анамнеза. Уже на этом этапе начинается выстраивание контакта между пациентом и врачом, что особенно важно для доверия и готовности включиться в процесс.
Получить дополнительные сведения – лечение в наркологической клинике в волгограде
Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев.
Ознакомиться с деталями – vyvod-iz-zapoya-v-koroleve
Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев.
Исследовать вопрос подробнее – vyvod-iz-zapoya-kapelnica-na-domu
Люди подскажите Брат снова сорвался Жена в истерике Нужен врач прямо сейчас Короче, только это реально спасло — нарколог на дом срочно Приехал через 40 минут В общем, телефон и цены тут — вывод из запоя на дому москва https://czena.narkolog-na-dom-moskva-rty.ru Нарколог на дом — это реальный выход Перешлите тем кто в такой же ситуации
Преимущества вызова нарколога на дом:
Получить больше информации – вывод из запоя
Принимаем заявки круглосуточно, уточняем состояние и подбираем безопасный формат помощи.
Получить дополнительную информацию – вывод из запоя в геленджике
Как поясняет врач-нарколог клиники «АлкоСтоп», «грамотно составленная инфузионная терапия не только устраняет последствия запоя, но и создаёт условия для дальнейшей мотивации пациента к лечению».
Ознакомиться с деталями – выезд на дом капельница от запоя первоуральск
Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев.
Подробнее – вывод из запоя на дому