Функция NdisSetOptionalHandlers (ndis.h)
Драйверы NDIS могут вызывать функцию NdisSetOptionalHandlers, чтобы задать или изменить точки входа функций драйвера.
Синтаксис
NDIS_STATUS NdisSetOptionalHandlers(
NDIS_HANDLE NdisHandle,
PNDIS_DRIVER_OPTIONAL_HANDLERS OptionalHandlers
);
Параметры
NdisHandle
Дескриптор NDIS, определяющий экземпляр драйвера или драйвера.
Для драйвера протокола это значение NdisDriverHandle, переданное функции ProtocolSetOptions или значение NdisBindingHandle, полученное путем вызова функции NdisOpenAdapterEx.
Для минипорт-драйвера это значение NdisDriverHandle, переданное функции MiniportSetOptions
Для драйвера фильтра это значение NdisDriverHandle, переданное функции FilterSetOptions или значение NdisFilterHandle, переданное функции FilterAttach.
OptionalHandlers
Указатель на одну из следующих структур NDIS:
NDIS_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS NDIS_CLIENT_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICS NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS NDIS_CO_CLIENT_OPTIONAL_HANDLERS NDIS_FILTER_PARTIAL_CHARACTERISTICS NDIS_MINIPORT_CO_CHARACTERISTICS NDIS_MINIPORT_PNP_CHARACTERISTICSNDIS_MINIPORT_SS_CHARACTERISTICS
NDIS_NDK_PROVIDER_CHARACTERISTICS
NDIS_PROTOCOL_CO_CHARACTERISTICS NDIS_PROVIDER_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS NDIS_PROVIDER_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICS NDIS_SHARED_MEMORY_PROVIDER_CHARACTERISTICSВозвращаемое значение
NdisSetOptionalHandlers возвращает одно из следующих значений состояния:
Возвращаемый код | Описание |
---|---|
|
NdisSetOptionalHandlers возвращает NDIS_STATUS_SUCCESS, если он задает точки входа драйвера. |
|
NdisSetOptionalHandlers произошел сбой из-за нехватки ресурсов. |
|
NdisSetOptionalHandlers произошел сбой, так как минипорт-драйвер не указал, что он поддерживает NDIS 6.0 или более поздней версии. Минипорт-драйвер указывает свою версию NDIS при вызове функция NdisMRegisterMiniportDriver. |
|
NdisSetOptionalHandlers возвращает NDIS_STATUS_FAILURE, если ни одно из предыдущих значений не применяется. |
Замечания
Драйвер NDIS может вызывать NdisSetOptionalHandlers для перезаписи точек входа по умолчанию. Типы структур, передаваемые в OptionalHandlers зависят от типа драйвера.
Драйверы протокола могут вызывать NdisSetOptionalHandlers в контексте функции ProtocolSetOptions. В качестве параметра драйверы протокола могут вызывать NdisSetOptionalHandlers из функции ProtocolBindAdapterEx или функции функция ProtocolOpenAdapterCompleteEx после того, как драйвер протокола имеет допустимый дескриптор из функции NdisOpenAdapterEx.
В этом случае допустимые структуры:
NDIS_PROTOCOL_CO_CHARACTERISTICS NDIS_CO_CLIENT_OPTIONAL_HANDLERS NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS NDIS_SHARED_MEMORY_PROVIDER_CHARACTERISTICS NDIS_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS NDIS_CLIENT_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICSДополнительные сведения о 2 структурах разгрузки дыма см. в документации поNDIS 6.0 TCP-дымохода.
Драйверы минипорта вызывают NdisSetOptionalHandlers в контексте функции MiniportSetOptions.
В этом случае допустимые структуры:
NDIS_MINIPORT_CO_CHARACTERISTICS NDIS_MINIPORT_PNP_CHARACTERISTICSNDIS_MINIPORT_SS_CHARACTERISTICS
NDIS_NDK_PROVIDER_CHARACTERISTICS
NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS NDIS_SHARED_MEMORY_PROVIDER_CHARACTERISTICS NDIS_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS NDIS_CLIENT_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICSДополнительные сведения о 2 структурах разгрузки дыма см. в документации поNDIS 6.0 TCP-дымохода.
Драйверы фильтров вызывают NdisSetOptionalHandlers в контексте функции FilterSetOptions.
В текущей версии Windows нет дополнительных служб драйверов фильтров.
Драйверы фильтров могут вызывать NdisSetOptionalHandlers для модуля фильтра. Драйверы фильтров вызывают NdisSetOptionalHandlers в контексте функция FilterSetModuleOptions.
В этом случае допустимые структуры:
NDIS_FILTER_PARTIAL_CHARACTERISTICSNDIS_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS
NDIS_CLIENT_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICS
NDIS_PROVIDER_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS
NDIS_PROVIDER_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICS
Дополнительные сведения о 4 структурах разгрузки дымохода см. в документации по разгрузке NDIS 6.0 TCP.