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.
Durante la implementación de AttachProperties, debe llamar a una de las siguientes funciones para cada propiedad que exista en una trama de datos.
- Llame a la función AttachPropertyInstanceEx cuando desee modificar los datos de propiedad en un marco.
- Llame a la función AttachPropertyInstance cuando no desee modificar los datos de propiedad en un marco.
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
- Determine qué propiedades existen y la ubicación de la propiedad en los datos.
- Llame a AttachPropertyInstanceEx para cada propiedad con un valor que desee modificar.
- 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;
}