NDIS_SET_PACKET_STATUS
9/8/2008
Essa macro define o Status membro na estrutura associado com um descritor pacote especificado imediatamente antes de que chama um driver de NdisMIndicateReceivePacket função ou antes de um driver MiniportSendPackets função retorna controle.
Syntax
NDIS_STATUS NDIS_SET_PACKET_STATUS(
PNDIS_PACKET _Packet,
NDIS_STATUS _Status
);
Parameters
- _Packet
Ponteiro para um descritor pacote alocada pelo chamador, para uma indicação de recebimento, ou por um protocolo, para um envio.
_Status
Especifica o status seja definido, que pode ser uma dos seguinte valores.Valor Descrição NDIS_STATUS_SUCCESS
O driver é abandonar a propriedade do pacote a ser indicada pela NdisMIndicateReceivePacket função até que o descritor pacote é retornado ao seu MiniportReturnPacket função.
Protocolos que recebem a indicação podem usar o descritor pacote, along with todos os buffers mapeados pelo descritores reserva encadeadas para o descritor pacote e qualquer out - of - informações banda fornecidos com o pacote, para copiar a rede indicado dados pacote, provavelmente encaminhando a copiar processado para clientes interessados.
NDIS_STATUS_RESOURCES
O driver está mantendo a propriedade do pacote a ser indicada pela NdisMIndicateReceivePacket função e de todos os pacotes subseqüentes na matriz de pacote. Todos esses pacotes são indicados, um por um tempo, para o ProtocolReceive funções de ligado protocolos.
Definir esse status força ligado protocolos para retornar a propriedade de cada tal descritor pacote, de qualquer reserva Medium-specific em de Out - de - banda bloco dados para cada descritor pacote e de memória mapeada pela cada descritor pacote do respectiva encadeadas descritores reserva para o driver indicando mais rapidamente. Os protocolos devem aguardar um chamar para seus ProtocolReceiveComplete funções para começar pós-processamento de dados que eles copiado a partir de indicação e encaminhar os dados processados para seus clientes.
Um driver indicando define esse status se ele for execução baixa no pool pacote ou reserva pool. Um driver NIC indicando geralmente define esse status se ele for execução com pouca buffers de recepção NIC devido a tráfego de rede alta.
NDIS pressupõe que, se esse status for definido para um pacote em uma matriz indicado, ele é definido para todos os pacotes subseqüentes dessa matriz. Conseqüentemente, um driver indicando necessário não definido o status para descritores pacote subseqüentes em uma matriz Depois ele define esse status de Out - Of - bloco banda para um pacote descritor.
Para descritores pacote usados em envia, o MiniportSendPackets função pode definir uma os seguinte valores.
Valor Descrição NDIS_STATUS_PENDING
O driver conclui a operação solicitada Enviar de forma assíncrona.
Após MiniportSendPackets controle, as chamadas driver retorna o NdisMSendComplete função com um status de conclusão finais para o descritor pacote especificado, que NDIS propaga para o ProtocolSendComplete função do driver que os recursos alocados especificado pelo descritor de pacote e iniciado o envio.
NDIS_STATUS_RESOURCES
O driver não é possível processo todos os envia especificado em uma matriz pacote atual devido a restrições recurso.
NDIS pressupõe que o Status membro para todos os descritores pacote subseqüentes na matriz enviada para MiniportSendPackets é definida para o mesmo valor. NDIS reflete essa valor status Miniport-Set para protocolos como NDIS_STATUS_PENDING.
NDIS_STATUS_XXX
MiniportSendPackets está concluindo uma solicitação de envio especificado antes de que retornará controle.
Se tal um pacote de envio é concluído com um status de erro driver-determined, NDIS_STATUS_SUCCESS ou MiniportSendPackets Configure o Status membro para o descritor pacote especificado para que NDIS pode refletir esse status voltar para o protocolo que iniciou o envio quando chama NDIS ProtocolSendComplete Com o descritor pacote retornado.
Return Value
O valor de retorno é a _Status valor.
Remarks
Apenas drivers que indicam recebe com NdisMIndicateReceivePacket Para ligado protocolos e / ou drivers que têm MiniportSendPackets funções usam essa macro.
Após tal subjacente um driver tiver definido a Status Para um número de descritores pacote em uma matriz e chamado NdisMIndicateReceive Com a matriz de ponteiros para esses descritores pacote, ele usa o NDIS_GET_PACKET_STATUS macro quando NdisMIndicateReceivePacket controle retorna. O retornado Status in a NDIS_PACKET_OOB_DATA estrutura associado com cada descritor pacote que indica o driver com NDIS_STATUS_SUCCESS determina o que faz o driver indicando próximo. A seguinte tabela mostra o valor associado com cada sinalizador.
Valor | Descrição |
---|---|
NDIS_STATUS_SUCCESS |
Se isso é definido em retornar a partir chamar de uma miniporta para NdisMIndicatePacket, a miniporta regains a propriedade do seguinte:
O driver pode preparar esses descritores, de Out - Of - bloco banda e reserva informações Media-specific, se houver, para reutilização em subseqüentes receber indicações imediatamente. |
NDIS_STATUS_PENDING |
Se isso estiver definido em retornar da NdisMIndicateReceive, protocolos Propriedade reter do descritor de pacote, de seu associado out - de - bloco de dados banda, de qualquer reserva especificada neste bloco, e de todos os buffers mapeados pelo descritores reserva encadeadas para o descritor pacote até que o pacote descritor é retornado para do driver indicando MiniportReturnPacket função. No entanto, os protocolos são fornecidos acessar READ-ONLY a esses recursos miniporta-alocados. |
Quando MiniportSendPackets Define o Status Para uma de entrada enviar pacote para qualquer coisa diferente de NDIS_STATUS_PENDING ou NDIS_STATUS_RESOURCES, ele conclui o pacote e abandona a propriedade de todos os recursos especificados pelo associado descritor pacote. NDIS retorna o descritor pacote para o ProtocolSendComplete função do driver ao alocar e propaga o valor status Miniport-set como uma parâmetro de entrada para ProtocolSendComplete. Caso contrário, o subjacente chamadas driver NdisMSendComplete Com o pacote descritor e status final quando o assíncrono envia operação é feita.
Drivers de protocolo nunca devem testar o Status valor no associado out - de - bloco de dados banda no retorno de NdisSend. NDIS ou o subjacente driver retém a propriedade do descritor de pacote, do associado out - de - banda bloco, qualquer buffers especificados neste bloco e de todos os buffers mapeados pelo descritores reserva encadeadas para o descritor pacote até a ProtocolSendComplete função é chamado com descritor de pacote.
O NDIS_SET_PACKET_STATUS macro é definido como a seguir.
#define NDIS_SET_PACKET_STATUS(_Packet, _Status) \
((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
(_Packet)->Private.NdisPacketOobOffset))->Status = (_Status)
Requirements
Header | ndis.h |
Windows Embedded CE | Windows CE .NET 4.0 and later |
See Also
Reference
MiniportReturnPacket
MiniportSendPackets
NDIS_GET_PACKET_STATUS
NdisMIndicateReceivePacket
NdisMSendComplete
NDIS_PACKET_OOB_DATA
NdisSend
ProtocolReceive
ProtocolReceiveComplete
ProtocolSendComplete