上周在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源码
mostbet android üçün mostbet mostbet29401.help
Вывод из запоя в стационаре в Нижнем Новгороде с круглосуточным наблюдением и поэтапным восстановлением в наркологической клинике «Частный медик 24»
Узнать больше – наркологический вывод из запоя нижний новгород
mostbet cont in euro http://mostbet25863.help
Если симптомы похмелья становятся настолько выраженными, что мешают нормальному функционированию, капельница становится необходимостью. Это особенно важно, если организм не справляется с токсинами самостоятельно.
Выяснить больше – kapelnicza-ot-pokhmelya-nizhnij-novgorod-2.ru/
mostbet wagering http://mostbet29401.help
Существует ряд ситуаций, при которых вызов специалиста на дом является обоснованным решением:
Подробнее тут – запой нарколог на дом
Капельница от похмелья в Самаре с устранением симптомов интоксикации и контролем состояния в наркологической клинике «Частный медик 24»
Узнать больше – капельница от похмелья цена
Наркологический стационар с комфортными условиями сочетает в себе высококлассное медицинское обслуживание и удобства, которые способствуют более быстрому восстановлению пациента. В таких клиниках пациенты не только получают лечение от зависимости, но и имеют возможность восстановиться в комфортных условиях, что важно для психоэмоционального состояния. Комфортные условия способствуют улучшению настроения, уменьшению стресса и созданию более эффективной атмосферы для лечения. В случае запоя или алкоголизма врач может предоставить помощь на дому, чтобы стабилизировать состояние пациента до перевода в стационар.
Разобраться лучше – https://narkologicheskij-staczionar-sankt-peterburg-4.ru
Основной задачей капельницы от запоя является быстрое устранение симптомов интоксикации, связанных с длительным употреблением алкоголя. Введение в вену специальных растворов помогает не только вывести алкогольные токсины, но и восстановить нормальное функционирование внутренних органов, пострадавших от воздействия алкоголя. Подбор состава капельницы всегда индивидуален и зависит от состояния пациента, а также может включать дополнительные методы лечения, такие как кодирование от алкоголизма.
Подробнее можно узнать тут – поставить капельницу от запоя
мостбет зеркало для ios https://www.mostbet37461.help
1win прогнозы https://1win38047.help
mostbet e-mail suport mostbet e-mail suport
Запрос на выезд врача связан не только с классическим запоем. На практике домашняя помощь нужна в разных ситуациях, когда организму уже трудно компенсировать последствия употребления, а откладывание визита увеличивает риск осложнений.
Углубиться в тему – http://www.domen.ru
Вызов капельницы от похмелья с контролем врача в Самаре рекомендуется, когда симптомы похмелья становятся особенно тяжелыми и мешают нормальной жизнедеятельности. Несмотря на то, что многие пытаются справиться с похмельем с помощью домашних методов, такие как прием жидкости или таблеток, они не всегда оказываются достаточно эффективными. В случае сильных симптомов похмелья, капельница с врачебным контролем — это более безопасное и быстрое решение, при этом возможен вывод в стационаре, анонимное лечение и консультации по вопросам наркомании с учетом актуальной цены услуг.
Ознакомиться с деталями – капельница от похмелья в самаре
Капельница от похмелья в Самаре: быстрое восстановление, снятие интоксикации и улучшение самочувствия под контролем специалистов в наркологической клинике «Похмельная служба»
Подробнее можно узнать тут – капельница от похмелья анонимно самара
Наркологический стационар предоставляет круглосуточное медицинское наблюдение и специализированное лечение для пациентов, страдающих от алкогольной и наркотической зависимости. Здесь пациенты могут пройти детоксикацию, получить помощь в снятии абстинентного синдрома, а также пройти курс реабилитации с целью стабилизации состояния и профилактики рецидивов. Лечение в стационаре направлено не только на устранение физической зависимости, но и на помощь в восстановлении психологического здоровья пациента. В некоторых случаях для более эффективного лечения могут быть предложены капельницы и вывод из запоя, а также долговременная реабилитация, которая может продолжаться на протяжении года.
Подробнее тут – наркологическая клиника стационар
mostbet şifrəni yenilə mostbet şifrəni yenilə
mostbet app ios mostbet app ios
Такие состояния позволяют проводить лечение на дому с контролем динамики. При выявлении рисков врач может изменить тактику и рекомендовать стационар или другие методы лечения зависимости.
Подробнее тут – вывод из запоя на дому цена санкт-петербург
Капельница от похмелья в Нижнем Новгороде: быстрое восстановление, снятие интоксикации и улучшение состояния под контролем специалистов в наркологической клинике «Похмельная служба»
Узнать больше – капельница от похмелья вызов на дом нижний новгород
mostbet visa ilə depozit https://mostbet29401.help/
На первом этапе специалист проводит визуальный осмотр пациента, измеряет артериальное давление, пульс, уровень кислорода в крови и оценивает общее психоэмоциональное состояние. Важно выявить степень интоксикации, наличие осложнений и противопоказаний к проведению терапии на дому. В случае наркомании и длительного употребления наркотиков, пациенту может быть предложена консультация и лечение, включая реабилитацию на летний период, если состояние требует интенсивного контроля.
Выяснить больше – вызов нарколога на дом самара
Капельница от похмелья — это экстренная мера, которая помогает снять интоксикацию и восстановить водно-электролитный баланс в организме после злоупотребления алкоголем. В наркологической клинике «Частный медик 24» в Самаре мы предлагаем эффективное лечение для тех, кто столкнулся с последствиями запоя или перегрузки организма после употребления алкоголя. Капельницы для снятия похмелья — это быстрый и безопасный способ вернуть пациента в норму, избавить от болезненных симптомов, таких как головная боль, тошнота, слабость, сухость во рту, а также стабилизировать его общее состояние. Выезд нарколога на дом и проведение капельниц позволяет избежать поездки в клинику и начать лечение в удобной обстановке.
Разобраться лучше – капельница от похмелья анонимно
Эти компоненты вводятся в организме пациента постепенно, что позволяет обеспечить мягкое восстановление без резких скачков состояния. В отличие от интенсивных процедур, такой подход гарантирует, что организм восстанавливается более комфортно, не подвергаясь излишнему стрессу.
Получить дополнительные сведения – капельница от похмелья самара
Наркологический стационар в Санкт-Петербурге: круглосуточная помощь, лечение зависимости и восстановление в наркологической клинике «Похмельная служба»
Получить больше информации – http://narkologicheskij-staczionar-sankt-peterburg-4.ru/
Срочный домашний выезд особенно важен для семей, которые уже сталкивались с тяжёлыми последствиями алкоголизма и понимают, что обычные попытки «отпаивания» не решают проблему. Врач оценивает не только факт употребления, но и длительность запоя, возраст, наличие хронических болезней, уже принятые медикаменты, риск абстинентного синдрома, состояние сердца и общую нагрузку на организм. Такой формат позволяет анонимно вызвать специалиста, быстро провести необходимые вмешательства и определить, нужен ли только домашний вывод из острого состояния или дальше потребуется кодирование, повторная консультация, реабилитация либо более широкий маршрут помощи при наркомании.
Подробнее тут – нарколог на дом в воронеже
Похмельный синдром сопровождается головной болью, слабостью, тошнотой, сухостью во рту и нарушением сна, что часто возникает после запоя или при алкоголизме. Эти симптомы появляются из-за накопления токсинов и нарушения водно-солевого баланса. Капельница помогает ускорить выведение вредных веществ и восстановить нормальные функции организма, снижая нагрузку на внутренние системы и помогая человеку быстрее выйти из состояния запоев.
Получить дополнительные сведения – http://kapelnicza-ot-pokhmelya-voronezh-5.ru/
Вывод из запоя в стационаре — это медицинская помощь, при которой лечение проводится в условиях постоянного врачебного контроля и поэтапной стабилизации состояния. Такой формат применяется, когда состояние пациента требует наблюдения и быстрого реагирования на изменения. В наркологической клинике «Частный медик 24» в Нижнем Новгороде лечение выстраивается на основе клинической оценки и последовательного подхода: каждый этап направлен на достижение конкретного результата без избыточной нагрузки на организм.
Получить больше информации – нарколог на дом вывод из запоя
Такие состояния требуют медицинского вмешательства, поскольку могут ухудшаться без лечения. Капельница позволяет стабилизировать состояние и снизить нагрузку на организм. Услуги могут предоставляться анонимно, а при тяжёлых случаях рассматривается лечение в стационаре.
Узнать больше – капельница от похмелья анонимно в воронеже
Срочный домашний выезд особенно важен для семей, которые уже сталкивались с тяжёлыми последствиями алкоголизма и понимают, что обычные попытки «отпаивания» не решают проблему. Врач оценивает не только факт употребления, но и длительность запоя, возраст, наличие хронических болезней, уже принятые медикаменты, риск абстинентного синдрома, состояние сердца и общую нагрузку на организм. Такой формат позволяет анонимно вызвать специалиста, быстро провести необходимые вмешательства и определить, нужен ли только домашний вывод из острого состояния или дальше потребуется кодирование, повторная консультация, реабилитация либо более широкий маршрут помощи при наркомании.
Подробнее тут – нарколог на дом цена воронеж
Наркологический стационар с круглосуточным наблюдением — это не просто место для детоксикации, но и пространство для комплексного лечения и реабилитации. Постоянное присутствие медицинского персонала помогает избежать опасных ситуаций, таких как психозы или физиологические сбои, характерные для абстиненции. Прием пациентов может включать кодирование, а также индивидуальные программы лечения, которые разрабатываются в зависимости от состояния пациента и его потребностей на протяжении года.
Разобраться лучше – http://narkologicheskij-staczionar-sankt-peterburg.ru/
Во всех этих случаях врач нужен не только для облегчения симптомов. Его задача — понять, можно ли ограничиться домашней терапией или уже сейчас необходимо менять маршрут лечения. Именно этот этап и делает домашний выезд профессиональной услугой, а не упрощённой заменой клиники.
Получить больше информации – нарколог на дом анонимно
Такие состояния требуют профессионального вмешательства, так как без лечения могут усиливаться и приводить к ухудшению самочувствия. При этом помощь может предоставляться анонимно, в соответствии с политикой конфиденциальности данных пациента.
Получить дополнительную информацию – вывод из запоя на дому цена
mostbet bonus pariuri sportive https://www.mostbet25863.help
mostbet официальный сайт рабочий https://mostbet37461.help/
mostbet android quraşmır http://mostbet29401.help/
Такие критерии помогают определить, когда необходим более строгий контроль и постоянное наблюдение. В стационаре создаются условия, при которых лечение проходит без внешних факторов, влияющих на состояние пациента. При этом услуга может предоставляться анонимно, а цену лечения можно уточнить заранее по телефону или при обращении.
Узнать больше – помощь вывод из запоя в нижнем новгороде
При похмелье организм страдает от обезвоживания, токсического воздействия алкоголя на внутренние органы и нервную систему. Капельница помогает эффективно восстановить нормальную работу органов, улучшить самочувствие и предотвратить более серьёзные осложнения, такие как нарушение работы сердца или печени. Важно, что капельница от похмелья может быть назначена как для снятия острых симптомов, так и для подготовки к дальнейшей реабилитации.
Подробнее можно узнать тут – капельница от похмелья на дом
В Екатеринбурге выезд нарколога на дом становится необходимостью, когда симптомы похмелья слишком выражены и пациент не может справиться с ними самостоятельно. Алкогольная интоксикация может привести к ряду проблем, таких как головная боль, слабость, тошнота и рвота, а иногда даже к более серьёзным состояниям, таким как аритмия или психоз. Выезд нарколога на дом позволяет быстро начать лечение, не тратя время на дорогу, что особенно важно в экстренных ситуациях.
Получить дополнительную информацию – капельница от похмелья анонимно
В Нижнем Новгороде выезд нарколога на дом используется при состояниях, требующих оперативной медицинской оценки и начала терапии. Врач приезжает с необходимыми препаратами, проводит осмотр и формирует план лечения на месте. Такой формат позволяет сократить время до начала помощи и снизить нагрузку на пациента.
Узнать больше – https://narkologicheskaya-pomoshh-nizhnij-novgorod-8.ru/
Этот процесс не занимает много времени — обычно процедура длится от 30 до 60 минут. Важно, что врач контролирует все этапы, обеспечивая безопасность пациента и корректируя терапию по мере необходимости. Такой подход позволяет быстро и эффективно облегчить симптомы похмелья и вернуться к нормальной жизнедеятельности.
Получить дополнительную информацию – http://kapelnicza-ot-pokhmelya-samara-13.ru/
Капельница от похмелья — это медицинская процедура, направленная на быстрое устранение симптомов алкогольной интоксикации и восстановление нормальной работы организма. При выраженном похмельном синдроме самостоятельные методы часто оказываются недостаточными, поскольку не воздействуют на причины состояния. В наркологической клинике «Похмельная служба» используется инфузионная терапия с круглосуточным выездом специалиста, что позволяет начать лечение сразу после обращения.
Выяснить больше – капельница от похмелья на дом
mostbet conectare cont http://mostbet25863.help
mostbet sürətli çıxarış https://mostbet29401.help
Алкогольная интоксикация оказывает серьёзное влияние на организм, вызывая головную боль, тошноту, слабость и головокружение. Капельница помогает организму быстро избавиться от продуктов распада алкоголя, восстановить нормальное функционирование органов и минимизировать последствия для здоровья. Важно, что мы обеспечиваем полное наблюдение врача на протяжении всей процедуры, что помогает гарантировать безопасность пациента и максимальную эффективность лечения.
Углубиться в тему – капельница от похмелья вызов на дом
Такие признаки требуют быстрого вмешательства, поскольку состояние может ухудшаться. Выезд врача позволяет стабилизировать показатели и предотвратить развитие осложнений. При этом помощь может предоставляться анонимно.
Выяснить больше – вывод из запоя на дому круглосуточно в санкт-петербурге
Капельница от похмелья в Екатеринбурге с инфузионной терапией и быстрым облегчением симптомов в наркологической клинике «Частный медик 24»
Разобраться лучше – капельница от похмелья анонимно в екатеринбурге
mostbet cricket http://mostbet25863.help/
Нарколог на дом может помочь в следующих ситуациях:
Получить больше информации – вызов нарколога на дом
Решение о госпитализации в наркологический стационар часто становится необходимым в случаях, когда пациент не может справиться с зависимостью самостоятельно, а также когда домашние условия лечения оказываются недостаточными. Стационарное лечение дает пациенту возможность находиться под круглосуточным наблюдением специалистов, что особенно важно при острых состояниях и абстинентных синдромах. В случае запоя может быть предложена помощь нарколога, а также выезд на дом для неотложного вмешательства и стабилизации состояния пациента.
Получить больше информации – наркологическая клиника стационар санкт-петербург