다음을 통해 공유


필터 드라이버의 모듈 상태

NDIS 필터 드라이버는 드라이버가 관리하는 각 필터 모듈(필터 드라이버의 instance)에 대해 다음과 같은 작동 상태를 지원해야 합니다.

  • 분리

  • 연결 비교

  • 일시 중지됨

  • 다시 시작

  • 실행 중

  • 일시 중지

다음 그림은 이러한 상태 간의 관계를 보여줍니다.

NDIS 필터 드라이버에서 작동 간의 관계를 보여 주는 다이어그램

다음은 필터 모듈 상태를 정의합니다.

분리
분리된 상태는 필터 모듈의 초기 상태입니다. 필터 모듈이 이 상태인 경우 NDIS는 필터 드라이버의 FilterAttach 함수를 호출하여 필터 모듈을 드라이버 스택에 연결할 수 있습니다. NDIS가 필터 드라이버의 FilterAttach 함수를 호출하면 필터 모듈이 연결 상태로 들어갑니다. 연결 작업이 실패하면 필터 모듈이 분리됨 상태로 돌아갑니다. 모듈이 일시 중지됨 상태이고 NDIS가 FilterDetach 함수를 호출하면 모듈이 분리됨 상태로 돌아갑니다.

연결 비교
필터 모듈이 연결 상태이면 필터 드라이버가 모듈을 드라이버 스택에 연결할 준비를 합니다. 필터 모듈 준비가 완료되면 필터 모듈이 일시 중지됨 상태로 들어갑니다. 오류가 발생하는 경우(예: 필요한 리소스를 사용할 수 없기 때문에) 필터 모듈은 분리됨 상태로 돌아갑니다.

일시 중지
필터 모듈이 일시 중지됨 상태인 경우 필터 모듈은 송신 또는 수신 작업을 수행하지 않습니다. 필터 모듈이 연결 상태이고 FilterAttach 가 성공하면 필터 모듈이 일시 중지됨 상태로 들어갑니다. 필터 모듈이 일시 중지 상태이고 일시 중지 작업이 완료되면 필터 모듈이 일시 중지 됨 상태로 들어갑니다. 필터 모듈이 일시 중지됨 상태이고 NDIS가 필터 드라이버의 FilterRestart 함수를 호출하면 필터 모듈이 다시 시작 상태로 들어갑니다. 필터 모듈이 일시 중지됨 상태이고 NDIS가 드라이버의 FilterDetach 처리기를 호출하면 필터 모듈이 분리 됨 상태로 들어갑니다.

다시 시작
다시 시작 상태에서 필터 드라이버는 필터 모듈에 대한 보내기 및 수신 작업을 다시 시작하는 데 필요한 모든 작업을 완료합니다. 필터 모듈이 일시 중지됨 상태이고 NDIS가 드라이버의 FilterRestart 함수를 호출하면 필터 모듈이 다시 시작 상태로 들어갑니다. 다시 시작이 실패하면 필터 모듈이 일시 중지됨 상태로 돌아갑니다. 다시 시작에 성공하면 필터 모듈이 실행 중 상태로 들어갑니다.

실행 중
실행 중 상태에서 필터 드라이버는 필터 모듈에 대한 일반 송신 및 수신 처리를 수행합니다. 필터 모듈이 다시 시작 중 상태이고 드라이버가 보내기 및 받기 작업을 수행할 준비가 되면 필터 모듈이 실행 중 상태로 들어갑니다.

일시 중지
일시 중지 상태에서 필터 드라이버는 필터 모듈에 대한 보내기 및 수신 작업을 중지하는 데 필요한 모든 작업을 완료합니다. 필터 드라이버는 모든 미해결 송신 요청이 완료될 때까지 기다려야 하며 NDIS가 미해결 수신 표시를 모두 반환할 때까지 기다려야 합니다. 필터 모듈이 실행 중 상태이고 NDIS가 드라이버의 FilterPause 함수를 호출하면 필터 모듈이 일시 중지 상태로 들어갑니다. 필터 드라이버는 일시 중지 작업에 실패할 수 없습니다. 일시 중지 작업이 완료되면 필터 모듈이 일시 중지됨 상태로 들어갑니다.

드라이버 스택 관리

NDIS 필터 드라이버