Здравствуйте, Уважаемые!!! Сейчас тестирую на багги драйвер, и столкнулся с такой проблемой: При работе с динамическими структурами данных (XXX_Alloc_XXX), при отключении необходимо высвободить все ресурсы (FreeMem или ещё что). Но в любой проге, особенно на моментах исключений и аварийных выходов, сложно предусмотреть (сразу без ошибок) откат(возвращение) всех проделанных действий. Впринципе, в User-Mode, на это можно не так обращать внимание (ну забыл пару раз вызвать VirtualFree), особенно если потом следует заверение процесса. А если нет выключения, то заметить не высвобожденную память грубо можно (как я делаю) примерно глянув в диспетчер задач в колонку «память» (если, конечно помнишь, что было при запуске проги там записано ) В Kernel Mode не высвобожденные ресурсу храняться… ну либо до высвобождения либо выключения OS. Да и частое невысвобождение памяти, особенно NonePaged в больших размерах – фатально. Так вот хотелось бы глянуть, скока в ядре занято NonePaged Pool памяти, ну и другой. Процесс System постоянно показывает значение памяти постоянное, хоть займи её много – хоть нет (проверял). Сказав: «следи сам за полным высвобождением!», будете безусловно правы, но всё же, все ошибаются… Может проги какие есть для этой цели… или какие хитрости… Подскажите plz! Заранее благодарен. --==PPS==--
С софтайсом поставляется утилитка DriverMonitor сам не пробовал... Или в DDK смотри в Tool -> Driver Verifier она более продвинутая. Удачи в этом нелёгком деле
[ PavPS: <font color="indigo]Так вот хотелось бы глянуть, скока в ядре занято NonePaged Pool памяти, ну и другой.</font><!--color--> ] Если на си пишешь, то ExAllocatePool заменяется на ExAllocatePoolWithTag. В качестве тэга используется строка 'Ddk '. POOL_TAGGING по умолчанию определена. #ifdef POOL_TAGGING #define ExAllocatePool(a,b) ExAllocatePoolWithTag(a,b,' kdD') #endif Делаешь так: #define MEMORY_ALLOCATION_TAG ((ULONG) 'msaW') #undef ExAllocatePool #define ExAllocatePool(a,b) ExAllocatePoolWithTag(a,b,MEMORY_ALLOCATION_TAG) Запускаешь gflags.exe из DebuggingTools, ставишь галку "Enable pool tagging", ребутишься. Запускаешь poolmon.exe и видишь кто, чего, и скока. PS: Driver Verifier реальная вещь.