Функция NdisIMRegisterLayeredMiniport (ndis.h)
Примечание NDIS 5. X является нерекомендуемым и заменен NDIS 6. x. Сведения о разработке новых драйверов NDIS см. в статье Сетевые драйверы, начиная с Windows Vista. Сведения о переносе NDIS 5. x драйверы для NDIS 6. x, см. раздел Перенос драйверов NDIS 5.x в NDIS 6.0.
NdisIMRegisterLayeredMiniport регистрирует точки входа и имя MiniportXxxx промежуточного драйвера в библиотеке NDIS при инициализации драйвера.
Синтаксис
NDIS_STATUS NdisIMRegisterLayeredMiniport(
[in] NDIS_HANDLE NdisWrapperHandle,
[in] PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics,
[in] UINT CharacteristicsLength,
[out] PNDIS_HANDLE DriverHandle
);
Параметры
[in] NdisWrapperHandle
Указывает дескриптор, возвращаемый NdisMInitializeWrapper.
[in] MiniportCharacteristics
Указатель на структуру NDIS XX_MINIPORT_CHARACTERISTICS, настроенную вызывающим элементом. Структура в MiniportCharacteristics определяется следующим образом:
typedef struct _NDIS_MINIPORT_CHARACTERISTICS {
UCHAR MajorNdisVersion;
UCHAR MinorNdisVersion;
UINT Reserved;
W_CHECK_FOR_HANG_HANDLER CheckForHangHandler;
W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler;
W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler;
W_HALT_HANDLER HaltHandler;
W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler;
W_INITIALIZE_HANDLER InitializeHandler;
W_ISR_HANDLER ISRHandler;
W_QUERY_INFORMATION_HANDLER QueryInformationHandler;
W_RECONFIGURE_HANDLER ReconfigureHandler;
W_RESET_HANDLER ResetHandler;
W_SEND_HANDLER SendHandler;
W_SET_INFORMATION_HANDLER SetInformationHandler;
W_TRANSFER_DATA_HANDLER TransferDataHandler;
//
// Version used is V4.0 or V5.0
// with following members
//
W_RETURN_PACKET_HANDLER ReturnPacketHandler;
W_SEND_PACKETS_HANDLER SendPacketsHandler;
W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler;
//
// Version used is V5.0 with the following members
//
W_CO_CREATE_VC_HANDLER CoCreateVcHandler;
W_CO_DELETE_VC_HANDLER CoDeleteVcHandler;
W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler;
W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler;
W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler;
W_CO_REQUEST_HANDLER CoRequestHandler;
//
// Version used is V5.1 with the following members
//
W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler;
W_MINIPORT_PNPEVENTNOTIFY_HANDLER PnPEventNotifyHandler;
W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler;
} NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS;
Промежуточный драйвер NDIS должен инициализировать эту структуру с нулями перед настройкой любого из следующих элементов:
MajorNdisVersion
Указывает основную версию библиотеки NDIS, используемой драйвером. Текущее значение равно 0x05, хотя библиотека NDIS продолжает поддерживать существующие драйверы мини-портов, разработанные для NDIS 4.0.MinorNdisVersion
Указывает дополнительную версию библиотеки NDIS, используемой драйвером. Текущее значение равно 0x00, хотя NDIS продолжает поддерживать существующие драйверы.Reserved
Этот член зарезервирован для системного использования.CheckForHangHandler
Указывает точку входа функции MiniportCheckForHang вызывающего объекта, если она имеется, или значение NULL.DisableInterruptHandler
Задает значение NULL.EnableInterruptHandler
Задает значение NULL.HaltHandler
Указывает точку входа функции MiniportHalt вызывающего объекта.HandleInterruptHandler
Задает значение NULL.InitializeHandler
Указывает точку входа функции MiniportInitialize вызывающего объекта.ISRHandler
Задает значение NULL.QueryInformationHandler
Указывает точку входа функции MiniportQueryInformation вызывающего объекта.ПеренастройкаHandler
Задает значение NULL.ResetHandler
Указывает точку входа функции MiniportReset вызывающего объекта.SendHandler
Указывает точку входа функции MiniportSend вызывающего объекта, функции MiniportWanSend или ЗНАЧЕНИЕ NULL , если вызывающий объект предоставляет функцию MiniportSendPackets .Если драйвер поддерживает отправку нескольких пакетов или сведения, относящиеся к мультимедиа, он задает вместо него член SendPacketsHandler и задает для этого элемента значение NULL.
SetInformationHandler Указывает точку входа функции MiniportSetInformation вызывающего объекта.
TransferDataHandler
Указывает точку входа функции MiniportTransferData вызывающего объекта , если она имеется, или значение NULL. Эта функция драйвера мини-порта требуется, если вызывающий объект не является драйвером сетевой карты глобальной сети или вызывающий объект поддерживает приемы с несколькими пакетами и, следовательно, предоставляет точку входа своей функции MiniportReturnPacket в ReturnPacketHandler.ReturnPacketHandler
Указывает точку входа функции MiniportReturnPacket вызывающего объекта , если она имеется, или значение NULL.SendPacketsHandler
Указывает точку входа функции MiniportSendPackets вызывающего объекта, если она имеется, или значение NULL.AllocateCompleteHandler
Задает значение NULL.CoCreateVcHandler
Задает значение NULL.CoDeleteVcHandler
Задает значение NULL.CoActivateVcHandler
Задает значение NULL.CoDeactivateVcHandler
Задает значение NULL.CoSendPacketsHandler
Задает значение NULL.CoRequestHandler
Задает значение NULL.CancelSendPacketsHandler
Указывает точку входа функции MiniportCancelSendPackets вызывающего объекта , если она имеется, или значение NULL. Промежуточные драйверы, которые в очереди отправляют пакеты более одной секунды, должны зарегистрировать функцию MiniportCancelSendPackets .PnPEventNotifyHandler
Указывает точку входа функции MiniportPnPEventNotify вызывающего объекта. Драйверы минипорта NDIS 5.1 должны зарегистрировать функцию MiniportPnPEventNotify . Драйверы мини-порта с нижним краем WDM должны регистрировать функцию MiniportPnPEventNotify .AdapterShutdownHandler
Указывает точку входа функции MiniportShutdown вызывающего объекта , если она имеется, или значение NULL. Промежуточные драйверы NDIS 5.1 должны зарегистрировать функцию MiniportShutdown . Промежуточные драйверы NDIS 5.1 должны регистрировать функцию MiniportShutdown путем вызова NdisIMRegisterLayeredMiniport, а не путем вызова NdisMRegisterAdapterShutdownHandler.
[in] CharacteristicsLength
Задает длину буфера характеристик, предоставленного вызывающим объектом, в байтах. В зависимости от значения MajorNdisVersion этот параметр должен иметь значение sizeof(NDIS50_MINIPORT_CHARACTERISTICS), если драйвер предоставляет NDIS50_MINIPORT_CHARACTERISTICS структуру, или sizeof(NDIS40_MINIPORT_CHARACTERISTICS), если драйвер предоставляет NDIS40_MINIPORT_CHARACTERISTICS структуру.
Если драйвер включает инструкцию сборки NDIS50_MINIPORT (или NDIS40_MINIPORT, если это необходимо) в своих источниках, или если модуль записи драйвера использует -NDIS50_MINIPORT (или .). 40..) параметр компилятора, этот параметр устанавливается при сборке драйвера.
[out] DriverHandle
Указатель на переменную, в которой NdisIMRegisterLayeredMiniport, если этот вызов выполнен успешно, возвращает дескриптор, который вызывающий объект должен сохранить. Затем вызывающий объект должен передать этот дескриптор в NdisIMInitializeDeviceInstance, как правило, из своей функции ProtocolBindAdapter .
Возвращаемое значение
NdisIMRegisterLayeredMiniport возвращает NDIS_STATUS_SUCCESS, если он зарегистрировал вызывающий объект в качестве драйвера мини-порта, или может вернуть одно из следующих значений состояния:
Код возврата | Описание |
---|---|
NDIS_STATUS_BAD_CHARACTERISTICS | Параметр CharacteristicsLength слишком мал для Параметра MajorNdisVersion, указанного в буфере miniportCharacteristics. |
NDIS_STATUS_BAD_VERSION | Параметр MajorNdisVersion или MajorNdisVersion , указанный в структуре характеристик, недопустим. |
NDIS_STATUS_RESOURCES | Нехватка ресурсов, возможно, памяти, не позволила библиотеке NDIS зарегистрировать вызывающий объект в качестве драйвера мини-порта. |
NDIS_STATUS_FAILURE | Это состояние ошибки по умолчанию, возвращаемое, если ни одна из предыдущих ошибок не привела к сбою регистрации. Например, если библиотеке NDIS не удается загрузить образ драйвера и заблокировать его в системной памяти, она возвращает эту ошибку. |
Комментарии
Любой промежуточный драйвер NDIS, который экспортирует функции MiniportXxx и ProtocolXxx, настраивает структуру характеристик и вызывает NdisIMRegisterLayeredMiniport из своей функции DriverEntry после того , как DriverEntry вызывает NdisMInitializeWrapper. Эта структура копируется в запросе NdisIMRegisterLayeredMiniport во внутреннее хранилище библиотеки NDIS. Таким образом, после регистрации такой драйвер не может изменить свои функции обработчика.
После успешного вызова такого промежуточного драйвера NDIS NdisIMRegisterLayeredMiniport он должен вызвать NdisRegisterProtocol , чтобы зарегистрировать свои функции ProtocolXxx в библиотеке NDIS. Такой драйвер обычно имеет функции ProtocolBindAdapter и ProtocolUnbindAdapter . Его функция ProtocolBindAdapter будет вызываться далее, когда базовый драйвер сетевой карты успешно инициализирован. Затем ProtocolBindAdapter может установить привязку к драйверу сетевой карты с помощью NdisOpenAdapter.
Промежуточный драйвер NDIS должен иметь функцию MiniportSendPackets , если базовый драйвер сетевого адаптера может поддерживать отправку или использование сведений, относящихся к мультимедиа, таких как приоритеты пакетов, отправленных в массив пакетов из протокола более высокого уровня. Промежуточный драйвер NDIS должен иметь функцию MiniportReturnPacket, если базовый драйвер сетевого адаптера может поддерживать многопакетные указания приема или указывать массивы пакетов, содержащие сведения, относящиеся к носителям. Библиотека NDIS обрабатывает массивы пакетов, передаваемые между базовым драйвером сетевой карты и протоколом более высокого уровня, который поддерживает передачу только одного пакета от имени такого промежуточного драйвера.
- Целевая платформа: универсальная
- Версия: не поддерживается для драйверов NDIS 6.0 в Windows Vista. Вместо этого используйте NdisMRegisterMiniportDriver. Поддерживается для драйверов NDIS 5.1 в Windows Vista и Windows XP.
Требования
Требование | Значение |
---|---|
Заголовок | ndis.h (включая Ndis.h) |
Библиотека | Ndis.lib |
IRQL | PASSIVE_LEVEL |
См. также раздел
- DriverEntry of NDIS Miniport Drivers
- DriverEntry of NDIS Protocol Drivers
- MiniportCheckForHang
- MiniportHalt
- MiniportInitialize
- MiniportQueryInformation
- MiniportReset
- MiniportReturnPacket
- MiniportSend
- MiniportSendPackets
- MiniportSetInformation
- MiniportTransferData
- MiniportWanSend
- NdisIMInitializeDeviceInstance
- NdisMRegisterAdapterShutdownHandler
- NdisMRegisterMiniport
- NdisOpenAdapter
- NdisRegisterProtocol
- NdisZeroMemory
- ProtocolBindAdapter
- ProtocolReceivePacket
- ProtocolUnbindAdapter