데이터 바이패스 모드
필터 드라이버 데이터 바이패스 모드 는 향상된 시스템 성능을 제공할 수 있습니다. 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 함수에 이러한 선택적 서비스를 등록합니다. 이러한 선택적 서비스에 대한 자세한 내용은 선택적 필터 드라이버 서비스 구성을 참조하세요.