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


Функция IoCreateDriverProxyExtension (wdm.h)

Функция IoCreateDriverProxyExtension выделяет и инициализирует расширение DriverProxy, которое обеспечивает функциональность драйвера с горячей заменой.

Синтаксис

NTSTATUS IoCreateDriverProxyExtension(
  PDRIVER_OBJECT                        OwningDriverObject,
  DRIVER_PROXY_EXTENSION_CREATION_FLAGS Flags,
  PDRIVER_PROXY_EXTENSION               *DriverProxyExtension
);

Параметры

OwningDriverObject

[in, необязательный] Необязательный указатель на DRIVER_OBJECT , который будет принадлежать расширению DriverProxy. Если это указано, расширение будет связано с этим объектом драйвера. Если значение NULL, расширение создается без собственного драйвера.

Flags

[in] Значение DRIVER_PROXY_EXTENSION_CREATION_FLAGS , которое предоставляет дополнительные параметры конфигурации для создания расширения. В настоящее время флаги не определены, поэтому этот параметр должен иметь значение 0.

DriverProxyExtension

[out] Указатель на переменную, которая получает указатель на только что созданное расширение DriverProxy. Это расширение можно использовать с другими API DriverProxy.

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

IoCreateDriverProxyExtension возвращает одно из следующих значений NTSTATUS:

Код возврата Description
STATUS_SUCCESS Расширение было успешно выделено и инициализировано.
STATUS_NOT_SUPPORTED Текущая система не поддерживает расширения DriverProxy.
STATUS_DRIVER_BLOCKED Указанный драйвер исключен из операций DriverProxy с помощью параметров реестра.
STATUS_INSUFFICIENT_RESOURCES Недостаточно памяти было доступно для выделения расширения.
STATUS_RESOURCE_IN_USE Указанный объект драйвера уже владеет расширением DriverProxy.

Замечания

Расширение DriverProxy требуется для любого драйвера, который хочет использовать функции Driver Hot-Swap. Расширение служит непрозрачным маркером, который содержит все соответствующие сведения DriverProxy и включает операции горячей замены.

Драйверы, использующие драйвер Hot-Swap, должны создать расширение DriverProxy во время DriverEntry, предпочтительно рано в начале функции. Рекомендуется сохранить результат в глобальной переменной для простого доступа на протяжении всего времени существования драйвера.

Перед вызовом IoCreateDriverProxyExtension драйверы должны вызвать IoGetDriverProxyFeatures , чтобы убедиться, что функция DriverProxy доступна и включена.

Каждый объект драйвера может принадлежать не более одного расширения DriverProxy. Если объект драйвера уже имеет связанное расширение, функция возвращает STATUS_RESOURCE_IN_USE.

В драйвере Hot-Swap версии 2 после успешного создания расширения оболочки конечных точек автоматически доступны без явного вызова регистрации. Компилятор и компоновщик автоматически создают сведения о конечной точке во время процесса сборки.

Система автоматически управляет жизненным циклом расширения DriverProxy. При выгрузке объекта драйвера расширения автоматически очищается.

Требования

Требование Ценность
целевая платформа Всеобщий
Header wdm.h
Library NtosKrnl.lib
IRQL PASSIVE_LEVEL

См. также

IoGetDriverProxyFeatures

IoGetDriverProxyWrapperFromEndpoint

IoGetDriverProxyExtensionFromDriverObject

DRIVER_PROXY_EXTENSION_CREATION_FLAGS

DRIVER_OBJECT