> Как узнать? Смотрю стек - в "обозримом прошлом" адресов > отлаживаемого драйвера не наблюдается, а по F12 он, > естессно, впадает в дамп памяти. По SEH доку читать в лом, хотя есть варианты.
1) Обернуть все функции в __try __except блоки и получать GetExceptionInformation
2) Ввести макрос DrivernameKdPrint, который если определен DBG печатает переданную строку, а если не определен, то макрос пустой. Пример можно взять в любом DDK-шном дривере. После этого на входе и выходе (как минимум, вообще-то лучше во всех сколь-нить значительных точках) во все функции расставить мессаги. Дальше будет понятно где именно драйвер слетел. В крайнем случае, если потрейсить не получится (он слетает асинхронно), то обернуть в __try __except только одну функцию.
> Как узнать? Смотрю стек - в "обозримом прошлом" адресов > отлаживаемого драйвера не наблюдается, а по F12 он, > естессно, впадает в дамп памяти. По SEH доку читать в лом, хотя есть варианты.
1) Обернуть все функции в __try __except блоки и получать GetExceptionInformation
2) Ввести макрос DrivernameKdPrint, который если определен DBG печатает переданную строку, а если не определен, то макрос пустой. Пример можно взять в любом DDK-шном дривере. После этого на входе и выходе (как минимум, вообще-то лучше во всех сколь-нить значительных точках) во все функции расставить мессаги. Дальше будет понятно где именно драйвер слетел. В крайнем случае, если потрейсить не получится (он слетает асинхронно), то обернуть в __try __except только одну функцию.