Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Netwerkmonitoren roept de RecognizeFrame--functie van een parser aan om te bepalen of de parser de niet-geclaimde gegevens van een frame herkent. De niet-geclaimde gegevens bevinden zich mogelijk aan het begin van een frame, maar meestal bevinden niet-geclaimde gegevens zich in het midden van een frame. In de volgende afbeelding ziet men ongeclaimde gegevens die zich midden in een frame bevinden.
Network Monitor biedt de volgende informatie wanneer deze de functie RecognizeFrame aanroept:
- Een handgreep naar het frame.
- Een aanwijzer naar het begin van het frame.
- Een aanwijzer naar het begin van de ongedeclareerde gegevens.
- De MAC-waarde van het eerste protocol in het frame.
- Het aantal bytes in de niet-geclaimde gegevens; dat wil zeggen, de bytes die in het frame overblijven.
- Een ingang naar het vorige protocol.
- De verschuiving van het vorige protocol.
Wanneer de parser-DLL bepaalt dat niet-geclaimde gegevens beginnen met het parserprotocol, bepaalt de parser-DLL waar het volgende protocol begint en welk protocol volgt. De functies van de parser-DLL werken op de volgende voorwaardelijke manieren:
- Als de parser-DLL niet-geclaimde gegevens herkent, stelt de parser-DLL de parameter pProtocolStatus in en retourneert een aanwijzer naar het volgende protocol in het frame of NULL-. NULL- wordt geretourneerd als het huidige protocol het laatste protocol in het frame is.
- Als de parser-DLL niet-geclaimde gegevens herkent en het volgende protocol identificeert (uit informatie die in het protocol is opgegeven), retourneert de parser-DLL een aanwijzer naar de ingang van het volgende protocol in de phNextProtocol parameter van de functie.
- Als de parser-DLL geen niet-claimgegevens herkent, retourneert de parser-DLL de aanwijzer naar het begin van niet-claimgegevens en probeert Network Monitor de niet-claimgegevens te parseren.
RecognizeFrame- implementeren
Test om te bepalen of u het protocol herkent.
Als u niet-geclaimde gegevens herkent en u weet welk protocol volgt, stelt u pProtocolStatus in op PROTOCOL_STATUS_NEXT_PROTOCOL, stelt u phNextProtocol- in op een aanwijzer die verwijst naar de ingang voor het volgende protocol en retourneert u een aanwijzer naar het volgende protocol.
–of–
Als u ongeclaimde gegevens herkent en u niet weet welk protocol er volgt, stelt u pProtocolStatus- in op PROTOCOL_STATUS_RECOGNIZED en retourneert u een pointer naar het volgende protocol.
–of–
Als u ongeclaimde gegevens herkent en uw protocol het laatste protocol in een frame is, stelt u pProtocolStatus in op PROTOCOL_STATUS_CLAIMED en retourneert u dan NULL.
–of–
Als u niet-geclaimde gegevens niet herkent, stelt u pProtocolStatus in op PROTOCOL_STATUS_NOT_RECOGNIZED en retourneert u vervolgens de aanwijzer die aan u wordt doorgegeven in pProtocol-.
Hier volgt een eenvoudige implementatie van RecognizeFrame.
#include <windows.h>
LPBYTE BHAPI MyProtocol_RecognizeFrame( HFRAME hFrame,
LPBYTE pMacFrame,
LPBYTE pProtocol,
DWORD MacType,
DWORD BytesLeft,
HPROTOCOL hPrevProtocol,
DWORD nPreviuosProtOffset,
LPDWORD pProtocolStatus,
LPHPROTOCOL phNextProtocol,
LPDWORD InstData)
// Test unclaimed data.
// If unclaimed data is recognized, but you do not know what follows.
*pProtocolStatus = PROTOCOL_STATUS_RECOGNIZED;
return pProtocol + MY_PROTOCOL_LENGTH;
// If unclaimed data is recognized and you know what follows.
*pProtocolStatus = PROTOCOL_STATUS_NEXT_PROTOCOL;
phNextProtocol = GetProtocolFromTable(
hTable,
ItemToFind,
lpInstData);
return pProtocol + MY_PROTOCOL_LENGTH;
// If unclaimed data is recognized and the protocol is the last
// protocol in the frame.
*pProtocolStatus = PROTOCOL_STATUS_CLAIMED;
return NULL;
// If the unclaimed data is not recognized.
*pProtocolStatus = PROTOCOL_STATUS_NOT_RECOGNIZED;
return *pProtocol;
}