Compartilhar via


Função de retorno de chamada RecognizeFrame

A função de exportação RecognizeFrame indica se um dado é reconhecido como o protocolo detectado pelo analisador. A função de exportação RecognizeFrame deve ser implementada para cada analisador compatível com a DLL do analisador.

Sintaxe

LPBYTE RecognizeFrame(
  _In_    HFRAME      hFrame,
  _In_    LPBYTE      lpFrame,
  _In_    LPBYTE      lpProtocol,
  _In_    DWORD       MacType,
  _In_    DWORD       BytesLeft,
  _In_    HPROTOCOL   hPreviousProtocol,
  _In_    DWORD       nPreviousProtocolOffset,
  _Out_   LPDWORD     ProtocolStatusCode,
  _Out_   LPHPROTOCOL phNextProtocol,
  _Inout_ PDWORD_PTR  lpInstData
);

Parâmetros

hFrame [in]

Manipule para o quadro que contém os dados.

lpFrame [in]

Ponteiro para o primeiro byte de um quadro. O ponteiro fornece uma maneira de exibir dados que outros analisadores reconhecem.

lpProtocol [in]

Ponteiro para o início dos dados não reclamados. Normalmente, os dados não reclamados estão localizados no meio de um quadro porque um analisador anterior reivindicou dados antes desse analisador. O analisador deve testar os dados não reclamados primeiro.

MacType [in]

Valor MAC do primeiro protocolo em um quadro. Normalmente, o valor MacType é usado quando o analisador deve identificar o primeiro protocolo em um quadro. O valor de MacType pode ser um dos seguintes:

Valor Significado
MAC_TYPE_ETHERNET
802.3
MAC_TYPE_TOKENRING
802.5
MAC_TYPE_FDDI
ANSI X3T9.5

BytesLeft [in]

O número restante de bytes de um local em um quadro até o final do quadro.

hPreviousProtocol [in]

Identificador do protocolo anterior.

nPreviousProtocolOffset [in]

Deslocamento do início do protocolo anterior do quadro.

ProtocolStatusCode [out]

Indicador de status de protocolo. A DLL do analisador deve definir um dos seguintes códigos de status.

Valor Significado
PROTOCOL_STATUS_RECOGNIZED
O analisador reconhece os dados, mas não sabe qual protocolo segue. Depois de definir o código, retorne um ponteiro para os dados não reclamados restantes que seguem o protocolo reconhecido. O Monitor de Rede usa o conjunto a seguir do protocolo para continuar a análise.
PROTOCOL_STATUS_NOT_RECOGNIZED
O analisador não reconhece os dados. Depois de definir esse código, retorne o ponteiro para o início dos dados usando o ponteiro que o parâmetro lpProtocol passa para a DLL do analisador. O Monitor de Rede usa o conjunto a seguir do protocolo anterior para continuar a análise.
PROTOCOL_STATUS_CLAIMED
O analisador reconhece os dados e declara os dados restantes. Depois de definir o código, retorne NULL para Monitor de Rede para encerrar a análise de um quadro.
PROTOCOL_STATUS_NEXT_PROTOCOL
O analisador reconhece os dados e sabe qual protocolo segue. Depois de definir o código, defina o parâmetro phNextProtocol e retorne um ponteiro para os dados não reclamados restantes que seguem o protocolo reconhecido. O Monitor de Rede continua analisando o quadro.

phNextProtocol [out]

Ponteiro para o identificador do próximo protocolo. Esse parâmetro é definido quando um protocolo identifica o protocolo que segue um protocolo. Para obter o identificador do próximo protocolo, chame a função GetProtocolFromTable .

lpInstData [in, out]

Na entrada, um ponteiro para os dados da instância do protocolo anterior.

Na saída, um ponteiro para os dados da instância do protocolo atual. Os dados de instância não podem ter mais tempo do que um DWORD_PTR de comprimento.

Valor retornado

Se a função for bem-sucedida, o valor retornado será um ponteiro para o primeiro byte após os dados reconhecidos do analisador. Se o analisador reivindicar todos os dados restantes, o valor retornado será NULL.

Se a função não for bem-sucedida, o valor retornado será um ponteiro inicial que o parâmetro lpProtocol passa.

Comentários

A função RecognizeFrame determina se o analisador reconhece os dados brutos começando no ponteiro lpProtocol .

  • Se o protocolo reconhecer os dados, a função RecognizeFrame retornará um ponteiro para os dados restantes ou retornará NULL se o protocolo atual for o último protocolo em um quadro.
  • Se o protocolo não reconhecer os dados, a função RecognizeFrame retornará o ponteiro passado para a DLL do analisador no parâmetro lpProtocol .

Observação

RecognizeFrame pode ser chamado antes que a função Register seja chamada para registrar as propriedades do protocolo. Por esse motivo, a implementação da função RecognizeFrame não depende de nenhuma propriedade ou estrutura criada ou inicializada durante a implementação da função Register de protocolo.

Conjunto de Entregas e Conjunto de Acompanhamento

Um analisador pode usar um conjunto de entregas ou um conjunto de acompanhamento para identificar para o Monitor de Rede o protocolo que segue dados reconhecidos.

  • Se as informações estiverem disponíveis em dados reconhecidos, o analisador usará seu conjunto de entregas para obter um identificador para o próximo protocolo e, em seguida, passará esse identificador para o Monitor de Rede.
  • Se as informações não estiverem disponíveis, o analisador não passará um identificador e o Monitor de Rede usará o conjunto de acompanhamento do analisador para determinar qual protocolo segue.

Passando informações entre protocolos

Use o parâmetro lpInstData para passar informações entre protocolos. Na entrada, você pode recuperar as informações do protocolo anterior. Na saída, você pode passar informações para o próximo protocolo.

Os dados de instância podem ser dados menores ou iguais a um DWORD_PTR de comprimento ou um ponteiro para dados, como dados brutos de quadro, que não precisam ser alocados ou liberados pelo analisador.

Para obter informações sobre Consulte
O que são analisadores e como eles funcionam com o Monitor de Rede. Analisadores
Quais pontos de entrada estão incluídos na DLL do analisador. Arquitetura de DLL do analisador
Como implementar RecognizeFrame inclui um exemplo. Implementando RecognizeFrame
Como especificar um conjunto de entrega e seguir o conjunto. Especificando um conjunto deentregas especificando um conjunto a seguir

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho
Netmon.h

Confira também

GetProtocolFromTable