Поддержка разделения Header-Data в драйверах протокола и драйверах фильтров
Драйверы протокола NDIS 6.0 и более поздних версий и драйверы фильтров должны поддерживать получение указаний с заголовком и данными в несмежных буферах.
Не следует предполагать, что в структуре NET_BUFFER существует только один MDL. Драйверы протокола и драйверы фильтров не обязаны выполнять какие-либо действия для поддержки регистрации разделения заголовков и данных. Но код обработки получения драйвера должен обрабатывать несколько MDL в цепочке MDL и использовать следующие макросы MDL NDIS для доступа к цепочке MDL:
При использовании разделенных буферов длина данных, связанная со структурой NET_BUFFER (в элементе DataLengthструктуры NET_BUFFER_DATA ), разбивается между несколькими списками MDL. Например, если драйвер протокола попытался получить доступ ко всему буферу данных в первом MDL, драйвер может получить доступ к недопустимым данным.
Примечание После того как вызов с указанием приема возвращается в драйвер минипорта, драйвер минипорта может вернуть заголовок MDL. Переопределяющие драйверы или их клиенты не должны обращаться к многомерным спискам заголовков после того, как вызов с указанием приема возвращается драйверу мини-порта. Это ограничение также применяется, даже если драйвер минипорта не указывает полученные данные с состоянием NDIS_RECEIVE_FLAGS_RESOURCES.