Verarbeiten von Framedaten
Im folgenden Beispielcode legt der Monitor einen Erfassungsfilter fest, der nur IP-Adressen und angeforderte Protokolldaten angibt.
STDMETHODIMP CTestMon::OnFrames(UPDATE_EVENT Event)
{
DWORD i;
LPFRAMETABLE lpFrameTable = Event.lpFrameTable;
// The frame table can wrap the indexes.
for (
i = lpFrameTable->StartIndex;
i != lpFrameTable->EndIndex;
(i == lpFrameTable->FrameTableLength ) ? i=0: i ++ )
{
LPFRAME_DESCRIPTOR lpFrameDesc = &lpFrameTable->Frames[i];
// Cast the frame data to an unaligned pointer to an IP
// structure. A try/catch block could be a workaround, but
// if the capture filter is set correctly, this is the
// verifiable IP.
ULPIP ulpIP = (ULPIP)(&lpFrameDesc->FramePointer[lpFrameDesc->LowProtocolOffset]);
// Now examine the IP frame.
}
return NOERROR;
}