Поделиться через


Функция обратного вызова RecognizeFrame

Функция экспорта RecognizeFrame указывает, распознается ли часть данных как протокол, который обнаруживает средство синтаксического анализа. Функция экспорта RecognizeFrame должна быть реализована для каждого средства синтаксического анализа, который поддерживает библиотека DLL средства синтаксического анализа.

Синтаксис

LPBYTE RecognizeFrame(
  _In_    HFRAME      hFrame,
  _In_    LPBYTE      lpFrame,
  _In_    LPBYTE      lpProtocol,
  _In_    DWORD       MacType,
  _In_    DWORD       BytesLeft,
  _In_    HPROTOCOL   hPreviousProtocol,
  _In_    DWORD       nPreviousProtocolOffset,
  _Out_   LPDWORD     ProtocolStatusCode,
  _Out_   LPHPROTOCOL phNextProtocol,
  _Inout_ PDWORD_PTR  lpInstData
);

Параметры

hFrame [in]

Дескриптор кадра, содержащего данные.

lpFrame [in]

Указатель на первый байт кадра. Указатель предоставляет способ просмотра данных, которые распознают другие средства синтаксического анализа.

lpProtocol [in]

Указатель на начало невостребованных данных. Как правило, невостребованные данные находятся в середине кадра, так как предыдущий синтаксический анализатор утверждал данные до этого средства синтаксического анализа. Средство синтаксического анализа сначала должно проверить невостребованные данные.

MacType [in]

Значение MAC первого протокола в кадре. Как правило, значение MacType используется, когда средство синтаксического анализа должно идентифицировать первый протокол в кадре. Значение MacType может иметь одно из следующих значений:

Значение Значение
MAC_TYPE_ETHERNET
802.3
MAC_TYPE_TOKENRING
802.5
MAC_TYPE_FDDI
ANSI X3T9.5

BytesLeft [in]

Оставшееся количество байтов от расположения в кадре до конца кадра.

hPreviousProtocol [in]

Дескриптор предыдущего протокола.

nPreviousProtocolOffset [in]

Смещение предыдущего протокола начала кадра.

ProtocolStatusCode [out]

Индикатор состояния протокола. Библиотека DLL средства синтаксического анализа должна задать один из следующих кодов состояния.

Значение Значение
PROTOCOL_STATUS_RECOGNIZED
Средство синтаксического анализа распознает данные, но не знает, какой протокол следует. Задав код, верните указатель на оставшиеся невостребованные данные, которые следуют распознаваемого протокола. Монитор сети использует следующий набор протокола для продолжения анализа.
PROTOCOL_STATUS_NOT_RECOGNIZED
Средство синтаксического анализа не распознает данные. Задав этот код, верните указатель на начало данных с помощью указателя, который параметр lpProtocol передает в библиотеку DLL средства синтаксического анализа. Монитор сети использует следующий набор предыдущего протокола для продолжения анализа.
PROTOCOL_STATUS_CLAIMED
Средство синтаксического анализа распознает данные и утверждает оставшиеся данные. После настройки кода верните значение NULL для сетевого монитора, чтобы завершить синтаксический анализ кадра.
PROTOCOL_STATUS_NEXT_PROTOCOL
Средство синтаксического анализа распознает данные и знает, какой протокол следует. После настройки кода задайте параметр phNextProtocol и верните указатель на оставшиеся невостребованные данные, которые следуют распознанму протоколу. Монитор сети продолжает анализ кадра.

phNextProtocol [out]

Указатель на дескриптор следующего протокола. Этот параметр задается, если протокол определяет протокол, следующий за протоколом. Чтобы получить дескриптор следующего протокола, вызовите функцию GetProtocolFromTable .

lpInstData [вход, выход]

На входных данных — указатель на данные экземпляра из предыдущего протокола.

В выходных данных — указатель на данные экземпляра для текущего протокола. Длина данных экземпляра не может превышать DWORD_PTR.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение является указателем на первый байт после распознаваемых данных средства синтаксического анализа. Если средство синтаксического анализа утверждает все оставшиеся данные, возвращаемое значение равно NULL.

Если функция завершается неудачно, возвращаемое значение является начальным указателем, который передает параметр lpProtocol .

Комментарии

Функция RecognizeFrame определяет, распознает ли средство синтаксического анализа необработанные данные, начиная с указателя lpProtocol .

  • Если протокол распознает данные, функция RecognizeFrame возвращает указатель на оставшиеся данные или возвращает значение NULL , если текущий протокол является последним протоколом в кадре.
  • Если протокол не распознает данные, функция RecognizeFrame возвращает указатель, переданный в библиотеку DLL средства синтаксического анализа в параметре lpProtocol .

Примечание

RecognizeFrame можно вызвать перед вызовом функции Register для регистрации свойств протокола. По этой причине реализация функции RecognizeFrame не зависит от каких-либо свойств или структур, которые создаются или инициализированы во время реализации функции Register протокола.

Набор для передачи и отслеживание набора

Средство синтаксического анализа может использовать набор передачи или последующий набор, чтобы определить для сетевого монитора протокол, который следует за распознаваемыми данными.

  • Если сведения доступны в распознаваемых данных, средство синтаксического анализа использует набор передачи для получения дескриптора к следующему протоколу, а затем передает этот дескриптор сетевому монитору.
  • Если сведения недоступны, средство синтаксического анализа не передает дескриптор, а сетевой монитор использует следующий набор синтаксического анализа, чтобы определить, какой протокол следует.

Передача информации между протоколами

Используйте параметр lpInstData для передачи информации между протоколами. При входе можно получить сведения из предыдущего протокола. В выходных данных можно передать сведения следующему протоколу.

Данные экземпляра могут быть любыми данными, которые меньше или равны длине DWORD_PTR, или указателем на данные, такие как необработанные данные кадра, которые не нужно выделять или освобождать с помощью средства синтаксического анализа.

Для получения сведений о См.
Что такое средства синтаксического анализа и как они работают с сетевым монитором. Средства синтаксического анализа
Какие точки входа включены в библиотеку DLL средства синтаксического анализа. Архитектура dll средства синтаксического анализа
Пример реализации RecognizeFrame . Реализация RecognizeFrame
Как указать набор для передачи и следовать набору. Задание набора handoffс указанием следующего набора

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Заголовок
Netmon.h

См. также раздел

GetProtocolFromTable