Funzione di callback di RecognizeFrame

La funzione di esportazione RecognizeFrame indica se una parte di dati viene riconosciuta come protocollo rilevato dal parser. La funzione di esportazione RecognizeFrame deve essere implementata per ogni parser supportata dalla DLL del parser.

Sintassi

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

Parametri

hFrame [in]

Handle nel frame contenente i dati.

lpFrame [in]

Puntatore al primo byte di un frame. Il puntatore consente di visualizzare i dati riconosciuti da altri parser.

lpProtocol [in]

Puntatore all'inizio dei dati non reclamati. In genere, i dati non richiesti si trovano al centro di un frame perché un parser precedente ha richiesto dati prima di questo parser. Il parser deve testare prima i dati non reclamati.

MacType [in]

Valore MAC del primo protocollo in un frame. In genere, il valore MacType viene usato quando il parser deve identificare il primo protocollo in un frame. Il valore MacType può essere uno dei seguenti:

Valore Significato
MAC_TYPE_ETHERNET
802.3
MAC_TYPE_TOKENRING
802.5
MAC_TYPE_FDDI
ANSI X3T9.5

ByteLeft [in]

Numero rimanente di byte da una posizione in un frame alla fine del frame.

hPreviousProtocol [in]

Handle del protocollo precedente.

nPreviousProtocolOffset [in]

Offset del protocollo precedente all'inizio del frame.

ProtocolStatusCode [out]

Indicatore di stato del protocollo. La DLL del parser deve impostare uno dei codici di stato seguenti.

Valore Significato
PROTOCOL_STATUS_RECOGNIZED
Il parser riconosce i dati, ma non conosce il protocollo seguente. Dopo aver impostato il codice, restituire un puntatore ai dati rimanenti non dichiarati che seguono il protocollo riconosciuto. Monitoraggio di rete usa il set seguente del protocollo per continuare l'analisi.
PROTOCOL_STATUS_NOT_RECOGNIZED
Il parser non riconosce i dati. Dopo aver impostato questo codice, restituire il puntatore all'inizio dei dati usando il puntatore che il parametro lpProtocol passa alla DLL del parser. Monitoraggio di rete usa il set seguente del protocollo precedente per continuare l'analisi.
PROTOCOL_STATUS_CLAIMED
Il parser riconosce i dati e dichiara i dati rimanenti. Dopo aver impostato il codice, restituire NULL per Monitoraggio di rete per terminare l'analisi di un frame.
PROTOCOL_STATUS_NEXT_PROTOCOL
Il parser riconosce i dati e sa quale protocollo segue. Dopo aver impostato il codice, impostare il parametro phNextProtocol e restituire un puntatore ai dati rimanenti non definiti che seguono il protocollo riconosciuto. Monitoraggio rete continua a analizzare il frame.

phNextProtocol [out]

Puntatore all'handle del protocollo successivo. Questo parametro viene impostato quando un protocollo identifica il protocollo che segue un protocollo. Per ottenere l'handle del protocollo successivo, chiamare la funzione GetProtocolFromTable .

lpInstData [in, out]

In input, un puntatore ai dati dell'istanza dal protocollo precedente.

Nell'output, un puntatore ai dati dell'istanza per il protocollo corrente. I dati dell'istanza non possono essere più lunghi di un DWORD_PTR di lunghezza.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è un puntatore al primo byte dopo i dati del parser riconosciuto. Se il parser dichiara tutti i dati rimanenti, il valore restituito è NULL.

Se la funzione ha esito negativo, il valore restituito è un puntatore iniziale passato dal parametro lpProtocol .

Commenti

La funzione RecognizeFrame determina se il parser riconosce i dati non elaborati a partire dal puntatore lpProtocol .

  • Se il protocollo riconosce i dati, la funzione RecognizeFrame restituisce un puntatore ai dati rimanenti oppure restituisce NULL se il protocollo corrente è l'ultimo protocollo in un frame.
  • Se il protocollo non riconosce i dati, la funzione RecognizeFrame restituisce il puntatore passato alla DLL del parser nel parametro lpProtocol .

Nota

RecognizeFrame può essere chiamato prima che venga chiamata la funzione Register per registrare le proprietà del protocollo. Per questo motivo, l'implementazione della funzione RecognizeFrame non si basa su proprietà o strutture create o inizializzate durante l'implementazione della funzione Register del protocollo.

Set di handoff e segui set

Un parser può usare un set di handoff o un set di follow-off per identificare il protocollo che segue i dati riconosciuti.

  • Se le informazioni sono disponibili nei dati riconosciuti, il parser usa il relativo set di handoff per ottenere un handle al protocollo successivo e quindi passa tale handle a Monitoraggio di rete.
  • Se le informazioni non sono disponibili, il parser non passa un handle e Monitoraggio di rete usa il set di analisi per determinare il protocollo seguente.

Passaggio di informazioni tra protocolli

Usare il parametro lpInstData per passare informazioni tra protocolli. In input è possibile recuperare le informazioni dal protocollo precedente. Nell'output è possibile passare informazioni al protocollo successivo.

I dati dell'istanza possono essere dati minori o uguali a un DWORD_PTR di lunghezza o un puntatore ai dati, ad esempio i dati del frame non elaborati, che non devono essere allocati da o liberati dal parser.

Per informazioni su Vedere
Quali parser sono e come funzionano con Monitoraggio rete. Parser
Quali punti di ingresso sono inclusi nella DLL del parser. Architettura dll del parser
Come implementare RecognizeFrame include un esempio. Implementazione di RecognizeFrame
Come specificare un set di handoff e seguire il set. Specifica di un set di handoffche specifica un set di passaggi

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Netmon.h

Vedi anche

GetProtocolFromTable