Поделиться через


функция обратного вызова MINIPORT_UNLOAD (ndis.h)

NDIS вызывает функцию MiniportDriverUnload драйвера минипорта , чтобы запросить у драйвера освобождение ресурсов до того, как система завершит операцию выгрузки драйвера.

Примечание Функцию необходимо объявить с помощью типа MINIPORT_UNLOAD . Дополнительные сведения см. в следующем разделе Примеры.
 

Синтаксис

MINIPORT_UNLOAD MiniportUnload;

void MiniportUnload(
  [in] PDRIVER_OBJECT DriverObject
)
{...}

Параметры

[in] DriverObject

Указатель на структуру DRIVER_OBJECT , которая является объектом драйвера драйвера.

Возвращаемое значение

None

Remarks

Драйвер указывает точку входа MiniportDriverUnload при вызовеФункция NdisMRegisterMiniportDriver.

Объект драйвера, связанный с драйвером мини-порта NDIS, указывает подпрограмму выгрузки . Операционная система вызывает подпрограмму Выгрузки при удалении всех устройств, которые были удалены. NDIS предоставляет подпрограмму выгрузки для драйверов NDIS. NDIS вызывает функцию MiniportDriverUnload драйвера мини-порта из подпрограммы выгрузки .

Функциональность подпрограммы выгрузки зависит от драйвера. Как правило, MiniportDriverUnload должен отменять операции, выполненные в подпрограмме DriverEntry драйвера.

Драйвер мини-порта вызываетФункция NdisMDeregisterMiniportDriver из MiniportDriverUnload.

В дополнение к NdisMDeregisterMiniportDriver, промежуточный драйвер также вызываетФункция NdisDeregisterProtocolDriver для отмены регистрации интерфейса протокола драйвера. MiniportDriverUnload также должен выполнять все необходимые операции очистки, такие как освобождение ресурсов интерфейса драйвера протокола.

Если драйвер мини-порта управляет несколькими экземплярами устройства, например драйвером балансировки нагрузки, NDIS не будет вызывать MiniportDriverUnload до тех пор, пока NDIS не вызовет функцию MiniportHaltEx один раз для каждого экземпляра устройства.

NDIS вызывает MiniportDriverUnload по адресу IRQL = PASSIVE_LEVEL.

Примеры

Чтобы определить функцию MiniportDriverUnload , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить функцию MiniportDriverUnload с именем MyDriverUnload, используйте тип MINIPORT_UNLOAD , как показано в следующем примере кода:

MINIPORT_UNLOAD MyDriverUnload;

Затем реализуйте функцию следующим образом:

_Use_decl_annotations_
VOID
 MyDriverUnload(
    PDRIVER_OBJECT  DriverObject
    )
  {...}

Тип функции MINIPORT_UNLOAD определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции MINIPORT_UNLOAD в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов NDIS.

Сведения о Use_decl_annotations см. в статье Поведение функции с заметками.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Windows
Header ndis.h (включая Ndis.h)
IRQL PASSIVE_LEVEL

См. также раздел

DRIVER_OBJECT

MiniportHaltEx

NdisDeregisterProtocolDriver

NdisMDeregisterMiniportDriver

NdisMRegisterMiniportDriver

Выгрузить