Платформа фильтрации Windows: доступ к полезной нагрузке пакета - PullRequest
1 голос
/ 02 февраля 2012

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

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

1 Ответ

1 голос
/ 02 февраля 2012

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

...