среда, 21 июля 2010 г.

Поставил сегодня vista 64bit

поймал сразу два bsod
один - потому что под вистой таки поменялась структура _KINTERRUPT
второй - потому что дебил неправильно итерировал по спискам _LIST_ENTRY - обычно раньше на всех виндах прокатывал следующий цикл:

  for ( iter = *List;
        (iter != NULL) && MmIsAddressValid(iter);
        iter = iter->Flink )


под вистой же все списки именно закольцованные - последний элемент содержит адрес List, а не треш какой-нть, т.е. нужно примерно так:
  for ( iter = *List;
        (iter != NULL) && MmIsAddressValid(iter) && (iter != (LIST_ENTRY*)List);
        iter = iter->Flink )


Итого оно бодро и весело сожрало весь и так не великий стек и свалилось в синяк. Забавно что под windows 7 64bit оно таки работало

Обновил кстати все ndis структуры версиями для vista 64 бита

Комментариев нет:

Отправить комментарий