Modo de omisión de datos
El modo de omisión de datos del controlador de filtro puede proporcionar un rendimiento mejorado del sistema. NDIS no llama a funciones FilterXxx que se omiten. Por ejemplo, si los servicios de envío y recepción no son necesarios para una aplicación de filtro determinada, el controlador de filtro puede omitir las funciones de envío y recepción.
Un controlador de filtro especifica los puntos de entrada predeterminados, para las funciones que se pueden omitir, durante la inicialización del controlador cuando llama a la función NdisFRegisterFilterDriver . Los puntos de entrada son NULL para las funciones que se omiten de forma predeterminada. Para obtener más información sobre la inicialización, consulte Inicialización de un controlador de filtro.
Para cambiar el estado de omisión en tiempo de ejecución, el controlador debe especificar un punto de entrada para la función FilterSetModuleOptions durante la inicialización del controlador. El controlador puede inicializar una estructura de NDIS_FILTER_PARTIAL_CHARACTERISTICS y pasar las nuevas características a la función NdisSetOptionalHandlers desde dentro del contexto de FilterSetModuleOptions.
NDIS llama a la función FilterSetModuleOptions , si existe, al inicio de una operación de reinicio. Un controlador de filtro puede establecer el modo de omisión de forma independiente para cada módulo de filtro. Para obtener más información, consulte Inicio de un módulo de filtro.
Los controladores de filtro pueden omitir las siguientes funciones opcionales FilterXxx que se especifican en la estructura de NDIS_FILTER_DRIVER_CHARACTERISTICS :
FilterSendNetBufferListsComplete
FilterCancelSendNetBufferLists
Para establecer una función FilterXxx en modo de omisión, un controlador de filtro especifica NULL para el punto de entrada de esa función. Sin embargo, si un controlador llama a cualquier función NDIS que tenga una función FilterXxx asociada, debe proporcionar un punto de entrada para esa función FilterXxx . Por ejemplo, si un controlador llama a la función NdisFIndicateReceiveNetBufferLists , debe proporcionar una función FilterReturnNetBufferLists .
Si un controlador de filtro especifica una función FilterSendNetBufferLists y pone en cola las solicitudes de envío, también debe especificar una función FilterCancelSendNetBufferLists .
Si un controlador de filtro especifica una función FilterReceiveNetBufferLists o FilterReturnNetBufferLists , el controlador también debe especificar una función FilterStatus .
Para cambiar la configuración del modo de omisión en tiempo de ejecución, un controlador de filtro puede llamar a la función NdisFRestartFilter . NdisFRestartFilter programa una operación de pausa seguida de una operación de reinicio para el módulo de filtro especificado. Cuando NDIS llama a FilterSetModuleOptions, el controlador de filtro puede cambiar las funciones de ese módulo de filtro llamando a NdisSetOptionalHandlers y especificando un nuevo conjunto de puntos de entrada.
Nota Pausar y reiniciar podría hacer que algunos paquetes de red se quiten en la ruta de transmisión, o en la ruta de acceso de recepción, o ambos. Los protocolos de red que proporcionan un mecanismo de transporte confiable pueden reintentar la operación de E/S de red en el caso de un paquete perdido, pero otros protocolos que no garantizan la confiabilidad no reintentan la operación.
Un controlador de filtro puede registrar funciones opcionales adicionales que admiten servicios de controladores opcionales. El controlador registra estos servicios opcionales en la función FilterSetOptions . Para obtener más información sobre estos servicios opcionales, vea Configuring Optional Filter Driver Services.