Compartir a través de


MINIPORT_ADD_DEVICE función de devolución de llamada (ndis.h)

La función MiniportAddDevice permite que un controlador de miniporte establezca un área de contexto para un dispositivo agregado.

Nota Debe declarar la función mediante el tipo MINIPORT_ADD_DEVICE. Para obtener más información, consulte la sección Ejemplos siguientes.
 

Sintaxis

MINIPORT_ADD_DEVICE MiniportAddDevice;

NDIS_STATUS MiniportAddDevice(
  [in] NDIS_HANDLE NdisMiniportHandle,
  [in] NDIS_HANDLE MiniportDriverContext
)
{...}

Parámetros

[in] NdisMiniportHandle

Identificador NDIS que identifica el adaptador de minipuerto que el administrador plug and play (PnP) está agregando. NDIS también pasa este identificador al función miniportInitializeEx.

[in] MiniportDriverContext

Identificador de un área de contexto asignada por el controlador donde el controlador mantiene la información de estado y configuración. El controlador de miniporte pasó este área de contexto al función NdisMRegisterMiniportDriver.

Valor devuelto

miniportAddDevice devuelve uno de los siguientes valores:

Código devuelto Descripción
NDIS_STATUS_SUCCESS
El controlador de miniporte asignó correctamente los recursos que requiere para agregar el dispositivo.
NDIS_STATUS_RESOURCES
El controlador miniport no pudo asignar los recursos necesarios.
NDIS_STATUS_FAILURE

MiniportAddDevice falló por motivos distintos de recursos insuficientes.

 

Si se produce un error MiniportAddDevice, NDIS no llamará a la función MiniportInitializeEx para inicializar el adaptador de miniport.

Observaciones

La función MiniportAddDevice es una función opcional. Los controladores de miniporte que admiten MSI-X deben especificar un punto de entrada para esta función en . NDIS_MINIPORT_PNP_CHARACTERISTICS estructura.

miniportAddDevice puede asignar un área de contexto para controlar IRP_MN_FILTER_RESOURCE_REQUIREMENTS paquetes de solicitud de E/S (IRP) que el identificadores de función miniportFilterResourceResourceRequirements. Los controladores de miniporte especifican el área de contexto inicializando un NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES estructura y, a continuación, llamar a función NdisMSetMiniportAttributes. NDIS más adelante proporciona este identificador de contexto al MiniportRemoveDevice , MiniportFilterResourceRequirements, miniportStartDevicey funciones de MiniportInitializeEx. Para miniportInitializeEx, el identificador de contexto se pasa en el miembro MiniportAddDeviceContext del del elemento NDIS_MINIPORT_INIT_PARAMETERS estructura a la que apunta el parámetro MiniportInitParameter s.

Si se produce un error en el controlador de miniporte el MiniportAddDevice llamada después de asignar el área de contexto, el controlador debe liberar el área de contexto antes de volver de MiniportAddDevice.

Los controladores de miniport deben usar un área de contexto diferente para el miembro MiniportAddDeviceContext de la estructura de NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES y el miembro MiniportAdapterContext de la estructura NDIS_MINIPORT_INIT_PARAMETERS. Las áreas de contexto independientes garantizarán que la información del área de contexto no se reinicializa, lo que puede ocurrir en la función MiniportInitializeEx si el adaptador de miniporte se detiene y reinicializa.

Cuando el administrador de PnP solicita que NDIS quite el dispositivo, NDIS llama a la función MiniportRemoveDevice para deshacer las operaciones que MiniportAddDevice realizó.

NDIS llama a miniportAddDevice en IRQL = PASSIVE_LEVEL.

Ejemplos de

Para definir una función MiniportAddDevice, primero debe proporcionar una declaración de función que identifique el tipo de función que va a definir. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a análisis de código para controladores, comprobador de controladores estáticos (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.

Por ejemplo, para definir un miniportAddDevice función denominada "MyAddDevice", use el tipo MINIPORT_ADD_DEVICE tal como se muestra en este ejemplo de código:

MINIPORT_ADD_DEVICE MyAddDevice;

A continuación, implemente la función de la siguiente manera:

_Use_decl_annotations_
NDIS_STATUS
 MyAddDevice(
    NDIS_HANDLE  NdisMiniportHandle,
    NDIS_HANDLE  MiniportDriverContext
    )
  {...}

El tipo de función MINIPORT_ADD_DEVICE se define en el archivo de encabezado Ndis.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función MINIPORT_ADD_DEVICE en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declaración de funciones mediante el uso de tipos de roles de función para controladores NDIS.

Para obtener información sobre Use_decl_annotations, vea Anotación del comportamiento de la función.

Requisitos

Requisito Valor
cliente mínimo admitido Se admite en NDIS 6.0 y versiones posteriores.
de la plataforma de destino de Windows
encabezado de ndis.h (incluya Ndis.h)
irQL PASSIVE_LEVEL

Consulte también

IRP_MN_FILTER_RESOURCE_REQUIREMENTS miniportFilterResourceRequirements

MiniportInitializeEx

miniportRemoveDevice

MiniportStartDevice

NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES

NDIS_MINIPORT_INIT_PARAMETERS

NDIS_MINIPORT_PNP_CHARACTERISTICS

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes