Fonction de rappel RecognizeFrame

La fonction d’exportation RecognizeFrame indique si un morceau de données est reconnu en tant que protocole détecté par l’analyseur. La fonction d’exportation RecognizeFrame doit être implémentée pour chaque analyseur pris en charge par la DLL de l’analyseur.

Syntaxe

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

Paramètres

hFrame [in]

Gérez le cadre qui contient les données.

lpFrame [in]

Pointeur vers le premier octet d’un cadre. Le pointeur permet d’afficher les données que d’autres analyseurs reconnaissent.

lpProtocol [in]

Pointeur vers le début des données non réclamées. En règle générale, les données non réclamées se trouvent au milieu d’une trame, car un analyseur précédent a revendiqué des données avant cet analyseur. L’analyseur doit d’abord tester les données non réclamées.

MacType [in]

Valeur MAC du premier protocole d’un frame. En règle générale, la valeur MacType est utilisée lorsque l’analyseur doit identifier le premier protocole dans un frame. La valeur MacType peut être l’une des suivantes :

Valeur Signification
MAC_TYPE_ETHERNET
802.3
MAC_TYPE_TOKENRING
802.5
MAC_TYPE_FDDI
ANSI X3T9.5

BytesLeft [in]

Nombre restant d’octets d’un emplacement dans un cadre jusqu’à la fin de l’image.

hPreviousProtocol [in]

Handle du protocole précédent.

nPreviousProtocolOffset [in]

Décalage du début du protocole précédent de l’image.

ProtocolStatusCode [out]

Indicateur de status protocole. La DLL d’analyseur doit définir l’un des codes status suivants.

Valeur Signification
PROTOCOL_STATUS_RECOGNIZED
L’analyseur reconnaît les données, mais ne sait pas quel protocole suit. Après avoir défini le code, retournez un pointeur vers les données non réclamées restantes qui suivent le protocole reconnu. Network Monitor utilise l’ensemble suivant du protocole pour poursuivre l’analyse.
PROTOCOL_STATUS_NOT_RECOGNIZED
L’analyseur ne reconnaît pas les données. Après avoir défini ce code, retournez le pointeur vers le début des données à l’aide du pointeur que le paramètre lpProtocol passe à la DLL de l’analyseur. Network Monitor utilise l’ensemble suivant du protocole précédent pour poursuivre l’analyse.
PROTOCOL_STATUS_CLAIMED
L’analyseur reconnaît les données et revendique les données restantes. Après avoir défini le code, retournez la valeur NULL pour network Monitor afin de mettre fin à l’analyse d’une trame.
PROTOCOL_STATUS_NEXT_PROTOCOL
L’analyseur reconnaît les données et sait quel protocole suit. Après avoir défini le code, définissez le paramètre phNextProtocol et retournez un pointeur vers les données non réclamées restantes qui suivent le protocole reconnu. Network Monitor continue l’analyse de l’image.

phNextProtocol [out]

Pointeur vers le handle du protocole suivant. Ce paramètre est défini lorsqu’un protocole identifie le protocole qui suit un protocole. Pour obtenir le handle du protocole suivant, appelez la fonction GetProtocolFromTable .

lpInstData [in, out]

En entrée, un pointeur vers le instance données du protocole précédent.

Lors de la sortie, un pointeur vers le instance données pour le protocole actuel. Les données d’instance ne peuvent pas être plus longues qu’une DWORD_PTR.

Valeur retournée

Si la fonction réussit, la valeur de retour est un pointeur vers le premier octet après les données d’analyseur reconnues. Si l’analyseur revendique toutes les données restantes, la valeur de retour est NULL.

Si la fonction échoue, la valeur de retour est un pointeur initial que le paramètre lpProtocol transmet.

Notes

La fonction RecognizeFrame détermine si l’analyseur reconnaît les données brutes à partir du pointeur lpProtocol .

  • Si le protocole reconnaît les données, la fonction RecognizeFrame retourne un pointeur vers les données restantes ou retourne NULL si le protocole actuel est le dernier protocole d’une trame.
  • Si le protocole ne reconnaît pas les données, la fonction RecognizeFrame retourne le pointeur passé à la DLL de l’analyseur dans le paramètre lpProtocol .

Notes

RecognizeFrame peut être appelé avant que la fonction Register ne soit appelée pour inscrire les propriétés du protocole. Pour cette raison, l’implémentation de la fonction RecognizeFrame ne repose sur aucune propriété ou structure créée ou initialisée pendant l’implémentation de la fonction Register du protocole.

Ensemble de handoff et Follow Set

Un analyseur peut utiliser un jeu de transfert ou un jeu de suivis pour identifier pour moniteur réseau le protocole qui suit les données reconnues.

  • Si des informations sont disponibles dans les données reconnues, l’analyseur utilise son jeu de transfert pour obtenir un handle au protocole suivant, puis le transmet au Moniteur réseau.
  • Si les informations ne sont pas disponibles, l’analyseur ne passe pas de handle, et network Monitor utilise l’ensemble de suivi de l’analyseur pour déterminer le protocole suivant.

Transmission d’informations entre protocoles

Utilisez le paramètre lpInstData pour transmettre des informations entre des protocoles. Lors de l’entrée, vous pouvez récupérer les informations du protocole précédent. Lors de la sortie, vous pouvez transmettre des informations au protocole suivant.

Les données d’instance peuvent être des données inférieures ou égales à une longueur DWORD_PTR, ou un pointeur vers des données, telles que les données de trame brutes, qui n’ont pas besoin d’être allouées par ou libérées par l’analyseur.

Pour plus d’informations sur Consultez
Quels sont les analyseurs et comment ils fonctionnent avec le Moniteur réseau. Analyseurs
Quels points d’entrée sont inclus dans la DLL de l’analyseur. Architecture DLL de l’analyseur
L’implémentation de RecognizeFrame inclut un exemple. Implémentation de RecognizeFrame
Comment spécifier un ensemble de données et un ensemble de suivis. Spécification d’un jeu de handoffsSpécifiant un jeu de suivis

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge
Windows 2000 Server [applications de bureau uniquement]
En-tête
Netmon.h

Voir aussi

GetProtocolFromTable