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