다음을 통해 공유


필터 모듈 연결

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

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

필터 모듈이 연결 상태인 동안 드라이버는 다음을 수행합니다.

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

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

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

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

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

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

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

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

NDIS는 FilterDetach 함수를 호출하여 NDIS가 FilterAttach와 연결된 필터 모듈을 분리합니다. 자세한 내용은 필터 모듈 분리를 참조하세요.