RecognizeFrame 콜백 함수
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]
-
입력에서 이전 프로토콜의 instance 데이터에 대한 포인터입니다.
출력에서 현재 프로토콜에 대한 instance 데이터에 대한 포인터입니다. 인스턴스 데이터는 DWORD_PTR 길이보다 길 수 없습니다.
반환 값
함수가 성공하면 반환 값은 인식된 파서 데이터 뒤의 첫 번째 바이트에 대한 포인터입니다. 파서가 나머지 모든 데이터를 클레임하는 경우 반환 값은 NULL입니다.
함수가 실패하면 반환 값은 lpProtocol 매개 변수가 전달하는 초기 포인터입니다.
설명
RecognizeFrame 함수는 파서가 lpProtocol 포인터에서 시작하는 원시 데이터를 인식하는지 여부를 결정합니다.
- 프로토콜이 데이터를 인식하는 경우 RecognizeFrame 함수는 나머지 데이터에 대한 포인터를 반환하거나 현재 프로토콜이 프레임의 마지막 프로토콜인 경우 NULL 을 반환합니다.
- 프로토콜이 데이터를 인식하지 못하는 경우 RecognizeFrame 함수는 lpProtocol 매개 변수의 파서 DLL에 전달된 포인터를 반환합니다.
참고
Register 함수를 호출하여 프로토콜 속성을 등록하기 전에 RecognizeFrame을 호출할 수 있습니다. 따라서 RecognizeFrame 함수의 구현은 프로토콜 Register 함수를 구현하는 동안 생성되거나 초기화된 속성이나 구조체에 의존하지 않습니다.
핸드오프 집합 및 팔로우 집합
파서는 핸드오프 집합을 사용하거나 다음 집합을 사용하여 네트워크 모니터에 대해 인식된 데이터를 따르는 프로토콜을 식별할 수 있습니다.
- 인식된 데이터에서 정보를 사용할 수 있는 경우 파서는 핸드오프 집합을 사용하여 다음 프로토콜에 대한 핸들을 가져온 다음, 해당 핸들을 네트워크 모니터에 전달합니다.
- 정보를 사용할 수 없는 경우 파서는 핸들을 전달하지 않으며 네트워크 모니터는 파서 팔로우 집합을 사용하여 다음 프로토콜을 결정합니다.
프로토콜 간에 정보 전달
lpInstData 매개 변수를 사용하여 프로토콜 간에 정보를 전달합니다. 입력에서 이전 프로토콜에서 정보를 검색할 수 있습니다. 출력에서 다음 프로토콜에 정보를 전달할 수 있습니다.
인스턴스 데이터는 길이가 DWORD_PTR 이하인 데이터 또는 파서에서 할당하거나 해제할 필요가 없는 원시 프레임 데이터와 같은 데이터에 대한 포인터일 수 있습니다.
에 대한 정보 | 참조 |
---|---|
파서란 무엇이며 네트워크 모니터에서 작동하는 방식입니다. | 파서 |
파서 DLL에 포함되는 진입점입니다. | 파서 DLL 아키텍처 |
RecognizeFrame을 구현하는 방법에는 예제가 포함되어 있습니다. | RecognizeFrame 구현 |
핸드오프 집합을 지정하고 집합을 따르는 방법. | 팔로우 집합을 지정하는 핸드오프집합 지정 |
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 |
Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 |
Windows 2000 Server[데스크톱 앱만] |
헤더 |
|