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


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

Подпрограмма выгрузки выполняет все необходимые операции, прежде чем система выгрузит драйвер.

Синтаксис

DRIVER_UNLOAD DriverUnload;

void DriverUnload(
  [in] _DRIVER_OBJECT *DriverObject
)
{...}

Параметры

[in] DriverObject

Указатель на DRIVER_OBJECT структуру, предоставляемую вызывающим абонентом. Это объект драйвера драйвера драйвера.

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

Никакой

Замечания

Подпрограмма выгрузки драйвера выполняется в контексте системного потока в IRQL = PASSIVE_LEVEL.

Подпрограмма выгрузки требуется для драйверов WDM и необязательно для драйверов, отличных от WDM. Подпрограмма выгрузки драйвера, если она указана, должна быть названа XxxВыгрузить, где Xxx является префиксом для конкретного драйвера. Подпрограмма драйвера DriverEntry должна хранить адрес выгрузки подпрограммы в DriverObject->DriverUnload. (Если подпрограмма не указана, этот указатель должен быть null.)

Подробные сведения о реализации подпрограммы драйвера см. в статье Написание подпрограммы выгрузки.

Примеры

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

Например, чтобы определить подпрограмму обратного вызова выгрузки, которая называется MyUnload, используйте тип DRIVER_UNLOAD, как показано в этом примере кода:

DRIVER_UNLOAD MyUnload;

Затем реализуйте подпрограмму обратного вызова следующим образом:

_Use_decl_annotations_
VOID 
  MyUnload(
    struct _DRIVER_OBJECT  *DriverObject
    )
  {
      // Function body
  }

Тип функции DRIVER_UNLOAD определен в файле заголовка Wdm.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте в определение функции _Use_decl_annotations_ заметку. Заметка _Use_decl_annotations_ гарантирует, что используются заметки, применяемые к типу функции DRIVER_UNLOAD в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в объявлении функций с помощью типов ролей функций для драйверов WDM. Сведения о _Use_decl_annotations_см. в поведению функции.

Требования

Требование Ценность
целевая платформа Настольный
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL Звонил в PASSIVE_LEVEL.