Какая сетевая библиотека на каком IRQL? - PullRequest
1 голос
/ 20 июля 2009

Я несколько запутался, потому что я прочитал, что на IRQL_PASSIVE должно быть возможно "все", но я не уверен, включает ли это winsock2 или другие пользовательские библиотеки. Мое нормальное понимание было бы использовать интерфейс WSK. Но было бы намного удобнее, если бы я мог использовать обычные розетки.

Поскольку я часто сталкиваюсь с ошибками сборщика при попытке включить winsock, я немного не уверен. И поскольку поисковая документация не дает достоверного ответа, я хотел бы сформулировать это как вопрос: к каким библиотекам я могу получить доступ в IRQL_PASSIVE? Является ли IRQL единственным ограничивающим параметром?

1 Ответ

2 голосов
/ 20 июля 2009

Вы не можете получить доступ к (большинству) пользовательских библиотек земли из режима ядра. Либо вы получаете интерфейс режима ядра для этой библиотеки, либо вам нужно использовать службу пользовательского режима (инвертированные вызовы).

Winsock имеет интерфейс ядра, см. Эту статью MSDN .

Уровень IRQL определяет, какие «сервисы ядра» вы можете использовать. Таким образом, для KeGetCurrentIrql ()> = IRQL_DISPATCH вы не можете зависеть от подкачки (это приводит к проверке ошибок IRQL_NOT_LESS_OR_EQUAL) и не можете (не должны?) Вызывать функции, которые используют подкачку.

Не мешает использованию библиотек.

...