필터 모듈 연결
드라이버 스택에 필터 모듈을 삽입하는 프로세스를 시작하기 위해 NDIS는 필터 드라이버의 FilterAttach 함수를 호출합니다. FilterAttach 함수에서 실행이 시작될 때 필터 모듈은 연결 상태로 들어갑니다. 드라이버 스택에 필터 모듈을 연결하는 방법에 대한 자세한 내용은 드라이버 스택 시작을 참조하세요.
필터 드라이버는 이 필터 모듈을 참조하는 모든 이후 NdisXxx 함수 호출에서 NDIS가 FilterAttach의 NdisFilterHandle 매개 변수에 전달하는 핸들을 사용합니다. 이러한 기능에는 상태 표시, 요청 보내기, 표시 수신 및 OID 요청이 포함됩니다.
필터 모듈이 연결 상태인 동안 드라이버는 다음을 수행합니다.
필터 모듈에 대한 컨텍스트 영역을 만들고 버퍼 풀 및 기타 필터 모듈 관련 리소스를 할당합니다. 버퍼 풀에 대한 자세한 내용은 필터 드라이버 버퍼 관리를 참조하세요.
NDIS가 FilterAttach에 전달한 NdisFilterHandle 값을 사용하여 NdisFSetAttributes 함수를 호출합니다. NdisFSetAttributes의 FilterModuleContext 매개 변수는 이 필터 모듈에 대한 필터 드라이버의 컨텍스트 영역을 지정합니다. NDIS는 이 컨텍스트 영역을 필터 드라이버의 FilterXxx 함수에 전달합니다.
필요에 따라 레지스트리에서 이 필터 모듈에 대한 구성 매개 변수를 읽습니다. 자세한 내용은 필터 드라이버에 대한 구성 정보 액세스를 참조하세요.
이전 작업이 성공적으로 완료되면 필터 모듈이 일시 중지됨 상태입니다.
이전 작업이 실패한 경우 필터 드라이버는 FilterAttach 함수에 할당된 리소스를 해제하고 필터 모듈을 분리 상태로 반환해야 합니다.
NDIS_STATUS_SUCCESS 또는 적절한 오류 코드를 반환합니다. 드라이버가 오류 코드를 반환하면 NDIS는 드라이버 스택을 종료합니다.
참고 레지스트리에는 필터 모듈이 선택 사항임을 지정하는 플래그가 포함될 수 있습니다. 선택적 필터 모듈이 연결되지 않으면 NDIS는 드라이버 스택의 나머지 부분을 종료하지 않습니다.
필터 드라이버는 보내기 요청을 하거나, 수신된 데이터를 나타내거나, OID 요청을 하거나, 연결 상태에서 상태 표시할 수 없습니다. 보내기 및 받기 작업은 실행 중 및 일시 중지 상태에서 지원됩니다. OID 요청 및 상태 표시는 일시 중지됨, 다시 시작, 실행 중 및 일시 중지 상태에서 지원됩니다.
NDIS는 FilterDetach 함수를 호출하여 NDIS가 FilterAttach와 연결된 필터 모듈을 분리합니다. 자세한 내용은 필터 모듈 분리를 참조하세요.