Partager via


Implémentation d’AttachProperties

Le Moniteur réseau appelle la fonction AttachProperties pour mapper les propriétés qui existent dans une partie de données reconnues. La fonction AttachProperties mappe les propriétés à un emplacement spécifique.

Network Monitor utilise le processus suivant pour analyser les données dans une trame.

  • Tout d’abord, le Moniteur réseau appelle RecognizeFrame pour reconnaître tous les protocoles qui existent dans un frame.
  • Ensuite, le Moniteur réseau appelle AttachProperties pour chaque analyseur qui reconnaît un élément de données.

Lorsque le Moniteur réseau appelle la fonction AttachProperties pour les données reconnues, l’analyseur appelé doit analyser les données, puis mapper chaque propriété existante à un emplacement dans les données reconnues. L’analyseur détermine les propriétés qui existent et l’emplacement de chaque propriété dans les données. La figure suivante montre des données reconnues par l’analyseur.

Données reconnues par l’analyseur

Pendant l’implémentation d’AttachProperties, vous devez appeler l’une des fonctions suivantes pour chaque propriété qui existe dans une trame de données.

  • Appelez la fonction AttachPropertyInstanceEx lorsque vous souhaitez modifier les données de propriété dans un frame.
  • Appelez la fonction AttachPropertyInstance lorsque vous ne souhaitez pas modifier les données de propriété dans un frame.

Notes

Il est recommandé d’utiliser les données telles qu’elles existent dans la capture.

 

La procédure suivante identifie les étapes nécessaires pour implémenter AttachProperties.

Pour implémenter AttachProperties

  1. Déterminez les propriétés qui existent et l’emplacement des propriétés dans les données.
  2. Appelez AttachPropertyInstanceEx pour chaque propriété avec une valeur que vous souhaitez modifier.
  3. Appelez AttachPropertyInstance pour chaque propriété avec une valeur que vous ne souhaitez pas modifier. En règle générale, il s’agit de la seule fonction que vous devez appeler.

Voici une implémentation de base d’AttachProperties. N’oubliez pas que l’exemple n’inclut pas le code permettant de déterminer quelles propriétés existent, ni le code permettant de localiser les propriétés.

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

}