Compartir a través de


Implementación de AttachProperties

Network Monitor llama a la función AttachProperties para asignar las propiedades que existen en un fragmento de datos reconocidos. La función AttachProperties asigna las propiedades a una ubicación específica.

Network Monitor usa el siguiente proceso para analizar los datos en una trama.

  • En primer lugar, Monitor de red llama a RecognizeFrame para reconocer todos los protocolos que existen en un marco.
  • Después, Monitor de red llama a AttachProperties para cada analizador que reconoce un fragmento de datos.

Cuando Network Monitor llama a la función AttachProperties para los datos reconocidos, el analizador al que se llama debe analizar los datos y, a continuación, asignar cada propiedad existente a una ubicación de los datos reconocidos. El analizador determina qué propiedades existen y dónde se encuentra cada propiedad en los datos. En la ilustración siguiente se muestran los datos reconocidos por el analizador.

datos reconocidos por el analizador

Durante la implementación de AttachProperties, debe llamar a una de las siguientes funciones para cada propiedad que exista en una trama de datos.

Nota

Se recomienda usar los datos tal como existen en la captura.

 

El siguiente procedimiento identifica los pasos necesarios para implementar AttachProperties.

Para implementar AttachProperties

  1. Determine qué propiedades existen y la ubicación de la propiedad en los datos.
  2. Llame a AttachPropertyInstanceEx para cada propiedad con un valor que desee modificar.
  3. Llame a AttachPropertyInstance para cada propiedad con un valor que no desee modificar. Normalmente, esta es la única función a la que necesita llamar.

A continuación se muestra una implementación básica de AttachProperties. Tenga en cuenta que el ejemplo no incluye el código para determinar qué propiedades existen o el código para buscar las propiedades.

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

}