上周在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://1narkologicheskaya-klinika-balashiha.ru
В первые часы абстиненции важно смотреть не только на самочувствие, но и на объективные признаки. Если больной много лет сталкивается с алкоголизмом, имеет болезни сердца, печени, почек или ранее переносил белую горячку, самостоятельный выход из запоя опасен. В Екатеринбурге в таких случаях разумно вызвать нарколога, а при угрозе жизни — скорую помощь.
Подробнее – вывод из запоя на дому
В легком случае беспокоят сухость во рту, слабость, тремор, тревога и головная боль. Если интоксикация выражена сильнее, могут возникать скачки давления, многократная рвота, бессонница и сердцебиение. Важно отметить, что домашняя капельница подходит не всем: при судорогах, галлюцинациях, спутанности сознания или резком ухудшении требуется экстренная помощь.
Подробнее – капельница от запоя на дому круглосуточно
Ни есть, ни спать, давление скачет. Жена вызвала нарколога. Похмелье в стационаре — И без доступа к алкоголю. И только после этого начинают основное лечение. Выведение из запоя в стационаре СПб — работает и в тяжёлых случаях. Можете ознакомиться по ссылке: наркология вывод из запоя в стационаре спб https://pohmelye.vyvod-iz-zapoya-v-staczionare-spb-gdi.ru Там и про вывод из запоя в клинике для Санкт-Петербурга. Обращайтесь к специалистам.
Вывод из запоя в Ростове-на-Дону — это медицинская процедура, направленная на устранение симптомов алкогольной интоксикации, восстановление функций организма и предотвращение осложнений. В клинике помощь оказывается круглосуточно, а лечение проводится под контролем опытных наркологов. Такой подход позволяет безопасно прекратить употребление алкоголя, избежать резкой отмены и стабилизировать состояние пациента. Процедура проводится как в стационаре, так и на дому, с учётом состояния здоровья и степени зависимости.
Исследовать вопрос подробнее – вывод из запоя недорого ростов-на-дону
В этой статье мы рассматриваем разные способы борьбы с алкогольной зависимостью. Обсуждаются методы лечения, программы реабилитации и советы для поддержки близких. Читатели получат информацию о том, как преодолеть зависимость и добиться успешного выздоровления.
Узнать напрямую – алкогольная детоксикация в стационаре
В клинике применяются следующие направления медицинской помощи:
Получить больше информации – narkologicheskaya-klinika-moskva
Этот информационный материал подробно освещает проблему наркозависимости, ее причины и последствия. Мы предлагаем информацию о методах лечения, профилактики и поддерживающих программах. Цель статьи — повысить осведомленность и продвигать идеи о необходимости борьбы с зависимостями.
Раскрыть тему полностью – delta clinic ru белгород
Врач учитывает симптомы, риски, анамнез и семейную ситуацию, чтобы предложить подходящую программу.
Ознакомиться с деталями – помощь вывод из запоя Красноярск
Ни есть, ни спать, давление скачет. Жена вызвала нарколога. Вывод из запоя в стационаре — И без доступа к алкоголю. И только после этого начинают основное лечение. Вывод из запоя СПб стационар — Без лишнего риска. Можете ознакомиться по ссылке: вывести из запоя санкт петербург https://pohmelye.vyvod-iz-zapoya-v-staczionare-spb-gdi.ru И про стационар в СПб. Обращайтесь к специалистам.
Знакомая ситуация. Куда звонить среди ночи. Запой нарколог на дом — И выводит человека из этого состояния. Сначала снимают интоксикацию. Нарколог вывод из запоя — работает и ночью. Можете ознакомиться по ссылке: запой нарколог дом https://vyvod-iz-zapoya-v-moskve-mrz.ru И про срочный выезд в Москве. Иногда промедление дорого стоит.
Ни есть, ни спать, давление скачет. Тот посмотрел и сказал. Похмелье в стационаре — И без доступа к алкоголю. И только после этого начинают основное лечение. Вывод из запоя круглосуточно — Без лишнего риска. Можете ознакомиться по ссылке: вывод из запоя санкт-петербург стационар https://pohmelye.vyvod-iz-zapoya-v-staczionare-spb-gdi.ru И про круглосуточный выезд для жителей Северной столицы. Иногда стационар — единственный выход.
В этом исследовании рассмотрены методы лечения зависимостей и их эффективность. Мы проанализируем различные подходы, используемые в реабилитационных центрах, и представим данные о результативности программ. Читатели получат надежные и научно обоснованные сведения о данной проблеме.
Тыкай сюда — узнаешь много интересного – наркологическая клиника круглосуточно
Специалисты регулярно помогают при интоксикации, запоях, абстиненции и сложных состояниях зависимости.
Ознакомиться с деталями – вывод из запоя капельница в Красноярске
Жена на нервах была. Оказалось, опять сорвался. Вызов нарколога на дом запой — это когда врач приезжает сам. Потом давление выравнивают. Доктор нарколог вывод из запоя — Без лишних вопросов. Советую глянуть источник: вызвать вывод из запоя https://vyvod-iz-zapoya-v-moskve-kcx.ru Там и про вывод из запоя вызов по городу. Обращайтесь к специалистам.
Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев.
Дополнительная информация – вывод из запоя на дому круглосуточно Красноярск
Капельница от запоя в Москве применяется как медицинский метод детоксикации при алкогольной интоксикации и выраженном похмельном или абстинентном синдроме. Центр «Мед Алко» организует помощь круглосуточно: возможен выезд врача на дому либо проведение процедуры в стационаре. Нарколог оценивает общее состояние человека, длительность запоя, количество выпитого спиртного, наличие хронических заболеваний, показатели давления, пульса и уровень сознания. Только после осмотра подбирается индивидуальный состав капельницы, определяется объем раствора и решается вопрос, безопасно ли проводить лечение в домашних условиях.
Изучить вопрос подробнее – kapelnica-ot-zapoya-na-dom-moskva
Врач учитывает симптомы, риски, анамнез и семейную ситуацию, чтобы предложить подходящую программу.
Получить больше информации – наркологическая клиника цены
Вывод из запоя на дому не сводится к одному стандартному составу. Инфузионная схема зависит от водно-электролитных нарушений, работы сердца, давления и общего самочувствия. Если врач видит признаки тяжелой абстиненции, лечение дома прекращается в пользу госпитализации. Безопасность важнее обещаний провести процедуру быстро любой ценой.
Изучить вопрос подробнее – вывод из запоя на дому круглосуточно в Екатеринбурге
Срочный вывод из запоя требуется при выраженной абстиненции, многодневном пьянстве и заметном ухудшении самочувствия. Нарколог приезжает на дом после оформления вызова и оценивает, можно ли проводить лечение на месте. Чем тяжелее запой, тем важнее вовремя принять решение о переводе в клинику. Иногда неотложная помощь требуется утром после тяжелой ночи, иногда состояние ухудшается вечером или ночью, поэтому возможность круглосуточного обращения имеет практическое значение.
Подробнее – kruglosutochnyj-vyvod-iz-zapoya-balashiha
Врач учитывает симптомы, риски, анамнез и семейную ситуацию, чтобы предложить подходящую программу.
Узнать больше – нарколог на дом цена
Помню, сосед три дня не выходил из квартиры. Запой жуткий, сам не остановится. Запой нарколог на дом — Осматривает, ставит капельницу. Потом давление выравнивают. Доктор нарколог вывод из запоя — работает и ночью. Советую глянуть источник: вызвать врача для вывода из запоя https://vyvod-iz-zapoya-v-moskve-kcx.ru Там и про вывод из запоя вызов в Москве. Не ждите, пока станет хуже.
Выезд нарколога на дому удобен тем, что помощь проводится в спокойной обстановке. Капельница на дому может быть организована круглосуточно, если состояние человека позволяет такой формат; выезд доступен в том числе ночью и по выходным. Нарколог и специалисты выездной службы работают по медицинским стандартам, а сама капельница проводится с наблюдением за самочувствием. Наркологическая служба принимает звонок, уточняет адрес и основные жалобы, затем направляет врача. Капельница назначается с учетом осмотра, а препараты вводятся постепенно. Доктор следит за реакцией пациента и при необходимости меняет темп инфузии.
Узнать больше – вызвать нарколога капельница от запоя
Знакомая ситуация. Куда звонить среди ночи. Вывод из запоя — это когда врач приезжает сам. И только после этого становится легче. Запой помощь нарколога — работает и ночью. Можете ознакомиться по ссылке: вызов врача вывод из запоя вызов врача вывод из запоя И про срочный выезд для региона. Не откладывайте на потом.
Жена на нервах была. Запой жуткий, сам не остановится. Запой нарколог на дом — это когда врач приезжает сам. Потом давление выравнивают. Доктор нарколог вывод из запоя — Без лишних вопросов. Советую глянуть источник: выведение из запоя врачом наркологом https://vyvod-iz-zapoya-v-moskve-kcx.ru Там и про вывод из запоя вызов для Москвы. Обращайтесь к специалистам.
В мегаполисе привычный ритм часто мешает системному лечению: плотный график, транспортные задержки, высокая социальная видимость. Чтобы терапия проходила спокойно, «НеоТрезвие СПБ» использует «немаркированную» логистику: нейтральные формулировки в документах, аккуратные визиты, разнесенные по времени консультации специалистов и персональный координатор. По желанию пациента часть этапов — образовательные сессии и посткодовое сопровождение — выполняются онлайн. Это снижает тревогу и делает маршрут лечения менее заметным для окружения.
Разобраться лучше – http://kodirovanie-ot-alkogolizma-v-spb16.ru
Система взаимоподдержки позволяет быстро реагировать на риск рецидива и мотивирует пациента продолжать путь к трезвости даже в моменты слабости.
Детальнее – лечение алкоголизма сочи.
Помогаем быстро перейти от консультации к конкретному плану: выезд, стационар или наблюдение.
Подробнее – https://narcolog-na-dom-krasnoyarsk2.ru/
Близкий пьёт несколько дней подряд. Тут голова кругом идёт. Вывод из запоя — это когда врач приезжает сам. И только после этого становится легче. Нарколог вывод из запоя — И в выходные. Можете ознакомиться по ссылке: вызвать врача для вывода из запоя вызвать врача для вывода из запоя Там и про вывод из запоя вызов для Московской области. Иногда промедление дорого стоит.
С пациентом работают профильные специалисты, которые оценивают состояние и подбирают безопасный план помощи.
Дополнительная информация – капельница после запоя москва
Муж её пил неделю без остановки. Она в панике звонила всем подряд. Нарколог на дом для вывода из запоя — Осматривает, ставит капельницу. И только после этого становится легче. Вывод из запоя на дому круглосуточно — работает и ночью. Можете ознакомиться по ссылке: помощь при запое на дому https://vyvod-iz-zapoya-v-krasnoyarske-cdv.ru И про срочный выезд по городу. Обращайтесь к специалистам.
Помню, соседка рассказывала. Она в панике звонила всем подряд. Нарколог на дом для вывода из запоя — Осматривает, ставит капельницу. И только после этого становится легче. Срочный вывод из запоя на дому — Без лишних вопросов. Можете ознакомиться по ссылке: вывод из запоя на дому анонимно вывод из запоя на дому анонимно Там и про вывод из запоя на дому цена в Красноярске. Обращайтесь к специалистам.
Муж её пил неделю без остановки. Она в панике звонила всем подряд. Вывод из запоя — И выводит человека из этого состояния. Сначала уходит интоксикация. Срочный вывод из запоя на дому — И в выходные. Можете ознакомиться по ссылке: вызов нарколога для вывода из запоя вызов нарколога для вывода из запоя И про капельницу для вывода из запоя для региона. Иногда промедление стоит жизни.
Решение о выезде принимает врач с учётом симптомов и бытовых ограничений. Если совпадает хотя бы две позиции из списка ниже, лучше не откладывать звонок — управляемость состояния снижается каждый час.
Углубиться в тему – вывод из запоя в стационаре казань
Близкий пьёт несколько дней подряд. Тут голова кругом идёт. Вывод из запоя — Осматривает, ставит капельницу. Сначала уходит интоксикация. Срочный вывод из запоя на дому — работает круглосуточно. Вся информация доступна здесь: вывод из запоя на дому анонимно вывод из запоя на дому анонимно Там и про вывод из запоя на дому цена в Красноярске. Обращайтесь к специалистам.
Наркологическая помощь доступна круглосуточно. Чтобы заказать выезд, можно позвонить по телефону клиники, написать через онлайн-форму или оставить заявку на обратный звонок. Оператор уточняет продолжительность запойного состояния, адрес, возраст пациента и характер жалоб. При стабильных показателях врач приезжает на дом, а при признаках критической ситуации рекомендуется экстренное обращение в профильную службу.
Ознакомиться с деталями – вывод из запоя дешево Екатеринбург
Быстро собираем первичную информацию, оцениваем риски и предлагаем подходящий вариант обращения.
Подробнее – вывод из запоя на дому в балашихе
Помню, соседка рассказывала. Она в панике звонила всем подряд. Нарколог на дом для вывода из запоя — Осматривает, ставит капельницу. Потом стабилизируют давление. Срочный вывод из запоя на дому — Без осуждения и лишних вопросов. Можете ознакомиться по ссылке: вывод из длительного запоя на дому https://vyvod-iz-zapoya-v-krasnoyarske-ikm.ru И про срочный выезд для Красноярска. Не тяните до последнего.
Муж её пил неделю. Она в панике звонила всем подряд. Запой нарколог на дом — это когда врач приезжает сам. Потом давление выравнивают. Нарколог вывод из запоя — И в выходные. Советую глянуть источник: вызов врача вывод из запоя вызов врача вывод из запоя И про выведение из запоя врачом наркологом для Москвы. Обращайтесь к специалистам.
Вывод из запоя на дому подходит при относительно стабильном течении, когда у пациента нет признаков, требующих интенсивной стационарной помощи. В Екатеринбурге выезд нарколога можно оформить круглосуточно. Оператор уточняет адрес, продолжительность запоя, возраст, хронические патологии и основные жалобы. Затем врач приезжает на дому, проводит осмотр и выбирает лечение с учетом фактической клинической картины.
Дополнительная информация – http://vyvod-iz-zapoya-v-ekaterinburge20.ru/
Знакомая ситуация. Куда звонить среди ночи. Вывод из запоя — Осматривает, ставит капельницу. Потом стабилизируют давление. Вывод из запоя на дому круглосуточно — И в выходные. Вся информация доступна здесь: вывод из длительного запоя на дому вывод из длительного запоя на дому И про капельницу для вывода из запоя для Красноярска. Обращайтесь к специалистам.
Помню, соседка жаловалась. Никто не знал, что делать. Вывод из запоя — это когда врач приезжает сам. И только после этого становится легче. Запой помощь нарколога — работает круглосуточно. Советую глянуть источник: запой помощь нарколога запой помощь нарколога И про выведение из запоя врачом наркологом для региона. Иногда промедление стоит жизни.
Врач учитывает симптомы, риски, анамнез и семейную ситуацию, чтобы предложить подходящую программу.
Дополнительная информация – https://vyvod-iz-zapoya-krasnoyarsk68.ru/
И сам уже не в состоянии остановиться. Куда звонить среди ночи. Вывод из запоя — И выводит человека из этого состояния. И только после этого становится легче. Вывод из запоя на дому круглосуточно — работает круглосуточно. Вся информация доступна здесь: сколько стоит вывод из запоя на дому https://vyvod-iz-zapoya-v-krasnoyarske-azx.ru И про срочный выезд по городу. Иногда промедление стоит здоровья.
Помню, соседка жаловалась. А время шло. Вывод из запоя — это когда врач приезжает сам. Потом давление выравнивают. Вызвать врача для вывода из запоя — работает круглосуточно. Советую глянуть источник: вывод из запоя вызвать нарколога вывод из запоя вызвать нарколога Там и про вывод из запоя вызов для региона. Не ждите, пока станет хуже.
В зависимости от показателей обследования капельница может решать несколько задач:
Узнать больше – капельница от запоя на дому москва недорого
Лечение на дому выбирают, когда клиническая картина позволяет провести помощь без круглосуточного стационарного контроля. Вызов оформляется по телефону: оператор уточняет адрес, возраст, длительность запоя, примерное количество выпитого, хронические болезни и принимаемые препараты. Затем нарколог приезжает по указанному адресу, проводит осмотр и определяет, можно ли выполнить лечение дома. В Екатеринбурге работаем с выездом в разные районы города, а время прибытия зависит от адреса и загрузки бригады.
Получить больше информации – вывод из запоя в Екатеринбурге