Implementálási regisztráció

A Network Monitor betölt egy rögzítést a rögzítési fájlból, majd elkezdi meghívni a Register függvényt az összes olyan protokollhoz, amelyet képes azonosítani. Minden elemző DLL-nek implementálnia kell egy Register függvényt minden olyan protokollhoz, amelyet az elemző DLL támogat.

A Register függvény minden implementációjának meg kell hívnia a CreatePropertyDatabase és AddProperty függvényt a protokoll tulajdonságadatbázis ának létrehozásához és kitöltéséhez, majd a CreateHandoffTable a protokollhoz tartozó átadási tábla létrehozásához – szükség esetén.

Jegyzet

A protokolltulajdonságok a Network Monitorhoz vannak definiálva. A tulajdonságok nem lesznek leképezve a rögzítési adatok egyik helyére, amíg a AttachProperties exportálási függvényt nem hívja meg.

 

Az alábbi eljárás a Register függvény végrehajtásához szükséges lépéseket azonosítja.

Egy protokollhoz tartozó regiszter bevezetése

  1. PROPERTYINFO struktúrák tömbjének definiálása a protokoll által támogatott összes tulajdonság leírásához.
  2. Hívja meg a protokollleíró megadásához és a protokoll által támogatott tulajdonságok számának megállapításához a CreatePropertyDatabase-t.
  3. Hívja meg AddProperty egy hurokban, hogy hozzáadja mindegyik tulajdonságot, amely a PROPERTYINFO struktúratömbben van definiálva.
  4. Ha a protokoll egy átadási táblát használ, hívja meg CreateHandoffTable– miután a protokoll összes tulajdonsága hozzá lesz adva a tulajdonságadatbázishoz.

Az alábbiakban a alapszintű implementációja található. Vegye figyelembe, hogy egy tulajdonságadatbázis olyan protokollhoz jön létre, amely csak két tulajdonságot támogat. Ez a példakód a Network Monitor által biztosított általános elemzőből származik.

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