Sdílet prostřednictvím


Režim obejití dat

Režim obejití dat ovladače filtru může poskytovat lepší výkon systému. NDIS nevolá funkce FilterXxx , které jsou vynechány. Pokud například pro danou aplikaci filtru nejsou vyžadovány služby pro odesílání a přijímání, může ovladač filtru obejít funkce odesílání a příjmu.

Ovladač filtru určuje výchozí vstupní body pro funkce, které lze obejít během inicializace ovladačů při volání funkce NdisFRegisterFilterDriver . Vstupní body mají hodnotu NULL pro funkce, které se ve výchozím nastavení obcházejí. Další informace o inicializaci naleznete v tématu Inicializace ovladače filtru.

Chcete-li změnit stav obejití za běhu, musí ovladač zadat vstupní bod pro funkci FilterSetModuleOptions během inicializace ovladače. Ovladač může inicializovat NDIS_FILTER_PARTIAL_CHARACTERISTICS strukturu a předat nové vlastnosti funkci NdisSetOptionalHandlers z kontextu FilterSetModuleOptions.

NDIS volá funkci FilterSetModuleOptions , pokud existuje, na začátku operace restartování. Ovladač filtru může pro každý modul filtru nastavit režim obejití nezávisle. Další informace najdete v části Zahájení modulu filtru.

Ovladače filtru můžou obejít následující volitelné funkce FilterXxx zadané ve struktuře NDIS_FILTER_DRIVER_CHARACTERISTICS :

FilterSendNetBufferLists

FilterSendNetBufferListsComplete

FilterCancelSendNetBufferLists

FilterReturnNetBufferLists

FilterReceiveNetBufferLists

Chcete-li nastavit funkci FilterXxx na režim obejití, ovladač filtru určuje hodnotu NULL pro vstupní bod dané funkce. Pokud však ovladač volá libovolnou funkci NDIS, která má přidruženou funkci FilterXxx , musí poskytnout vstupní bod pro danou funkci FilterXxx . Pokud například ovladač volá funkci NdisFIndicateReceiveNetBufferLists, musí poskytnout funkci FilterReturnNetBufferLists.

Pokud ovladač filtru specifikuje funkci FilterSendNetBufferLists a zařadí požadavky do fronty, musí také specifikovat funkci FilterCancelSendNetBufferLists.

Pokud ovladač filtru určuje FilterReceiveNetBufferLists nebo FilterReturnNetBufferLists funkce, ovladač musí také zadat funkci FilterStatus .

Pokud chcete změnit nastavení režimu obejití za běhu, může ovladač filtru volat funkci NdisFRestartFilter . NdisFRestartFilter naplánuje operaci pozastavení, za kterou následuje operace restartování pro zadaný modul filtru. Když NDIS volá FilterSetModuleOptions, ovladač filtru může změnit funkce pro tento modul filtru voláním NdisSetOptionalHandlers a určením nové sady vstupních bodů.

Poznámka Pozastavení a restartování může způsobit, že se některé síťové pakety zahodí v cestě přenosu, v přijímací cestě, nebo v obojím. Síťové protokoly, které poskytují spolehlivý transportní mechanismus, můžou síťovou vstupně-výstupní operaci opakovat v případě ztraceného paketu, ale jiné protokoly, které nezaručují spolehlivost, operaci neopakují.

Ovladač filtru může zaregistrovat další volitelné funkce, které podporují volitelné služby ovladačů. Ovladač zaregistruje tyto volitelné služby ve funkci FilterSetOptions . Další informace o těchto volitelných službách najdete v tématu Konfigurace volitelných služeb ovladačů filtru.