Compartir a través de


Función de devolución de llamada RecognizeFrame

La función de exportación RecognizeFrame indica si un fragmento de datos se reconoce como el protocolo que detecta el analizador. La función de exportación RecognizeFrame debe implementarse para cada analizador que admita el archivo DLL del analizador.

Sintaxis

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

Parámetros

hFrame [in]

Identificador del marco que contiene los datos.

lpFrame [in]

Puntero al primer byte de un marco. El puntero proporciona una manera de ver los datos que reconocen otros analizadores.

lpProtocol [in]

Puntero al inicio de los datos no reclamados. Normalmente, los datos no reclamados se encuentran en medio de un marco porque un analizador anterior ha reclamado datos antes de este analizador. El analizador debe probar primero los datos no reclamados.

MacType [in]

Valor MAC del primer protocolo de un marco. Normalmente, el valor macType se usa cuando el analizador debe identificar el primer protocolo de un marco. El valor macType puede ser uno de los siguientes:

Valor Significado
MAC_TYPE_ETHERNET
802.3
MAC_TYPE_TOKENRING
802.5
MAC_TYPE_FDDI
ANSI X3T9.5

BytesLeft [in]

El número restante de bytes de una ubicación de un marco al final del marco.

hPreviousProtocol [in]

Identificador del protocolo anterior.

nPreviousProtocolOffset [in]

Desplazamiento del principio del protocolo anterior del marco.

ProtocolStatusCode [out]

Indicador de estado del protocolo. El archivo DLL del analizador debe establecer uno de los siguientes códigos de estado.

Valor Significado
PROTOCOL_STATUS_RECOGNIZED
El analizador reconoce los datos, pero no sabe qué protocolo sigue. Después de establecer el código, devuelva un puntero a los datos restantes no reclamados que siguen el protocolo reconocido. Network Monitor usa el siguiente conjunto del protocolo para continuar el análisis.
PROTOCOL_STATUS_NOT_RECOGNIZED
El analizador no reconoce los datos. Después de establecer este código, devuelva el puntero al principio de los datos mediante el puntero que el parámetro lpProtocol pasa al archivo DLL del analizador. Network Monitor usa el siguiente conjunto del protocolo anterior para continuar el análisis.
PROTOCOL_STATUS_CLAIMED
El analizador reconoce los datos y reclama los datos restantes. Después de establecer el código, devuelva NULL para que Network Monitor finalice el análisis de un marco.
PROTOCOL_STATUS_NEXT_PROTOCOL
El analizador reconoce los datos y sabe qué protocolo sigue. Después de establecer el código, establezca el parámetro phNextProtocol y devuelva un puntero a los datos restantes no reclamados que siguen al protocolo reconocido. Network Monitor continúa a analizar el marco.

phNextProtocol [out]

Puntero al identificador del siguiente protocolo. Este parámetro se establece cuando un protocolo identifica el protocolo que sigue a un protocolo. Para obtener el identificador del siguiente protocolo, llame a la función GetProtocolFromTable .

lpInstData [in, out]

En la entrada, un puntero a los datos de instancia del protocolo anterior.

En la salida, un puntero a los datos de instancia del protocolo actual. Los datos de instancia no pueden tener más de un DWORD_PTR de longitud.

Valor devuelto

Si la función es correcta, el valor devuelto es un puntero al primer byte después de los datos del analizador reconocidos. Si el analizador reclama todos los datos restantes, el valor devuelto es NULL.

Si la función no se realiza correctamente, el valor devuelto es un puntero inicial que pasa el parámetro lpProtocol .

Comentarios

La función RecognizeFrame determina si el analizador reconoce los datos sin procesar a partir del puntero lpProtocol .

  • Si el protocolo reconoce los datos, la función RecognizeFrame devuelve un puntero a los datos restantes o devuelve NULL si el protocolo actual es el último protocolo de un marco.
  • Si el protocolo no reconoce los datos, la función RecognizeFrame devuelve el puntero pasado al archivo DLL del analizador en el parámetro lpProtocol .

Nota

Se puede llamar a RecognizeFrame antes de llamar a la función Register para registrar las propiedades del protocolo. Por ese motivo, la implementación de la función RecognizeFrame no se basa en ninguna propiedad o estructura que se creen o inicialicen durante la implementación de la función Register del protocolo.

Conjunto de entrega y conjunto de seguimiento

Un analizador puede usar un conjunto de entrega o seguir el conjunto para identificar para Network Monitor el protocolo que sigue a los datos reconocidos.

  • Si la información está disponible en los datos reconocidos, el analizador usa su conjunto de entrega para obtener un identificador para el siguiente protocolo y, a continuación, pasa ese identificador a Network Monitor.
  • Si la información no está disponible, el analizador no pasa un identificador y Network Monitor usa el analizador siguiente para determinar qué protocolo sigue.

Pasar información entre protocolos

Use el parámetro lpInstData para pasar información entre protocolos. En la entrada, puede recuperar la información del protocolo anterior. En la salida, puede pasar información al siguiente protocolo.

Los datos de instancia pueden ser cualquier dato que sea menor o igual que un DWORD_PTR de longitud, o un puntero a los datos, como los datos de fotogramas sin procesar, que el analizador no tenga que asignar ni liberar.

Para obtener información sobre Vea
Qué son los analizadores y cómo funcionan con Network Monitor. Analizadores
Qué puntos de entrada se incluyen en el archivo DLL del analizador. Arquitectura dll del analizador
Cómo implementar RecognizeFrame incluye un ejemplo. Implementación de RecognizeFrame
Cómo especificar un conjunto de entrega y un conjunto de seguimiento. Especificar un conjunto de entregaespecificando un conjunto de seguimiento

Requisitos

Requisito Value
Cliente mínimo compatible
Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado
Netmon.h

Consulte también

GetProtocolFromTable