Функция NdisMRegisterMiniportDriver (ndis.h)
Драйвер минипорта вызывает функцию NdisMRegisterMiniportDriver, чтобы зарегистрировать MiniportXx точки входа с помощью NDIS в качестве первого шага инициализации.
Синтаксис
NDIS_STATUS NdisMRegisterMiniportDriver(
[in] PDRIVER_OBJECT DriverObject,
[in] PUNICODE_STRING RegistryPath,
[in, optional] NDIS_HANDLE MiniportDriverContext,
[in] PNDIS_MINIPORT_DRIVER_CHARACTERISTICS MiniportDriverCharacteristics,
[out] PNDIS_HANDLE NdisMiniportDriverHandle
);
Параметры
[in] DriverObject
Указатель на непрозрачный объект драйвера, который драйвер минипорта получил в подпрограмме DriverEntry DriverEntry в параметре Argument1 (см. раздел DriverEntry NDIS Miniport Driver).
[in] RegistryPath
Указатель на непрозрачный путь реестра, который драйвер минипорта получил в подпрограмме driverEntry DriverEntry в параметре Argument2.
[in, optional] MiniportDriverContext
Дескриптор в области контекста, выделенной драйвером, где драйвер хранит сведения о состоянии и конфигурации.
[in] MiniportDriverCharacteristics
Указатель на объект NDIS_MINIPORT_DRIVER_CHARACTERISTICS структуру, которую инициализировал вызывающий объект.
[out] NdisMiniportDriverHandle
Указатель на переменную, предоставляемую вызывающим дескриптором. NDIS записывает дескриптор в эту переменную, которая однозначно идентифицирует этот драйвер. Драйвер должен сохранить этот дескриптор для использования в последующих вызовах функций NdisXxx.
Возвращаемое значение
NdisMRegisterMiniportDriver возвращает одно из следующих значений состояния:
Возвращаемый код | Описание |
---|---|
|
NdisMRegisterMiniportDriver успешно зарегистрировал мини-драйвер. |
|
Параметр CharacteristicsLength неверный для версии NDIS, указанной в элементе MajorNdisVersion в структуре MiniportDriverCharacteristics. |
|
Недопустимый MajorNdisVersion или MinorNdisVersion, указанный в структуре характеристик. |
|
Нехватка ресурсов, возможно, памяти, не позволила NDIS зарегистрировать вызывающий объект. |
|
Это состояние ошибки по умолчанию, возвращаемое, когда ни одна из предыдущих ошибок не привела к сбою регистрации. |
Замечания
Драйвер NDIS вызывает NdisMRegisterMiniportDriver из подпрограммы DriverEntry. Дополнительные сведения см. в разделе DriverEntry NDIS Miniport Driver.
Каждый драйвер минипорта экспортирует набор стандартных функций MiniportXx путем настройки структуры характеристик и вызова NdisMRegisterMiniportDriver. NDIS копирует структуру характеристик в внутреннее хранилище NDIS. Поэтому после регистрации драйвер не может изменить точках входа MiniportXxxx.
Чтобы зарегистрировать свой интерфейс виртуального минипорта, промежуточные драйверы NDIS должны вызывать NdisMRegisterMiniportDriver с флагом NDIS_INTERMEDIATE_DRIVER в структуре в MiniportDriverCharacteristics. Драйверы NDIS с нижним краем WDM должны вызывать NdisMRegisterMiniportDriver с флагом NDIS_WDM_DRIVER, установленным в структуре в MiniportDriverCharacteristics.
Драйверы могут регистрироваться в качестве объединенного минипорта драйвера и промежуточного драйвера. Чтобы зарегистрировать свой физический драйвер минипорта, минипорт-промежуточный драйвер вызывает NdisMRegisterMiniportDriver с соответствующими параметрами, как для любого драйвера минипорта. Чтобы зарегистрировать интерфейс виртуального минипорта, драйвер вызывает NdisMRegisterMiniportDriver еще раз, но с флагом NDIS_INTERMEDIATE_DRIVER, установленным в параметре MiniportDriverCharacteristics.
Чтобы включить драйверы минипорта для регистрации необязательных служб, NDIS вызывает функцию miniportSetOptions в контексте NdisMRegisterMiniportDriver.
После вызова драйвера NdisMRegisterMiniportDriverдрайвер должен быть готов вызываться в функцию MiniportInitializeEx, которая указана в параметре miniportDriverCharacteristics в любое время после возврата DriverEntry.
Если ошибка возникает в DriverEntry после успешного возврата NdisMRegisterMiniportDrive r, драйвер должен вызвать функции NdisMDeregisterMiniportDriver перед возвратом DriverEntry. Если DriverEntry выполнен успешно, драйвер должен вызвать NdisMDeregisterMiniportDriver из функции MiniportDriverUnload.
Требования
См. также
инициализация драйвера минипорта
NDIS_MINIPORT_DRIVER_CHARACTERISTICS NdisMDeregisterMiniportDriver