Implementieren von AttachProperties
Netzwerkmonitor die AttachProperties-Funktion auf, um die Eigenschaften zu zuordnen, die in einem Teil der erkannten Daten vorhanden sind. Die AttachProperties-Funktion ordnet die Eigenschaften einer bestimmten Position zu.
Netzwerkmonitor verwendet den folgenden Prozess, um die Daten in einem Frame zu analysieren.
- Zuerst ruft Netzwerkmonitor RecognizeFrame auf, um alle Protokolle zu erkennen, die in einem Frame vorhanden sind.
- Anschließend ruft Netzwerkmonitor AttachProperties für jeden Parser auf, der ein Datenstück erkennt.
Wenn Netzwerkmonitor die AttachProperties-Funktion für die erkannten Daten aufruft, muss der aufgerufene Parser die Daten analysieren und dann jede vorhandene Eigenschaft einem Speicherort in den erkannten Daten zuordnen. Der Parser bestimmt, welche Eigenschaften vorhanden sind und wo sich die einzelnen Eigenschaften in den Daten befinden. Die folgende Abbildung zeigt vom Parser erkannte Daten.

Während der Implementierung von AttachPropertiesmüssen Sie eine der folgenden Funktionen für jede Eigenschaft aufrufen, die in einem Datenrahmen vorhanden ist.
- Rufen Sie die AttachPropertyInstanceEx-Funktion auf, wenn Sie die Eigenschaftsdaten in einem Frame ändern möchten.
- Rufen Sie die AttachPropertyInstance-Funktion auf, wenn Sie die Eigenschaftsdaten in einem Frame nicht ändern möchten.
Hinweis
Es wird empfohlen, die Daten so zu verwenden, wie sie in der Erfassung vorhanden sind.
Im folgenden Verfahren werden die erforderlichen Schritte zum Implementieren von AttachProperties beschrieben.
So implementieren Sie AttachProperties
- Bestimmen Sie, welche Eigenschaften vorhanden sind, und den Speicherort der Eigenschaft in den Daten.
- Rufen Sie AttachPropertyInstanceEx für jede Eigenschaft mit einem Wert auf, den Sie ändern möchten.
- Rufen Sie AttachPropertyInstance für jede Eigenschaft mit einem Wert auf, den Sie nicht ändern möchten. In der Regel ist dies die einzige Funktion, die Sie aufrufen müssen.
Im Folgenden finden Sie eine grundlegende Implementierung von AttachProperties. Beachten Sie, dass das Beispiel weder den Code enthält, um zu bestimmen, welche Eigenschaften vorhanden sind, noch den Code zum Suchen der Eigenschaften.
#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;
}