2012-09-19 4 views
0

1Gbit 이더넷을 통해 PC에 연결된 장치가 있습니다. WINXP/7 나는 다음과 같은 방법으로 데이터를 캡처 할 : (데이터 수집을 시작) WinXP/7의 NDIS와의 통신

  • 장치가 취득 PC에
  • 사용자 응용 대기 데이터를 전송하는

    1. PC가 장치에 명령을 전송
    2. 드라이버가 데이터를 메모리에 저장합니다.
    3. 장치가 데이터 수집을 완료했음을 알리는 명령을 보냅니다.
    4. 드라이버가 인터럽트를 생성하고 사용자 응용 프로그램이 드라이버에서 데이터 읽기를 시작합니다.

    어떻게 구현해야할지 모르겠다. NIC 드라이버가 있습니다. NDIS가 있습니다. 사용자 응용 프로그램이 NDIS와 통신 할 수 있습니까? NDIS와 통신하기 위해 추가 드라이버를 작성해야합니까?

  • 답변

    2

    귀하의 문제는 정말 두 부분이 있습니다

    1. 방법 장치에 명령을 보낼 수를 장치

    이 두 가지 솔루션을 가지고 첫 번째 문제에서 전송 된 데이터를 캡처하는 방법

  • 장치가 IPv4/IPv6에 캡슐화 된 명령을 허용하는지 여부 또는 다른 저수준 프로토콜이 필요한지 여부에 따라 다릅니다. 장치가 IPv4/IPv6에 캡슐화 된 명령을 허용하면 선호하는 프로그래밍 언어로 the sockets API을 사용하면됩니다.

    장치에 자체 비 IP 프로토콜이 필요한 경우 NDIS 프로토콜 드라이버를 추가해야합니다. Windows 드라이버 키트에는 sample protocol driver이 포함되어 있습니다. 이 드라이버는 기본적으로 usermode 응용 프로그램이 종류의 패킷을 보낼 수있는 채널을 엽니 다. (이는 널리 배포 된 보안 문제이므로 운영 체제의 기본 기능이 아닙니다.) 장치의 제어 메시지 만 선택적으로 수신하려면 프로토콜 드라이버를 수정해야 할 수도 있습니다.

    두 번째 문제 — 패킷 캡처 —은 이미 해결되었습니다. 기존 소프트웨어를 선반에서 꺼내어 솔루션에 통합 할 수 있어야합니다. Microsoft Network Monitor에는 패킷 캡처를 쉽게 시작/중지하고 캡처 된 결과를 반복하는 데 사용할 수있는 API가 있습니다. 또는 일부 사람들은 WinPcap을 사용합니다.