Partilhar via


Memória compartilhada em buffers de recebimento

Esta seção descreve o layout da memória compartilhada nos buffers de recebimento VMQ. Para obter mais informações sobre como usar os buffers em indicações de recebimento, consulte VMQ Receive Path.

Se o driver de protocolo sobreposto definir o sinalizador NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED no membro Flags da estrutura NDIS_RECEIVE_QUEUE_PARAMETERS, o adaptador de rede deverá dividir um pacote recebido a um deslocamento igual ou maior que o tamanho de lookahead solicitado e usar DMA para transferir os dados lookahead e os dados pós-lookahead para segmentos de memória compartilhada separados.

Os drivers de miniporta especificam as configurações para o tipo lookahead (NdisSharedMemoryUsageReceiveLookahead) ou outros tipos de memória compartilhada quando a memória compartilhada é alocada. Por exemplo, o driver de miniporta chama a função NdisAllocateSharedMemory e define o membro Usage na estrutura NDIS_SHARED_MEMORY_PARAMETERS como NdisSharedMemoryUsageReceiveLookahead. Os drivers de miniporta devem alocar memória compartilhada para uma fila quando a alocação da fila estiver concluída. Para obter informações sobre como alocar e liberar recursos de memória compartilhada para filas, consulte Alocação de recursos de memória compartilhada.

A ilustração a seguir mostra as relações para os dados de rede quando os dados de entrada são divididos em dois buffers de memória compartilhada.

Diagrama mostrando relações de dados de rede com dados de entrada divididos em dois buffers de memória compartilhada.

A estrutura NET_BUFFER_SHARED_MEMORY especifica informações de memória compartilhada. Pode haver uma lista vinculada desses buffers de memória compartilhada que estão associados a uma estrutura NET_BUFFER .

Use as macros NET_BUFFER_SHARED_MEM_NEXT_SEGMENT, NET_BUFFER_SHARED_MEM_FLAGS, NET_BUFFER_SHARED_MEM_HANDLE, NET_BUFFER_SHARED_MEM_OFFSET e NET_BUFFER_SHARED_MEM_LENGTH para acessar o NET_BUFFER_SHARED_MEMORY em uma estrutura NET_BUFFER. O membro SharedMemoryInfo da estrutura NET_BUFFER contém a primeira estrutura NET_BUFFER_SHARED_MEMORY na lista vinculada.

Nota A partir do NDIS 6.30, a divisão dos dados de pacotes em buffers de antecipação separados não é mais suportada. A partir do Windows Server 2012, o driver de protocolo superior não definirá o sinalizador NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED no membro Flags da estrutura NDIS_RECEIVE_QUEUE_PARAMETERS.