Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сетевой монитор вызывает функцию AttachProperties для сопоставления свойств, существующих в фрагменте распознанных данных. Функция AttachProperties сопоставляет свойства с определенным расположением.
Сетевой монитор использует следующий процесс для анализа данных в кадре.
- Во-первых, сетевой монитор вызывает RecognizeFrame для распознавания всех протоколов, существующих в кадре.
- Затем сетевой монитор вызывает AttachProperties для каждого средства синтаксического анализа, который распознает фрагмент данных.
Когда сетевой монитор вызывает функцию AttachProperties для распознанных данных, вызываемое средство синтаксического анализа должно проанализировать данные, а затем сопоставить каждое существующее свойство с расположением в распознанных данных. Средство синтаксического анализа определяет, какие свойства существуют, и где каждое свойство находится в данных. На следующем рисунке показаны данные, распознанные синтаксическим анализатором.
Во время реализации AttachPropertiesнеобходимо вызвать одну из следующих функций для каждого свойства, существующего в кадре данных.
- Вызовите функцию AttachPropertyInstanceEx, если требуется изменить данные свойства в кадре.
- Вызовите функцию AttachPropertyInstance, если не хотите изменять данные свойства в кадре.
Заметка
Рекомендуется использовать данные, как они существуют в момент захвата.
Следующая процедура определяет шаги, необходимые для реализации AttachProperties.
Чтобы реализовать функцию AttachProperties
- Определите, какие свойства существуют, а также расположение свойства в данных.
- Вызовите AttachPropertyInstanceEx для каждого свойства со значением, которое требуется изменить.
- Вызовите 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;
}