Написал драйвер. Работал нормально, но сегодня вдруг вывалился в синий экран. И работает дальше опять нормально - в чем дело не пойму. Загнал дамп в WinDBG, вот что он выдал: Код (Text): DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1) An attempt was made to access a pageable (or completely invalid) address at an interrupt request level (IRQL) that is too high. This is usually caused by drivers using improper addresses. If kernel debugger is available get stack backtrace. Arguments: Arg1: e2e31494, memory referenced Arg2: 000000ff, IRQL Arg3: 00000000, value 0 = read operation, 1 = write operation Arg4: a9c7a2b6, address which referenced memory READ_ADDRESS: e2e31494 Paged pool CURRENT_IRQL: ff FAULTING_IP: a9c7a2b6 39500c cmp dword ptr [eax+0Ch],edx DEFAULT_BUCKET_ID: DRIVER_FAULT BUGCHECK_STR: 0xD1 TRAP_FRAME: a96d8ce0 -- (.trap 0xffffffffa96d8ce0) ErrCode = 00000000 eax=e2e31488 ebx=c0000002 ecx=88e22a94 edx=000005d0 esi=88e22a90 edi=88e22aa0 eip=a9c7a2b6 esp=a96d8d54 ebp=0012fc94 iopl=0 nv up di pl nz na po nc cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010002 suhenter!BooksList2BookStructureBPID+0x26: a9c7a2b6 39500c cmp dword ptr [eax+0Ch],edx ds:0023:e2e31494=???????? Resetting default scope LAST_CONTROL_TRANSFER: from a9c7a2b6 to 804e0aac FAULTING_SOURCE_CODE: 143: PBOOK_STRUCTURE book_struc = (PBOOK_STRUCTURE)(BooksList->ListHead.Flink); 144: while(TRUE){ 145: if (&book_struc->ListEntry == &BooksList->ListHead) 146: break; > 147: if (book_struc->BookPid == BookPid) 148: { 149: *BookStructure = book_struc; 150: ns = STATUS_SUCCESS; 151: break; 152: } Этот код вызывается в обработчике INT3. book_struc создаю следующим образом: Код (Text): NTSTATUS NewBooksList(OUT PBOOKS_LIST *BooksList){ *BooksList = (PBOOKS_LIST)ExAllocatePool(NonPagedPool, sizeof(BOOKS_LIST)); (*BooksList)->Count = 5; (*BooksList)->pPagedLookasideList = (PPAGED_LOOKASIDE_LIST)ExAllocatePool(NonPagedPool, sizeof(PAGED_LOOKASIDE_LIST)); ExInitializePagedLookasideList((*BooksList)->pPagedLookasideList, NULL, NULL, 0, sizeof(BOOK_STRUCTURE), 0, 0); InitializeListHead(&(*BooksList)->ListHead); NTSTATUS ns = ExInitializeResourceLite(&(*BooksList)->Resource); DPRINT("BOOKS_LIST: New BOOKS_LIST Created"); if(!NT_SUCCESS(ns)){ DPRINT("Error ExInitializeResourceLite in NewBooksList"); ExDeletePagedLookasideList((*BooksList)->pPagedLookasideList); ExFreePool(&(*BooksList)->pPagedLookasideList); ExFreePool((*BooksList)); } return ns; } Я так понял: из-за чего-то сбросился мой список в файл подкачки, и из-за этого все проблемы... Подскажите, правильно ли я понял и как этого избежать в будущем?