Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Драйвер NDIS создает клонированную структуру NET_BUFFER_LIST из существующей NET_BUFFER_LIST структуры. Клонированная структура ссылается на исходные данные структур. Драйверы могут использовать этот тип структуры, чтобы эффективно передавать одни и те же данные в несколько путей.
На следующем рисунке показана связь между родительской NET_BUFFER_LIST структурой и клонированной дочерней структурой.
На предыдущем рисунке содержится родительская структура NET_BUFFER_LIST и дочерняя структура, производная от этой родительской структуры. Родительская структура имеет одну структуру NET_BUFFER_LIST_CONTEXT и одну структуру NET_BUFFER с присоединёнными MDL. Родительский указатель родительской структуры NULL, указывающий, что она не является производной структурой.
У дочерней структуры NET_BUFFER_LIST есть одна структура NET_BUFFER с прикрепленными MDL. Дочерний NET_BUFFER_LIST имеет указатель на родительскую структуру. NULL, где должен быть указан указатель структуры NET_BUFFER_LIST_CONTEXT, указывает, что дочерний элемент не имеет этой структуры.
Драйверы вызывают функцию NdisAllocateCloneNetBufferList, чтобы создать структуру клонирования NET_BUFFER_LIST. NDIS выделяет новые NET_BUFFER структуры и многомерные выражения с клонированной NET_BUFFER_LIST структурой. NDIS не выделяет NET_BUFFER_LIST_CONTEXT структуру для клонированного структуры. Новые NET_BUFFER структуры и многомерные выражения содержат те же данные, что и в родительской структуре. Данные не копируются.
Драйверы вызывают функцию NdisFreeCloneNetBufferList, чтобы освободить NET_BUFFER_LIST структуру и все связанные структуры NET_BUFFER и цепочки MDL, которые ранее были выделены путем вызова NdisAllocateCloneNetBufferList.