다음을 통해 공유


AttachProperties 구현

네트워크 모니터는 AttachProperties 함수를 호출하여 인식된 데이터 조각에 있는 속성을 매핑합니다. AttachProperties 함수는 속성을 특정 위치에 매핑합니다.

네트워크 모니터는 다음 프로세스를 사용하여 프레임의 데이터를 구문 분석합니다.

  • 먼저 네트워크 모니터는 RecognizeFrame 을 호출하여 프레임에 있는 모든 프로토콜을 인식합니다.
  • 그런 다음 네트워크 모니터는 데이터 조각을 인식하는 각 파서에 대해 AttachProperties 를 호출합니다.

네트워크 모니터가 인식된 데이터에 대해 AttachProperties 함수를 호출할 때 호출되는 파서는 데이터를 구문 분석한 다음 각 기존 속성을 인식된 데이터의 위치에 매핑해야 합니다. 파서는 존재하는 속성과 각 속성이 데이터에 있는 위치를 결정합니다. 다음 그림에서는 파서 인식 데이터를 보여 줍니다.

parser 인식 데이터

AttachProperties를 구현하는 동안 데이터 프레임에 있는 각 속성에 대해 다음 함수 중 하나를 호출해야 합니다.

참고

캡처에 있는 데이터를 사용하는 것이 좋습니다.

 

다음 절차에서는 AttachProperties를 구현하는 데 필요한 단계를 식별합니다.

AttachProperties를 구현하려면

  1. 존재하는 속성과 데이터의 속성 위치를 확인합니다.
  2. 수정하려는 값을 사용하여 각 속성에 대해 AttachPropertyInstanceEx 를 호출합니다.
  3. 수정하지 않으려는 값으로 각 속성에 대해 AttachPropertyInstance 를 호출합니다. 일반적으로 호출해야 하는 유일한 함수입니다.

다음은 AttachProperties의 기본 구현입니다. 이 예제에는 어떤 속성이 있는지 확인하는 코드 또는 속성을 찾는 코드가 포함되어 있지 않습니다.

#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;

}