Compartilhar via


MINIPORT_CANCEL_SEND função de retorno de chamada (ndis.h)

O NDIS chama a função MiniportCancelSend de um driver de miniport para cancelar a transmissão de todas as estruturas de NET_BUFFER_LIST marcadas com um identificador de cancelamento especificado.

Nota Você deve declarar a função usando o tipo MINIPORT_CANCEL_SEND . Para obter mais informações, consulte a seção Exemplos a seguir.
 

Sintaxe

MINIPORT_CANCEL_SEND MiniportCancelSend;

void MiniportCancelSend(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PVOID CancelId
)
{...}

Parâmetros

[in] MiniportAdapterContext

Um identificador para uma área de contexto que o driver de miniporto alocou em sua função MiniportInitializeEx . O driver de miniporto usa essa área de contexto para manter informações de estado sobre um adaptador.

[in] CancelId

Um identificador de cancelamento. Esse identificador especifica as estruturas de NET_BUFFER_LIST que estão sendo canceladas.

Retornar valor

Nenhum

Comentários

Drivers de miniporte e drivers intermediários que enviam NET_BUFFER_LIST estruturas exportam uma função MiniportCancelSend . A função MiniportCancelSend cancela a transmissão pendente das estruturas de NET_BUFFER_LIST especificadas.

Quando um driver NDIS sobressociado chama o Função NdisCancelSendNetBufferLists , o NDIS chama a função MiniportCancelSend do driver de nível inferior apropriado na associação. O NDIS só fará essa chamada se o driver de nível inferior exportar uma função MiniportCancelSend .

A função MiniportCancelSend de um miniport driver executa as seguintes operações:

  1. Percorre sua lista de estruturas de NET_BUFFER_LIST enfileiradas para o adaptador especificado e chama o NDIS_GET_NET_BUFFER_LIST_CANCEL_ID macro para obter o identificador de cancelamento para cada estrutura de NET_BUFFER_LIST enfileirada. O driver de miniporto compara o identificador de cancelamento que NDIS_GET_NET_BUFFER_LIST_CANCEL_ID retorna com o identificador de cancelamento que o NDIS passou para MiniportCancelSend.
  2. Remove da fila de envio (un-links) todas as estruturas NET_BUFFER_LIST cujos identificadores de cancelamento correspondem ao identificador de cancelamento especificado.
  3. Chama o Função NdisMSendNetBufferListsComplete para todas as estruturas de NET_BUFFER_LIST desvinculadas para retornar as estruturas . O driver de miniporto define o campo status das estruturas NET_BUFFER_LIST como NDIS_STATUS_SEND_ABORTED.
A função MiniportCancelSend de um driver intermediário executa as seguintes operações:
  1. Executa as operações na lista anterior para a função MiniportCancelSend de um driver de miniport.
  2. Chama o Função NdisCancelSendNetBufferLists , especificando a associação que mapeia para o adaptador que o NDIS especificou na chamada para MiniportCancelSend.
O NDIS chama MiniportCancelSend em IRQL <= DISPATCH_LEVEL.

Exemplos

Para definir uma função MiniportCancelSend , primeiro você deve fornecer uma declaração de função que identifique o tipo de função que você está definindo. O Windows fornece um conjunto de tipos de função de retorno de chamada para drivers. Declarar uma função usando os tipos de função ajuda a Análise de Código para Drivers, SDV ( Verificador de Driver Estático ) e outras ferramentas de verificação a encontrar erros e é um requisito para gravar drivers para o sistema operacional Windows.

Por exemplo, para definir uma função MiniportCancelSend chamada "MyCancelSend", use o tipo MINIPORT_CANCEL_SEND conforme mostrado neste exemplo de código:

MINIPORT_CANCEL_SEND MyCancelSend;

Em seguida, implemente sua função da seguinte maneira:

_Use_decl_annotations_
VOID
 MyCancelSend(
    NDIS_HANDLE  MiniportAdapterContext,
    PVOID  CancelId
    )
  {...}

O tipo de função MINIPORT_CANCEL_SEND é definido no arquivo de cabeçalho Ndis.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a anotação Use_decl_annotations à sua definição de função. A anotação Use_decl_annotations garante que as anotações aplicadas ao tipo de função MINIPORT_CANCEL_SEND no arquivo de cabeçalho sejam usadas. Para obter mais informações sobre os requisitos para declarações de função, consulte Declarando funções usando tipos de função de função para drivers NDIS.

Para obter informações sobre Use_decl_annotations, consulte Anotando o comportamento da função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.0 e posterior.
Plataforma de Destino Windows
Cabeçalho ndis.h (inclua Ndis.h)
IRQL <= DISPATCH_LEVEL

Confira também

MiniportInitializeEx

NDIS_GET_NET_BUFFER_LIST_CANCEL_ID

NET_BUFFER

NET_BUFFER_LIST

NdisCancelSendNetBufferLists

NdisMSendNetBufferListsComplete