上周在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://zapoy.narkologicheskaya-klinika-spb-hdx.ru Там и про лечение алкоголизма в СПб по городу. Обращайтесь к специалистам.
Решение о кодировании принимает врач после очной оценки. Методика подбирается индивидуально, с обязательным информированным согласием. Ниже — ориентиры, помогающие понять, когда процедура уместна, а когда стоит отложить или выбрать альтернативу.
Углубиться в тему – бесплатное кодирование от алкоголизма санкт-петербург
Соблюдаем конфиденциальность, бережно общаемся с пациентом и его близкими на каждом этапе.
Ознакомиться с деталями – вызов капельницы на дом
«НеоТрезвие СПБ» работает в парадигме доказательной наркологии. Мы используем медикаментозные и психотерапевтические подходы, а также их комбинации. Выбор зависит от клинического запроса, сопутствующих диагнозов и предпочтений пациента. Ниже — сравнительная таблица, которая отражает практический смысл каждого направления.
Получить дополнительные сведения – анонимное кодирование от алкоголизма в санкт-петербурге
Этот метод направлен на выявление и замену негативных мыслей и стереотипов поведения, связанных с потреблением алкоголя. Пациент учится отслеживать свои эмоциональные реакции и заменять деструктивные установки конструктивными стратегиями противостояния стрессу.
Разобраться лучше – http://lechenie-alkogolizma-sochi0.ru
И дома уже не вытянуть. Боятся оставить одного. Наркологическая клиника СПб — это когда человек под присмотром врачей. Потом стабилизируют состояние. Скорая наркологическая помощь СПб — Без лишнего риска для здоровья. Вся информация доступна здесь: платная наркологическая помощь https://zapoy.narkologicheskaya-klinika-spb-hdx.ru И про лучшие наркологические клиники СПб для Ленобласти. Иногда клиника — единственный выход.
Соблюдаем конфиденциальность, бережно общаемся с пациентом и его близкими на каждом этапе.
Узнать больше – наркологическая клиника цены
Чтобы помощь была прозрачной и управляемой, каждый этап имеет цель, индикаторы безопасности и эффективности, а также понятное «окно оценки» результата. Коррекции проводятся «штучно», по правилу одного изменения — это защищает от полипрагмазии и позволяет читабельно видеть вклад каждого шага.
Исследовать вопрос подробнее – вывод из запоя вызов в казани
Запой может затянуться на неделю. Боятся оставить одного. Запой наркологическая клиника — И без доступа к алкоголю. И только после этого начинают основное лечение. Скорая наркологическая помощь СПб — Когда дома уже не вариант. Вся информация доступна здесь: наркологическая помощь наркологическая помощь Там и про лечение алкоголизма в СПб по городу. Не тяните, если дома уже не справляетесь.
В данной статье рассматриваются проблемы общественного здоровья и социальные факторы, влияющие на него. Мы акцентируем внимание на значении профилактики и осведомленности в защите здоровья на уровне общества. Читатели смогут узнать о новых инициативах и программах, направленных на улучшение здоровья населения.
Подробная информация доступна по запросу – delta clinic ru барнаул
Соблюдаем конфиденциальность, бережно общаемся с пациентом и его близкими на каждом этапе.
Изучить вопрос подробнее – https://2narkologicheskaya-klinika-balashiha.ru/
Каждый пациент проходит несколько последовательных этапов, направленных на очищение организма, стабилизацию эмоционального состояния и формирование стойкой мотивации к трезвой жизни. Такой подход позволяет не только устранить физическую зависимость, но и укрепить психическую устойчивость.
Получить больше информации – https://narkologicheskaya-klinika-v-samare16.ru/chastnaya-narkologicheskaya-klinika-samara
Иногда состояние развивается резко. Судороги, галлюцинации, делирий, потеря сознания, сильная боль в груди, выраженная одышка, тяжелое отравление, психозы, высокая температура или значительное ухудшение поведения требуют срочной оценки. В таких ситуациях обычная капельница на дому может оказаться недостаточной. Нарколог может рекомендовать стационарное лечение или предложить вызвать скорую. Безопасность пациента всегда должна находиться выше желания выполнить процедуру дома максимально быстро.
Подробнее – kapelnica-ot-zapoya
Профессиональная помощь позволяет не ограничиваться временным облегчением похмелья. Нарколог проводит диагностику, оценивает физическое и психическое состояние, определяет показания к инфузионной терапии и подбирает индивидуальный план лечения. Если состояние относительно стабильное, вывод из запоя может проходить на дому. При тяжелой интоксикации, длительном запое, выраженных нарушениях сознания, судорогах или серьезных хронических болезнях пациента направляют в стационар клиники, где лечение проводится круглосуточно под наблюдением специалистов.
Получить больше информации – нарколог на дом вывод из запоя
Состояние пациента отслеживается на каждом этапе, от первичной консультации до дальнейших рекомендаций.
Изучить вопрос подробнее – kapelnica-na-domu-ot-alkogolya-moskva
Капельница от запоя в Москве применяется как медицинский метод детоксикации при алкогольной интоксикации и выраженном похмельном или абстинентном синдроме. Центр «Мед Алко» организует помощь круглосуточно: возможен выезд врача на дому либо проведение процедуры в стационаре. Нарколог оценивает общее состояние человека, длительность запоя, количество выпитого спиртного, наличие хронических заболеваний, показатели давления, пульса и уровень сознания. Только после осмотра подбирается индивидуальный состав капельницы, определяется объем раствора и решается вопрос, безопасно ли проводить лечение в домашних условиях.
Изучить вопрос подробнее – что входит в капельницу от запоя
Эта информационная публикация освещает широкий спектр тем из мира медицины. Мы предлагаем читателям ясные и понятные объяснения современных заболеваний, методов профилактики и лечения. Информация будет полезна как пациентам, так и медицинским работникам, желающим поддержать уровень своих знаний.
Открой скрытое – “delta clinic ru
В этой статье мы говорим о важности поддержки в процессе выздоровления. Рассматриваются семьи, группы поддержки, специалисты и онлайн-ресурсы, которые могут сыграть решающую роль в избавлении от зависимости.
Только факты! – delta clinic ru
В статье рассматриваются различные стратегии борьбы с зависимостями, включая проверенные методы и реальные истории успеха. Читатель узнает, какие подходы наиболее эффективны и как начать путь к выздоровлению.
Ознакомиться с теоретической базой – наркологическаяклиникадельта в балашихе
Мы намеренно избегаем «сильных коктейлей на всякий случай». Состав инфузии подбирается под доминирующие симптомы текущего часа — выраженную жажду и редкий диурез, «качели» давления и тахикардию, рвоту и отказ воды, ночную тревогу и бессонницу, утреннюю «туманность» и когнитивную рассеянность. Каждый модуль имеет одну цель и одно «окно оценки», чтобы было понятно, что именно помогает, а что нужно скорректировать. Если отклик ниже ожидаемого, врач меняет только один параметр — темп, последовательность, водный режим или поведенческую поддержку — и фиксирует результат.
Получить больше информации – вызов наркологической помощи в казани
Для наглядности ниже приведена таблица с основными направлениями медикаментозной терапии и их эффектами:
Подробнее – http://narkologicheskaya-klinika-v-samare16.ru/chastnaya-narkologicheskaya-klinika-samara/
Капельница на дому не сводится к механическому введению раствора. Медик оценивает состояние пациента, давление, пульс, температуру, показатели крови при наличии результатов, переносимость препаратов и вероятность осложнений. Для медицинского персонала важны качество процедуры, корректная дозировка и контроль реакции организма. Выездной формат особенно удобен пожилому человеку, человеку со сниженной физической активностью или тому, кому тяжело посещать клиники самостоятельно.
Получить больше информации – kapelnica-na-domu-cena
Совместные занятия с другими пациентами создают атмосферу поддержки и понимания. Под руководством психотерапевта участники группы делятся опытом, обсуждают сложные ситуации и находят оптимальные способы удержаться от срыва.
Подробнее – http://lechenie-alkogolizma-sochi0.ru/
Ключевым этапом является снятие интоксикации и устранение абстинентного синдрома. Применяются препараты, направленные на нормализацию работы внутренних органов и поддержание общего состояния здоровья. Медикаментозная терапия включает назначение антидепрессантов, препаратов, блокирующих тягу к алкоголю, что подтверждается исследованиями, опубликованными на научном портале PubMed. Актуальные рекомендации по медикаментозному лечению алкоголизма доступны на Национальном центре здоровья.
Подробнее – https://lechenie-alkogolizma-krasnodar00.ru/klinika-lecheniya-alkogolizma-krasnodar/
Столкнулись с бедой в семье. Не знаешь, за что хвататься. Наркологическая клиника СПб — это не просто слова. Специалисты приедут на дом. Наркологическая помощь стационар — работает без постановки на учёт. Вся информация доступна здесь: платная наркологическая клиника https://narkolog.narkologicheskaya-klinika-spb-hdx.ru Там и про лечение алкоголизма в СПб в СПб. Не ждите, пока станет хуже.
Главная задача — вернуть контроль над самочувствием мягко и последовательно. Мы не соревнуемся в дозах, а собираем устойчивую траекторию улучшения: каждый модуль терапии отвечает за одну цель и имеет своё «окно оценки». Если отклик ниже ожиданий — меняем ровно один параметр (темп, последовательность или поведенческий элемент среды), чтобы точно понимать, что помогло.
Получить больше информации – вывод из запоя вызов на дом в казани
В этой публикации мы предложим ряд рекомендаций по избавлению от зависимостей и успешному восстановлению. Мы обсудим методы привлечения поддержки и важность самосознания. Эти советы помогут людям вернуться к нормальной жизни и стать на путь выздоровления.
Открыть полностью – кодировка от алкоголизма
Что голова раскалывается. Ни встать, ни работать. Наркологическая клиника — И человеку становится легче. Сначала уходит интоксикация. Наркологическая помощь стационар — без осуждения. Советую глянуть источник: платные клиники лечения алкоголизма https://pohmelye.narkologicheskaya-klinika-spb-hdx.ru И про центр наркологической помощи для Ленобласти. Иногда один звонок решает всё.
Первичный этап заключается в оценке состояния пациента и быстром подборе схемы инфузионной терапии. Врач фиксирует показания ЭКГ, сатурацию кислорода и биохимический параметр глюкозы в крови. После этого подключается капельница с раствором для выведения продуктов распада алкоголя и одновременной коррекции показателей обмена веществ. Последующие визиты врача позволяют скорректировать терапию и предотвратить развитие побочных реакций.
Получить больше информации – круглосуточная наркологическая помощь в екатеринбурге
Помню, соседка рассказывала. А потом как отрезало. Клиника реабилитации наркозависимых — это не просто стены и койки. Там работают с причиной. Реабилитация алкоголиков — Но без него срывы почти неизбежны. Можете ознакомиться по ссылке: реабилитационный центр наркомании нижний новгород https://klinika.reabilitaczionnyj-czentr-nnovgorod-fge.ru Там и про ребцентры в Нижнем. Иногда центр — единственный шанс.
Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев.
Ознакомиться с деталями – вывод из запоя на дому Красноярск
Как сын её прошёл детокс. А потом как отрезало. Реабилитационный центр для наркозависимых — С психологами, группами и режимом. А не только с симптомом. Лечение зависимости — Но без него срывы почти неизбежны. Можете ознакомиться по ссылке: алкоголик центр нижний новгород алкоголик центр нижний новгород И про программы для Нижнего Новгорода. Не ждите очередного срыва.
Комплексное лечение зависимости строится с учетом физической и психической составляющих болезни. Врач оценивает состояние человека, длительность употребления алкоголя или наркотиков, наличие хронического заболевания, особенности поведения и мотивацию к трезвости. На основании первичной диагностики составляется индивидуальный план. В зависимости от ситуации лечение возможно на дому, амбулаторно или в стационаре клиники. Если человеку требуется срочный вывод из запоя, круглосуточная помощь позволяет вызвать нарколога домой либо организовать госпитализацию в комфортный стационар.
Дополнительная информация – наркологическая клиника в балашихе
Близкий пьёт неделями. Тут голова кругом идёт. Наркологический центр — это не просто слова. Осмотрят, поставят капельницу. Наркологическая помощь стационар — Без осуждения. Вся информация доступна здесь: наркологический центр наркологический центр И про лучшие наркологические клиники СПб по городу. Обращайтесь к специалистам.
И сам уже не может остановиться. Не знаешь, за что хвататься. Наркологический центр — это не просто слова. Объяснят, что делать дальше. Наркологическая помощь стационар — Без лишних вопросов. Вся информация доступна здесь: наркологический центр спб наркологический центр спб И про лучшие наркологические клиники СПб по городу. Не ждите, пока станет хуже.
Каждое лечение подбирается индивидуально. В одних случаях достаточно курса медицинского восстановления, в других необходимо стационарное лечение с круглосуточным контролем врача. Если зависимость существует много лет или человек уже неоднократно проходил лечение без устойчивой ремиссии, специалисты уделяют больше внимания психотерапии, причинам употребления, созависимости родственников и профилактике возвращения к привычке.
Дополнительная информация – narkologicheskaya-klinika-moskva
В данной статье рассматриваются проблемы общественного здоровья и социальные факторы, влияющие на него. Мы акцентируем внимание на значении профилактики и осведомленности в защите здоровья на уровне общества. Читатели смогут узнать о новых инициативах и программах, направленных на улучшение здоровья населения.
Доступ к полной версии – кодирование от алкоголизма Рязань
Помню, соседка рассказывала. Работал, держался. Центр реабилитации зависимых — это не просто стены и койки. А не только с симптомом. Лечение наркомании — Особенно если дома всё напоминает о прошлом. Можете ознакомиться по ссылке: алкоголик центр нижний новгород алкоголик центр нижний новгород И про программы в Нижнем. Не ждите очередного срыва.
Весь процесс можно представить следующим образом:
Получить дополнительные сведения – вызов нарколога на дом челябинск
Помню, соседка рассказывала. Работал, держался. Центр реабилитации зависимых — Это программа на несколько месяцев. А не только с симптомом. Лечение зависимости — это долгий путь. Можете ознакомиться по ссылке: реабилитация наркоманов нижний новгород https://klinika.reabilitaczionnyj-czentr-nnovgorod-fge.ru И про программы для региона. Не ждите очередного срыва.
Помню, сосед три дня не выходил из квартиры. Оказалось, опять сорвался. Нарколог на дом вывод из запоя — Врач реально спасает. Приехал, осмотрел, поставил систему. Круглосуточный вывод из запоя — Без лишних вопросов. Вся информация доступна здесь: вывод из запоя врач на дом https://narkolog.vyvod-iz-zapoya-na-domu-msk-wtk.ru Там и про вывод из запоя цены для жителей столицы. Иногда один звонок меняет всё.
После бурной ночи бывает так плохо. Ни встать, ни работать. Наркологический центр СПб — это когда врач приезжает сам. Потом возвращаются силы. Скорая наркологическая помощь СПб — Без постановки на учёт. Советую глянуть источник: наркологические клиники спб наркологические клиники спб И про лучшие наркологические клиники СПб по городу. Обращайтесь к специалистам.
Позвонить в клинику рекомендуется, если человек не справляется самостоятельно, употребление становится регулярным, появляются проблемы со здоровью и поведением либо возникают повторные срывы. Наркологическая помощь особенно важна при острой интоксикации, тяжелой абстиненции, делирии и других состояниях, связанных с риском для здоровья.
Получить больше информации – наркологическая клиника стационар
С пациентом работают профильные специалисты, которые оценивают состояние и подбирают безопасный план помощи.
Получить больше информации – https://vyvod-iz-zapoya-krasnoyarsk67.ru/
И руки трясутся с утра. А на улице дела ждут. Наркологическая клиника СПб — И человеку становится легче. Потом возвращаются силы. Скорая наркологическая помощь СПб — Без лишних вопросов. Советую глянуть источник: наркологическая клиника спб наркологическая клиника спб И про лучшие наркологические клиники СПб для Ленобласти. Не мучайтесь, если можно помочь.
Как брат её прошёл детокс. Работал, держался. Наркологический реабилитационный центр — это не просто стены и койки. А не только с симптомом. Лечение зависимости — это долгий путь. Советую глянуть источник: реабилитационный центр наркозависимых реабилитационный центр наркозависимых И про условия размещения по области. Иногда центр — единственный шанс.
Он не ел, не спал, не разговаривал. Врач приехал быстро. Капельница от запоя на дому — Через два часа муж пришёл в себя. Всё анонимно, без учёта. Анонимный вывод из запоя на дому — Когда счёт идёт на часы, медлить нельзя. Проверено на себе. прокапывание на дому https://vrach.vyvod-iz-zapoya-na-domu-msk-wtk.ru По ссылке — подробная информация для Московской области. Хотите быстро вывести из запоя — переходите по ссылке. Нарколог на дом — быстро, анонимно, эффективно!
Жена его на нервах была. Запой жуткий, сам не остановится. Вывод из запоя на дому — это не роскошь, а необходимость. Через пару часов человек задышал спокойно. Круглосуточный вывод из запоя — Без лишних вопросов. Вся информация доступна здесь: вывод из запоя круглосуточно москва вывод из запоя круглосуточно москва И про капельницу от похмелья на дому по Москве. Не тяните, если близкий срывается.