Платформа фильтрации Windows: доступ к полезной нагрузке пакета

Я просматриваю цепочку MDL NET_BUFFER, чтобы получить связанные данные. Два макроса, которые используются для указания того, где начинается используемое пространство данных (NET_BUFFER_DATA_OFFSET() и NET_BUFFER_CURRENT_MDL_OFFSET()), меня немного смутили, поскольку я всегда наблюдал, как они возвращают одно и то же значение, и оба кажутся одинаково пригодными для использования.

Какой из них следует использовать? В чем разница между ними?


person Assaf Levy    schedule 02.02.2012    source источник


Ответы (1)


Хорошо, понятно.
Очевидно, что если текущий mdl не указывает на первый mdl, то NET_BUFFER_DATA_OFFSET() будет указывать размер всех mdl до текущего плюс собственное смещение текущего, а NET_BUFFER_CURRENT_MDL_OFFSET() будет указывать только смещение в пределах текущего mdl, и это все, что вам действительно нужно, если вы используете макрос NET_BUFFER_CURRENT_MDL().
Оптимизация.

person Assaf Levy    schedule 02.02.2012