필터 드라이버 데이터 바이패스 모드 향상된 시스템 성능을 제공할 수 있습니다. NDIS는 무시되는 FilterXxx 함수를 호출하지 않습니다. 예를 들어 지정된 필터 애플리케이션에 송신 및 수신 서비스가 필요하지 않은 경우 필터 드라이버는 송신 및 수신 함수를 바이패스할 수 있습니다.
필터 드라이버는 NdisFRegisterFilterDriver 함수를 호출할 때 드라이버 초기화 중에 바이패스할 수 있는 함수에 대한 기본 진입점을 지정합니다. 기본적으로 무시되는 함수의 진입점은 NULL입니다. 초기화에 대한 자세한 내용은 필터 드라이버 초기화하는참조하세요.
런타임에 바이패스 상태를 변경하려면 드라이버가 드라이버 초기화 중에 FilterSetModuleOptions 함수의 진입점을 지정해야 합니다. 드라이버는 NDIS_FILTER_PARTIAL_CHARACTERISTICS 구조를 초기화하고 FilterSetModuleOptions컨텍스트 내에서 NdisSetOptionalHandlers 함수에 새 특성을 전달할 수 있습니다.
NDIS는 다시 시작 작업을 시작할 때 FilterSetModuleOptions 함수(있는 경우)를 호출합니다. 필터 드라이버는 각 필터 모듈에 대해 바이패스 모드를 독립적으로 설정할 수 있습니다. 자세한 내용은 필터 모듈 시작하기을 참조하세요.
필터 드라이버는 NDIS_FILTER_DRIVER_CHARACTERISTICS 구조에 지정된 다음 선택적 FilterXxx 함수를 무시할 수 있습니다.
FilterSendNetBufferListsComplete
FilterCancelSendNetBufferLists
필터 드라이버는 FilterXxx 함수를 바이패스 모드로 설정하기 위해 해당 함수의 진입점에 NULL 지정합니다. 그러나 드라이버가 연결된 FilterXxx 함수가 있는 NDIS 함수를 호출하는 경우 해당 FilterXxx 함수에 대한 진입점을 제공해야 합니다. 예를 들어 드라이버가 NdisFIndicateReceiveNetBufferLists 함수를 호출하는 경우 FilterReturnNetBufferLists 함수를 제공해야 합니다.
필터 드라이버가 FilterSendNetBufferLists 함수를 지정하고 송신 요청을 큐에 대기하는 경우 FilterCancelSendNetBufferLists 함수도 지정해야 합니다.
필터 드라이버가 FilterReceiveNetBufferLists 또는 FilterReturnNetBufferLists 함수를 지정할 경우, 드라이버는 FilterStatus 함수도 지정해야 합니다.
런타임에 바이패스 모드 설정을 변경하기 위해 필터 드라이버는 NdisFRestartFilter 함수를 호출할 수 있습니다. NdisFRestartFilter 지정된 필터 모듈에 대한 다시 시작 작업 다음에 일시 중지 작업을 예약합니다. NDIS가 filterSetModuleOptions 호출하는 경우 필터 드라이버는 NdisSetOptionalHandlers 호출하고 새 진입점 집합을 지정하여 해당 필터 모듈의 함수를 변경할 수 있습니다.
참고 일시 중지 및 다시 시작으로 인해 일부 네트워크 패킷이 전송 경로 또는 수신 경로 또는 둘 다에 삭제될 수 있습니다. 신뢰할 수 있는 전송 메커니즘을 제공하는 네트워크 프로토콜은 패킷 손실의 경우 네트워크 I/O 작업을 다시 시도할 수 있지만 안정성을 보장하지 않는 다른 프로토콜은 작업을 다시 시도하지 않습니다.
필터 드라이버는 선택적 드라이버 서비스를 지원하는 추가 선택적 함수를 등록할 수 있습니다. 드라이버는 FilterSetOptions 함수에 이러한 선택적 서비스를 등록합니다. 더 많은 정보에 대해 선택적 필터 드라이버 서비스 구성을 참조하세요.