Freigeben über


Implementieren von Register

Der Netzwerkmonitor lädt eine Aufzeichnung aus der Erfassungsdatei und startet dann den Aufruf der Register-Funktion für alle Protokolle, die er identifizieren kann. Jede Parser-DLL muss eine Register-Funktion für jedes Protokoll implementieren, das die Parser-DLL unterstützt.

Jede Implementierung der Register-Funktion muss die Funktionen CreatePropertyDatabase und AddProperty aufrufen, um die Eigenschaftendatenbank für das Protokoll zu erstellen und auszufüllen, und dann die CreateHandoffTable , um die Übergabetabelle für das Protokoll zu erstellen , falls erforderlich.

Hinweis

Protokolleigenschaften werden für den Netzwerkmonitor definiert. Eigenschaften werden erst dann einem Speicherort in einer Erfassungsdaten zugeordnet, wenn die Exportfunktion AttachProperties aufgerufen wird.

 

Im folgenden Verfahren werden die Schritte angegeben, die zum Implementieren der Register-Funktion erforderlich sind.

So implementieren Sie die Registrierung für ein Protokoll

  1. Definieren Sie ein Array von PROPERTYINFO-Strukturen , um jede Eigenschaft zu beschreiben, die vom Protokoll unterstützt wird.
  2. Rufen Sie CreatePropertyDatabase auf, um ein Protokollhandle und die Anzahl der Eigenschaften bereitzustellen, die das Protokoll unterstützt.
  3. Rufen Sie AddProperty in einer Schleife auf, um jede im PROPERTYINFO-Strukturarray definierte Eigenschaft hinzuzufügen.
  4. Wenn das Protokoll eine Handofftabelle verwendet, rufen Sie CreateHandoffTable auf, nachdem der Eigenschaftendatenbank alle Eigenschaften des Protokolls hinzugefügt wurden.

Im Folgenden ist eine grundlegende Implementierung von Register aufgeführt. Beachten Sie, dass eine Eigenschaftendatenbank für ein Protokoll erstellt wird, das nur zwei Eigenschaften unterstützt. Dieses Codebeispiel stammt aus dem generischen Parser, den Network Monitor bereitstellt.

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