Aracılığıyla paylaş


Yazmaç Gerçekleştirme

Ağ İzleyicisi yakalama dosyasından bir yakalama yükler ve ardından tanımlayabildiği tüm protokoller için Register işlevini çağırmaya başlar. Her ayrıştırıcı DLL'sinin ayrıştırıcı DLL'sinin desteklediği her protokol için bir Register işlevi uygulaması gerekir.

Register işlevinin her uygulaması, özellik veritabanını oluşturmak ve doldurmak için CreatePropertyDatabase ve AddProperty işlevlerini çağırmalıdır; ayrıca gerekirse protokol için iletim tablosunu oluşturmak için CreateHandoffTable işlevini.

Not

Protokol özellikleri Ağ İzleyicisi için tanımlanır. AttachProperties dışarı aktarma işlevi çağrılana kadar özellikler yakalama verilerindeki bir konuma eşlenmez.

 

Aşağıdaki yordam, Register işlevini uygulamak için gereken adımları tanımlar.

Tek bir protokol için Register'i uygulamak

  1. Protokolün desteklediği her özelliği tanımlamak için bir PROPERTYINFO yapıları dizisi tanımlayın.
  2. Bir protokol tanıtıcısı ve protokolün desteklediği özellik sayısını sağlamak için CreatePropertyDatabaseçağırın.
  3. PROPERTYINFO yapı dizisinde tanımlanan her özelliği eklemek için bir döngüde AddProperty çağırın.
  4. Protokol bir iletim tablosu kullanıyorsa, protokolün tüm özellikleri özellik veritabanına eklendikten sonra CreateHandoffTableçağırın.

Aşağıda, Registeruygulamasının temel bir uygulaması yer alır. Yalnızca iki özelliği destekleyen bir protokol için özellik veritabanı oluşturulduğunu unutmayın. Bu kod örneği, Ağ İzleyicisi'nin sağladığı genel ayrıştırıcıdan alınmıştır.

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