Compartilhar via


Implementando o registro

O Monitor de Rede carrega uma captura do arquivo de captura e, em seguida, começa a chamar a função Registrar para todos os protocolos que ele pode identificar. Cada DLL do analisador deve implementar uma função Register para cada protocolo compatível com a DLL do analisador.

Cada implementação da função Register deve chamar as funções CreatePropertyDatabase e AddProperty para criar e preencher o banco de dados de propriedades do protocolo e, em seguida, o CreateHandoffTable para criar a tabela de entrega para o protocolo , se necessário.

Observação

As propriedades do protocolo são definidas para o Monitor de Rede. As propriedades não são mapeadas para um local em dados de captura até que a função de exportação AttachProperties seja chamada.

 

O procedimento a seguir identifica as etapas necessárias para implementar a função Register .

Para implementar Registrar para um protocolo

  1. Defina uma matriz de estruturas PROPERTYINFO para descrever cada propriedade compatível com o protocolo.
  2. Chame CreatePropertyDatabase para fornecer um identificador de protocolo e o número de propriedades compatíveis com o protocolo.
  3. Chame AddProperty em um loop para adicionar cada propriedade definida na matriz de estrutura PROPERTYINFO .
  4. Se o protocolo usar uma tabela de entrega, chame CreateHandoffTable, depois que todas as propriedades do protocolo forem adicionadas ao banco de dados de propriedades.

Veja a seguir uma implementação básica do Register. Observe que um banco de dados de propriedade é criado para um protocolo que dá suporte a apenas duas propriedades. Este exemplo de código é obtido do analisador genérico que o Monitor de Rede fornece.

#include <windows.h>

PROPERTYINFO MyProtocolPropertyTable[]
{
  // Summary property (0)
  {
     0,                               // Handle to property.
     0,                               // Reserved.
     "Summary",                       // Property label.
     "Summary of protocol packet",    // Property comment.
     PROP_TYPE_SUMMARY,               // Data type of property.
     PROP_QUAL_NONE,                  // Data type qualifier.
     NULL,                            // Reserved.
     80,                              // 
     FormatPropertyInstance           // 
  }

  // WORD property (1)
  {
     0,                               // Handle to property.
     0,                               // Reserved.
     "WORD property",                 // Property label.
     "16-bit WORD property",         // Property comment.
     PROP_TYPE_WORD,                  // Data type of property.
     PROP_QUAL_NONE,                  // Data type qualifier.
     NULL,                            // Reserved.
     80,                              // 
     FormatPropertyInstance           // 
  }

}

void BHAPI MyProtocolRegister( HPPROTOCOL hProtocol) 
{
  // Create property database.
  DWORD dwNumberOfProperties = 2;
  CreatePropertyDatabase (hProtocol,
                          dwNumberOfProperties
                          );
  
  // Add properties to database.
  WORD i;
  for( i=0; i< dwNumberOfProperties; i++)
  {
     AddProperty(hProtocol, &MyProtocolPropertyTable[i]);
  }

  // Create handoff table.
  CreateHandoffTable("myProtocolHandoffTable",
                          "myProtocol.ini",
                           hTable,
                           MaxEntries,
                           10       // Handoff set values are base 10.
                          )
}