Как образцы Windows DDK справляются с удалением страниц? Я не вижу много кода, имеющего дело с этим в примерах
Как получилось, что образцы Windows DDK не справляются с удалением страниц? Они не могут быть просмотрены?
3 ответа
Pageable код помечается #pragma code_seg("PAGE"). Вот почему драйверы не имеют дело с подкачкой. По умолчанию все они не допускаются.
Постраничный код оборачивается #pragma code_seg("PAGExxx")
, страничные данные по #pragma data_seg("PAGExxx")
, Также возможно указывать постраничные функции (только c-linkage) с #pragma alloc_text
, Классы также могут быть разбиты на страницы с помощью declspec(allocate())
начиная с WDK 8. Существует также API для блокировки и разблокировки страниц в памяти, что позволяет контролировать время выполнения. Смотрите больше здесь: http://social.msdn.microsoft.com/Forums/en-US/wdk/thread/ba75e766-6a8f-4fe8-9d03-b69be85655d9
Не говоря конкретно о драйверах Windows, но только о драйверах устройств в целом:
Не иметь больших водителей.
Не выполняйте такую большую работу в режиме ядра и, конечно, не выполняйте такую большую работу при высоких уровнях приоритета прерываний. Делайте только то, что нужно на этих уровнях, затем делегируйте остальную часть работы коду, который выполняется на самом низком уровне (0).