Partilhar via


Registo de implementação

O Monitor de Rede carrega uma captura do ficheiro de captura e depois começa a chamar a função Registo de para todos os protocolos que possam ser identificados. Cada DLL do analisador deve implementar uma função de de registro de para cada protocolo suportado pela DLL do analisador.

Cada implementação da função Register deve chamar a função CreatePropertyDatabase e a função AddProperty para criar e preencher o banco de dados de propriedades para o protocolo, e, em seguida, o CreateHandoffTable para criar a tabela de transferência 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 um dado de captura até que a função de exportação AttachProperties seja chamada.

 

O seguinte procedimento identifica as etapas necessárias para implementar a função de Registro .

Para implementar o registo para um protocolo

  1. Defina uma matriz de PROPERTYINFO estruturas para descrever cada propriedade suportada pelo protocolo.
  2. Chame CreatePropertyDatabase para fornecer um identificador de protocolo e o número de propriedades suportadas pelo protocolo.
  3. Chame AddProperty em um loop para adicionar cada propriedade definida na estrutura de matriz PROPERTYINFO.
  4. Se o protocolo usar uma tabela de transferência, chame CreateHandoffTable— depois que todas as propriedades do protocolo forem adicionadas ao banco de dados de propriedades.

Segue-se uma implementação básica do Register. Observe que um banco de dados de propriedades é criado para um protocolo que suporta apenas duas propriedades. Este exemplo de código é retirado 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.
                          )
}