Aracılığıyla paylaş


AttachProperties'i Uygulama

Ağ İzleyicisi, tanınan bir veri parçasında bulunan özellikleri eşlemek için AttachProperties işlevini çağırır. AttachProperties işlevi özellikleri belirli bir konuma eşler.

Ağ İzleyicisi, bir çerçevedeki verileri ayrıştırmak için aşağıdaki işlemi kullanır.

  • İlk olarak, Ağ İzleyicisi bir çerçevede var olan tüm protokolleri tanımak için RecognizeFrame çağırır.
  • Ardından Ağ İzleyicisi, bir veri parçasını tanıyan her ayrıştırıcı için AttachPropertiesçağırır.

Ağ İzleyicisi, tanınan veriler için AttachProperties işlevini çağırdığında, çağrılan ayrıştırıcının verileri ayrıştırması ve ardından mevcut her özelliği tanınan verilerdeki bir konuma eşlemesi gerekir. Ayrıştırıcı hangi özelliklerin mevcut olduğunu ve her özelliğin verilerde nerede bulunduğunu belirler. Aşağıdaki şekilde ayrıştırıcı tarafından tanınan veriler gösterilmektedir.

ayrıştırıcı tarafından tanınan veriler

AttachPropertiesuygulaması sırasında, bir veri çerçevesinde bulunan her özellik için aşağıdaki işlevlerden birini çağırmanız gerekir.

  • Bir çerçevedeki özellik verilerini değiştirmek istediğinizde AttachPropertyInstanceEx işlevini çağırın.
  • Bir çerçevedeki özellik verilerini değiştirmek istemediğinizde AttachPropertyInstance işlevini çağırın.

Not

Yakalamada var olan verileri kullanmanız önerilir.

 

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

AttachProperties'yi uygulamak için

  1. Hangi özelliklerin mevcut olduğunu ve verilerdeki özellik konumunu belirleyin.
  2. Değiştirmek istediğiniz bir değere sahip her özellik için AttachPropertyInstanceEx çağırın.
  3. Değiştirmek istemediğiniz bir değere sahip her özellik için AttachPropertyInstance çağırın. Genellikle, çağırmanız gereken tek işlev budur.

Aşağıda, AttachPropertiestemel bir uygulaması yer alır. Örnekte hangi özelliklerin mevcut olduğunu belirleyen kodun veya özelliklerin bulunacağı kodun bulunmadığını unutmayın.

#include <windows.h>

LPBYTE BHAPI MyProtocolAttachProperties( HFRAME   hFrame,
                                         LPBYTE   pMacFrame,
                                         LPBYTE   pBLRPLATEFrame,
                                         DWORD    MacType,
                                         DWORD    BytesLeft,
                                         HPROTOCOL  hPreviousProtocol,
                                         DWORD    nPrevProtocolOffset,
                                         DWORD    InstData)
{
  PBLRPLATEHDR pBLRPLATEHdr = (PBLRPLATEHDR)pBLRPLATEFrame;

  // Attach summary property.
  AttachPropertyInstance( hFrame,
                          BLRPLATEPropertyTable[BLRPLATE_SUMMARY].hProperty,
                          (WORD)BytesLeft,
                          (LPBYTE)pBLRPLATEFrame,
                          0,        // No Help file.
                          0,        // Indent level.
                          0);      // Data flag.

  // Attach signature property.
  AttachPropertyInstance( hFrame,
                          BLRPLATEPropertyTable[BLRPLATE_SIGNATURE].hProperty,
                          sizeof(DWORD),
                          &(pBLRPLATEHdr->Signature),
                          0,        // No Help file.
                          1,        // Indent level.
                          0);        // Data flag.


  // Attach opcode.
  AttachPropertyInstance( hFrame,
                          BLRPLATEPropertyTable[BLRPLATE_OPCODE].hProperty,
                          sizeof(WORD),
                          &(pBLRPLATEHdr->Opcode),
                          0,        // No Help file.
                          1,        // Indent level.
                          0);        // Data flag.

  // Attach flags summary.
  AttachPropertyInstance( hFrame,
                          BLRPLATEPropertyTable[BLRPLATE_FLAGS_SUMMARY].hProperty,
                          sizeof(BYTE),
                          &(pBLRPLATEHdr->Flags),
                          0,        // No Help file.
                          1,        // Indent level.
                          0);       // Data flag.

// Attach flags decode.
  AttachPropertyInstance( hFrame,
                          BLRPLATEPropertyTable[BLRPLATE_FLAGS_FLAGS].hProperty,
                          sizeof(BYTE),
                          &(pBLRPLATEHdr->Flags),
                          0,        // No Help file.
                          2,        // Indent level.
                          0);       // Data flag.

  RETURN null;

}