Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um driver NDIS cria uma estrutura de NET_BUFFER_LIST clonada a partir de uma estrutura de NET_BUFFER_LIST existente. A estrutura clonada faz referência aos dados das estruturas originais. Os drivers podem usar esse tipo de estrutura para transferir eficientemente os mesmos dados para vários caminhos.
A figura a seguir mostra a relação entre a estrutura NET_BUFFER_LIST pai e a estrutura filho clonada.
A figura anterior contém uma estrutura principal NET_BUFFER_LIST e uma estrutura secundária que foi derivada dessa estrutura principal. A estrutura pai tem uma estrutura NET_BUFFER_LIST_CONTEXT e uma estrutura NET_BUFFER com MDLs anexados. O ponteiro pai da estrutura superior é NULL, indicando que não se trata de uma estrutura derivada.
A estrutura NET_BUFFER_LIST filho tem uma estrutura NET_BUFFER com MDLs anexados. O filho NET_BUFFER_LIST tem um ponteiro para a estrutura pai. O NULL onde deveria haver um ponteiro para a estrutura NET_BUFFER_LIST_CONTEXT indica que a estrutura NET_BUFFER_LIST_CONTEXT do filho não existe.
Os drivers chamam a função NdisAllocateCloneNetBufferList para criar um clone da estrutura de NET_BUFFER_LIST. O NDIS aloca novas estruturas NET_BUFFER e MDLs com a estrutura NET_BUFFER_LIST clonada. O NDIS não aloca uma estrutura NET_BUFFER_LIST_CONTEXT para a estrutura clonada. As novas estruturas NET_BUFFER e MDLs descrevem os mesmos dados que na estrutura pai. Os dados não são copiados.
Os drivers chamam a função NdisFreeCloneNetBufferListpara libertar uma estrutura NET_BUFFER_LIST e todas as estruturas NET_BUFFER associadas, bem como as cadeias MDL que foram previamente alocadas chamando a função NdisAllocateCloneNetBufferList .