다음을 통해 공유


필터 모듈 연결

드라이버 스택에 필터 모듈을 삽입하는 프로세스를 시작하기 위해 NDIS는 필터 드라이버의 FilterAttach 함수를 호출합니다. FilterAttach 함수에서 실행이 시작될 때 필터 모듈은 연결 상태로 들어갑니다. 드라이버 스택에 필터 모듈을 연결하는 방법에 대한 자세한 내용은 드라이버 스택을 시작하기에서참조하세요.

필터 드라이버는 NDIS가 FilterAttach 함수의 NdisFilterHandle 매개 변수에서 전달한 핸들을 사용하여, 이 필터 모듈을 참조하는 모든 향후 NdisXxx 함수 호출에서 사용합니다. 이러한 함수에는 상태 표시, 요청 보내기, 표시 수신 및 OID 요청이 포함됩니다.

필터 모듈이 연결 상태에 있을 때, 드라이버는 특정 동작을 수행합니다.

  • 필터 모듈에 대한 컨텍스트 영역을 만들고 버퍼 풀 및 기타 필터 모듈 관련 리소스를 할당합니다. 버퍼 풀에 대한 자세한 내용은 필터 드라이버 버퍼 관리참조하세요.

  • NDIS가 FilterAttach전달한 NdisFilterHandle 값을 사용하여 NdisFSetAttributes 함수를 호출합니다. NdisFSetAttributes의 FilterModuleContext 매개 변수는 이 필터 모듈에 대한 필터 드라이버의 컨텍스트 영역을 지정합니다. NDIS는 필터 드라이버의 FilterXxx 함수에 이 컨텍스트 영역을 전달합니다.

  • 필요에 따라 레지스트리에서 이 필터 모듈에 대한 구성 매개 변수를 읽습니다. 자세한 내용은 필터 드라이버 대한액세스 구성 정보를 참조하세요.

  • 이전 작업이 성공적으로 완료되면 필터 모듈이 일시 중지된 상태입니다.

  • 이전 작업이 실패한 경우 필터 드라이버는 FilterAttach 함수에 할당된 리소스를 해제하고 필터 모듈을 분리된 상태로 반환해야 합니다.

  • NDIS_STATUS_SUCCESS 또는 적절한 오류 코드를 반환합니다. 드라이버가 오류 코드를 반환하면 NDIS는 드라이버 스택을 종료합니다.

참고 레지스트리에는 필터 모듈이 선택 사항임을 지정하는 플래그가 포함될 수 있습니다. 선택적 필터 모듈이 연결되지 않으면 NDIS는 드라이버 스택의 나머지 부분을 종료하지 않습니다.

필터 드라이버는 요청을 보내거나, 받은 데이터를 나타내거나, OID 요청을 하거나, 연결 상태에서 상태를 표시할 수 없습니다. 보내기 및 받기 작업은 실행일시 중지 상태에서 지원됩니다. OID 요청 및 상태 표시는 일시 중지, 다시 시작, 실행상태 일시 정지에서 지원됩니다.

NDIS는 FilterDetach 함수를 호출하여 FilterAttach를 통해 NDIS에 의해 연결된 필터 모듈을 분리합니다. 자세한 내용은 필터 모듈을 분리하는 방법 을(를) 참조하세요.