共用方式為


RecognizeFrame 回呼函式

RecognizeFrame匯出函式會指出是否將資料片段辨識為剖析器偵測到的通訊協定。 辨識框架匯出函式必須針對剖析器 DLL 支援的每個剖析器實作。

語法

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

參數

hFrame [in]

包含資料的框架控制碼。

lpFrame [in]

框架第一個位元組的指標。 指標可讓您檢視其他剖析器所辨識的資料。

lpProtocol [in]

未重載資料的開頭指標。 一般而言,未宣告的資料位於框架中間,因為先前的剖析器已在這個剖析器之前宣告資料。 剖析器必須先測試未宣告的資料。

MacType [in]

框架中第一個通訊協定的 MAC 值。 一般而言,當剖析器必須識別框架中的第一個通訊協定時,就會使用 MacType 值。 MacType值可以是下列其中一項:

意義
MAC_TYPE_ETHERNET
802.3
MAC_TYPE_TOKENRING
802.5
MAC_TYPE_FDDI
ANSI X3T9.5

BytesLeft [in]

從框架中位置到框架結尾的剩餘位元組數。

hPreviousProtocol [in]

先前通訊協定的控制碼。

nPreviousProtocolOffset [in]

框架開頭的上一個通訊協定位移。

ProtocolStatusCode [out]

通訊協定狀態指示器。 剖析器 DLL 必須設定下列其中一個狀態碼。

意義
PROTOCOL_STATUS_RECOGNIZED
剖析器會辨識資料,但不知道哪個通訊協定會遵循。 設定程式碼之後,將指標傳回至所辨識通訊協定後面的其餘未重設資料。 網路監視器會使用 下列一組 通訊協定來繼續剖析。
PROTOCOL_STATUS_NOT_RECOGNIZED
剖析器無法辨識資料。 設定此程式碼之後,使用 lpProtocol 參數傳遞至剖析器 DLL 的指標,傳回資料開頭的指標。 網路監視器會使用先前通訊協定的 下列集合 來繼續剖析。
PROTOCOL_STATUS_CLAIMED
剖析器會辨識資料並宣告其餘資料。 設定程式碼之後,傳回 Null ,讓網路監視器終止剖析框架。
PROTOCOL_STATUS_NEXT_PROTOCOL
剖析器會辨識資料,並知道後續的通訊協定。 設定程式碼之後,請設定 phNextProtocol 參數,並傳回其餘未辨識通訊協定後面的未重設資料指標。 網路監視器會繼續剖析框架。

phNextProtocol [out]

下一個通訊協定控制碼的指標。 當通訊協定識別通訊協定後面的通訊協定時,就會設定此參數。 若要取得下一個通訊協定的控制碼,請呼叫 GetProtocolFromTable 函式。

lpInstData [in, out]

在輸入時,指標指向上一個通訊協定中的實例資料。

輸出時,為目前通訊協定的實例資料指標。 實例資料長度不能超過DWORD_PTR。

傳回值

如果函式成功,傳回值是辨識剖析器資料之後第一個位元組的指標。 如果剖析器宣告所有剩餘的資料,則傳回值為 Null

如果函式失敗,傳回值就是 lpProtocol 參數傳入的初始指標。

備註

RecognizeFrame函式會判斷剖析器是否從lpProtocol指標開始辨識原始資料。

  • 如果通訊協定辨識資料, RecognizeFrame 函式會傳回其餘資料的指標,如果目前的通訊協定是框架中的最後一個通訊協定,則會傳回 Null
  • 如果通訊協定無法辨識資料, RecognizeFrame 函式會傳回傳遞至 lpProtocol 參數中剖析器 DLL 的指標。

注意

在呼叫Register函式以註冊通訊協定屬性之前,可以呼叫RecognizeFrame。 基於這個理由, RecognizeFrame 函式的實作不會依賴通訊協定 Register 函式實作期間所建立或初始化的任何屬性或結構。

交接集和追蹤集

剖析器可以使用交接集或追蹤集來識別網路監視器後面已辨識資料的通訊協定。

  • 如果辨識的資料中提供資訊,剖析器會使用其交接集來取得下一個通訊協定的控制碼,然後將該控制碼傳遞至網路監視器。
  • 如果資訊無法使用,剖析器不會傳遞控制碼,而網路監視器會使用剖析器後置集來判斷哪一個通訊協定遵循。

在通訊協定之間傳遞資訊

使用 lpInstData 參數在通訊協定之間傳遞資訊。 在輸入上,您可以從上一個通訊協定擷取資訊。 在輸出上,您可以將資訊傳遞至下一個通訊協定。

實例資料可以是長度小於或等於DWORD_PTR的任何資料,或資料指標,例如原始框架資料,不需要由剖析器配置或釋放。

如需相關資訊 請參閱
什麼是剖析器,以及其使用網路監視器的方式。 剖析器
剖析器 DLL 中包含哪些進入點。 剖析器 DLL 架構
如何實作 RecognizeFrame 包含範例。 實作 RecognizeFrame
如何指定交接集並遵循集合。 指定交接集,指定追蹤集

規格需求

需求
最低支援的用戶端
Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限傳統型應用程式]
標頭
Netmon.h

另請參閱

GetProtocolFromTable