Compartir a través de


Función IoCreateDriverProxyExtension (wdm.h)

La función IoCreateDriverProxyExtension asigna e inicializa una extensión DriverProxy que habilita la funcionalidad del controlador intercambiable en caliente.

Syntax

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

Parámetros

OwningDriverObject

[in, opcional] Puntero opcional a la DRIVER_OBJECT que poseerá la extensión DriverProxy. Si se proporciona, la extensión se asociará a este objeto de controlador. Si es NULL, la extensión se crea sin un controlador propietario.

Flags

[in] Valor DRIVER_PROXY_EXTENSION_CREATION_FLAGS que proporciona opciones de configuración adicionales para la creación de extensiones. Actualmente, no se definen marcas, por lo que este parámetro debe establecerse en 0.

DriverProxyExtension

[out] Puntero a una variable que recibe un puntero a la extensión DriverProxy recién creada. Esta extensión se puede usar con otras API driverProxy.

Valor devuelto

IoCreateDriverProxyExtension devuelve uno de los siguientes valores NTSTATUS:

Código de retorno Description
STATUS_SUCCESS La extensión se asignó e inicializó correctamente.
STATUS_NOT_SUPPORTED El sistema actual no admite extensiones DriverProxy.
STATUS_DRIVER_BLOCKED El controlador especificado se excluye de las operaciones DriverProxy mediante la configuración del Registro.
STATUS_INSUFFICIENT_RESOURCES Memoria insuficiente disponible para asignar la extensión.
STATUS_RESOURCE_IN_USE El objeto de controlador especificado ya posee una extensión DriverProxy.

Observaciones

Se requiere una extensión DriverProxy para cualquier controlador que quiera usar la funcionalidad driver Hot-Swap. La extensión actúa como un token opaco que contiene toda la información de DriverProxy pertinente y habilita las operaciones intercambiables en caliente.

Los controladores que usan Driver Hot-Swap deben crear una extensión DriverProxy durante DriverEntry, preferiblemente al principio de la función. Se recomienda almacenar el resultado en una variable global para facilitar el acceso durante toda la duración del controlador.

Antes de llamar a IoCreateDriverProxyExtension, los controladores deben llamar a IoGetDriverProxyFeatures para comprobar que la funcionalidad DriverProxy está disponible y habilitada.

Cada objeto de controlador puede poseer como máximo una extensión DriverProxy. Si un objeto de controlador ya tiene una extensión asociada, la función devuelve STATUS_RESOURCE_IN_USE.

En Driver Hot-Swap V2, una vez creada correctamente la extensión, los contenedores de punto de conexión están disponibles automáticamente sin necesidad de llamadas de registro explícitas. El compilador y el enlazador generan automáticamente la información del punto de conexión durante el proceso de compilación.

El sistema administra automáticamente el ciclo de vida de la extensión DriverProxy. Cuando se descarga el objeto de controlador propietario, la extensión se limpia automáticamente.

Requisitos

Requirement Importancia
de la plataforma de destino de Universal
Header wdm.h
Library NtosKrnl.lib
irQL PASSIVE_LEVEL

Consulte también

IoGetDriverProxyFeatures

IoGetDriverProxyWrapperFromEndpoint

IoGetDriverProxyExtensionFromDriverObject

DRIVER_PROXY_EXTENSION_CREATION_FLAGS

DRIVER_OBJECT