Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
IoGetDriverProxyWrapperFromEndpoint
IoGetDriverProxyExtensionFromDriverObject