Implementazione del registro

Monitoraggio di rete carica un'acquisizione dal file di acquisizione e quindi avvia la chiamata alla funzione Register per tutti i protocolli che può identificare. Ogni DLL del parser deve implementare una funzione Register per ogni protocollo supportato dalla DLL del parser.

Ogni implementazione della funzione Register deve chiamare le funzioni CreatePropertyDatabase e AddProperty per creare e compilare il database delle proprietà per il protocollo e quindi createHandoffTable per creare la tabella handoff per il protocollo, se necessario.

Nota

Le proprietà del protocollo sono definite per Monitoraggio di rete. Le proprietà non vengono mappate a una posizione in un dato di acquisizione finché non viene chiamata la funzione di esportazione AttachProperties .

 

La procedura seguente identifica i passaggi necessari per implementare la funzione Register .

Per implementare Register for one protocol

  1. Definire una matrice di strutture PROPERTYINFO per descrivere ogni proprietà supportata dal protocollo.
  2. Chiamare CreatePropertyDatabase per fornire un handle di protocollo e il numero di proprietà supportate dal protocollo.
  3. Chiamare AddProperty in un ciclo per aggiungere ogni proprietà definita nella matrice di strutture PROPERTYINFO .
  4. Se il protocollo usa una tabella handoff, chiamare CreateHandoffTable, dopo l'aggiunta di tutte le proprietà del protocollo al database delle proprietà.

Di seguito è riportata un'implementazione di base di Register. Si noti che viene creato un database di proprietà per un protocollo che supporta solo due proprietà. Questo esempio di codice è tratto dal parser generico fornito da Monitoraggio di rete.

#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.
                          )
}